首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何支持node.js命令行实用程序的插件?

如何支持node.js命令行实用程序的插件?
EN

Stack Overflow用户
提问于 2015-02-09 14:04:30
回答 3查看 194关注 0票数 2

我正在编写一个实用程序(用Node.js编写),它将从命令行调用。细节并不重要,但功能可以分解为独立的不相关模块,每个模块都可以独立地对最终结果做出贡献。

我可以引用:

代码语言:javascript
复制
npm install -g myutil   #installs modulea and moduleb
myutil                  #invokes said modules

假设存在模块moduleamoduleb。目前,所有这些模块都被捆绑为myutil的依赖项,但在理想的情况下,我希望将它们分开安装,允许其他人编写模块。

代码语言:javascript
复制
npm install -g myutil-contrib-modulec

然后在运行时检测myutil-contrib-modulec并像其他一切一样使用它。然而,它还存在一些问题:

  1. 这是个好主意吗
  2. 是否有一种支持的方法来做到这一点?FAQ建议全局模块应该是完全独立的,但我认为这是一个合理的用例。
  3. 如果根本不支持它,还有其他的选择吗?我能想到的另一种选择是强迫用户在每个项目的本地安装额外的模块(但是,这不是一个很好的解决方案,海事组织)。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-10 14:26:03

另一个答案并没有真正回答这个问题,所以对于未来的访问者,我会发布我的实际解决方案。

最后,我忽略了全球安装插件的想法。相反,我将插件与工具捆绑在一起。为了支持自定义插件,我允许用户在本地安装它们。

加载插件的代码遵循类似的规则作为节点本身,所以如果您真的想以全局的方式安装插件,只需将它放在目录树的更高的位置即可。

票数 0
EN

Stack Overflow用户

发布于 2015-02-09 14:41:14

看看升空,它可以帮助解决全局/本地CLI问题。也许你用它,但也许你只是读它的想法。我认为当前的策略是,如果您必须在全球范围内安装某件东西,那么将它变成一个很小的myutil包装包,它应该只在some-users-project/node_modules/myutil中定位本地的一个。没有理由在全球范围内安装插件,因为它们不会直接在命令行上运行,所以应该只在本地运行。

我可以想到的是强迫用户在每个项目的本地安装额外的模块(但是,这不是一个很好的解决方案,海事组织)。

我在这里的观点是,npm -g通常是一个糟糕的主意。遗憾的是,人们无法调整PATH环境变量或设置shell别名,但我可以理解为什么要全局安装myutil。想要在全球安装所有插件可能是错误的。但这完全取决于myutil所做的事情,以及它与正在使用它的项目的耦合程度。在我看来,我想要所有本地的东西,包括节点本身。我想让我的项目独立。我不想更新项目A的myutil和项目B中断作为一个副作用。

票数 0
EN

Stack Overflow用户

发布于 2022-11-21 17:10:43

在某些情况下,您可以使用奥克里夫。这些插件将在全球范围内安装在用户计算机上。这里 --他们解释了用户如何使用它为CLI构建插件。

Heroku CLI使用Oclif。看看他们的开发插件,看看他们是如何处理的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28411580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档