我正在使用Node.js模块A,它使用NPM中的另一个Node.js模块B.在NPM上发布了新版本的模块B.我希望我的模块A动态更新到模块B的最新版本(模块A总是取决于模块B的最新版本)。此外,导入模块的所有引用也应该动态更新。
如果模块过时,我考虑以编程方式使用NPM来安装最新版本的模块。有没有更好的解决方案来动态地执行此操作。
另外,如何强制更新通过require?
导入的模块引用谢谢!
答案 0 :(得分:2)
至少在问题的第一部分(模块A总是使用最新版本的模块B),您始终可以使用major version wildcard在package.json
中指定依赖关系:
{
"dependencies": {
"moduleB": "*"
}
}
这将允许您始终npm update
到最新版本。 (但是,这可能会导致在npm使用Semantic Versioning时引入模块中向后兼容性的更改。)
至于自动运行npm update
,我不得不问 - 为什么这有必要?对您的模块用户有什么好处?你应该至少是"策划"更新您的依赖项以确保不会引入任何重大更改。如果您确实设置了一个用于更新依赖关系的完整自动管道(从npm update
依赖关系到git tag
新版本到npm version
这些新版本到npm publish
这些新版本例如,如果任何这些步骤破坏了与代码的兼容性,那么您可以将模块的用户置于寒冷状态。
(另外,如果这个自动依赖关系更新永远不会打破你的模块,那么你的模块添加了什么?它是否甚至对依赖关系做了一些非常重要的事情?)
这可能看起来很麻烦,但使用某些工艺和意图更新您的依赖项是一种更好的做法。 See Semantic Versioning for more info.