2014-12-07 214 views
0

我正在使用来自NPM的另一个Node.js模块B的Node.js模块A. NPM上发布了模块B的新版本。我希望我的模块A动态更新到模块B的最新版本(模块A总是取决于模块B的最新版本)。此外,导入模块的所有引用也应动态更新。动态安装和加载Node.js模块

我考虑使用NPM以编程方式安装模块过期的最新可用版本的模块。是否有更好的解决方案来动态执行此操作

另外,如何强制更新通过require导入的模块引用?

谢谢!

回答

2

至少你的问题的第一部分(模块A总是使用最新版本的模块B的),你总是可以指定一个major version wildcardpackage.json的依赖:

{ 
    "dependencies": { 
    "moduleB": "*" 
    } 
} 

这将然后允许你总是npm update到最新版本。 (但是,这可能会引入更改,从而打破模块向后兼容性的功能,因为npm使用Semantic Versioning。)

至于自动运行npm update,我必须问 - 为什么这是必需的?对你的模块的用户有什么好处?至少应该对您的依赖进行“策划”更新,以确保不会引入重大更改。如果您确实设置了一个用于更新依赖关系的全自动管道(例如,从npm update依赖关系到git tag新版本到npm version这些新版本到npm publish这些新版本),那么您就会让模块的用户离开如果这些步骤中的任何一个都不符合他们的代码,那么在寒冷的环境中。

(另外,如果这个自动的依赖更新从未伤了你的模块,那么什么是你的模块添加?它甚至做任何不平凡与依赖关系?)

它可能显得累赘,但它的用一些技巧和意图来更新你的依赖关系的更好的实践。 See Semantic Versioning for more info.

+0

感谢@wisew的指针! “npm update”需要自动发生的原因是1.模块B也将由我发布2.对模块B的更新将是关键错误修复。这个想法是将生态系统中频繁更新的部分(含修复部分)抽象为一个单独的模块,其他所有模块都会对它有“依赖性”。模块B将在发布给NPM之前进行策划。我希望模块A的消费者在没有干预的情况下获得关键修复的模块B的策划版本。 – CodeNinja 2014-12-08 15:38:55