如何支持node.js命令行实用程序的插件?
我正在编写一个实用程序(用Node.js编写),它将从命令行调用。具体细节无关紧要,但功能可以分解为单独的不相关模块,每个模块都可以独立地为最终结果做出贡献 例如,我可以调用:如何支持node.js命令行实用程序的插件?,node.js,plugins,npm,Node.js,Plugins,Npm,我正在编写一个实用程序(用Node.js编写),它将从命令行调用。具体细节无关紧要,但功能可以分解为单独的不相关模块,每个模块都可以独立地为最终结果做出贡献 例如,我可以调用: npm install -g myutil #installs modulea and moduleb myutil #invokes said modules 假设存在模块modulea和moduleb。目前,所有这样的模块都作为myutil的依赖项捆绑在一起,但在理想情况下,我
npm install -g myutil #installs modulea and moduleb
myutil #invokes said modules
假设存在模块modulea
和moduleb
。目前,所有这样的模块都作为myutil
的依赖项捆绑在一起,但在理想情况下,我希望将它们分开,并单独安装,以允许其他人编写模块
npm install -g myutil-contrib-modulec
然后在运行时检测myutil contrib modulec
,并像其他任何东西一样使用它。然而,围绕它还有一些问题:
myutil
包装包,它应该只在一些用户项目/node\u模块/myutil
中定位本地包。没有理由全局安装这些插件,因为它们不会直接在命令行上运行,所以应该只在本地安装
我可以想到的是,强制用户在每个项目的本地安装额外的模块(但是,这不是一个很好的解决方案)
我认为npm-g通常是一个糟糕的想法。令人遗憾的是,人们无法调整他们的PATH环境变量或设置shell别名,但我可以理解为什么要全局安装
myutil
。想要在全球范围内安装所有插件可能是错误的。但这完全取决于myutil的功能以及它与使用它的项目的耦合程度。从我的角度来看,我希望所有东西都是本地的,包括节点本身。我希望我的项目独立。我不想为项目A更新myutil
,并将项目B中断作为副作用。另一个答案并不能真正回答这个问题,因此对于未来的访问者,我将发布我的实际解决方案
我最终否定了全球安装插件的想法。相反,我将插件与工具捆绑在一起。为了支持自定义插件,我允许用户在本地安装它们
加载插件的代码与此类似,因此如果您真的想以全局方式安装插件,只需将其放在目录树的更高位置。我的问题中省略了一些细节,因为它们并不真正相关。1.这是一个内部工具,对我们构建的站点进行一些基本的编辑检查。2.全球插件的目的是使其易于使用,因为否则没有人会使用它。请您共享一个指向您的工具的链接以供实现参考,好吗?