我是节点社区的新手。我最近加入了这项工作,以便为一个复杂的Web应用程序构建一个构建版本,该应用程序已经开发了好几年。我构建的两个关键工具是Grunt和Browserify,但应用程序使用jQuery,Backbone,d3以及一些其他库和插件。
我遇到的一个问题是:默认情况下,当我使用npm安装并保存包时,它会使用semver表达式设置包,该表达式会在您运行时捕获包的所有未来版本{{ 1}}。就像this article解释得好,起初看起来似乎是件好事(“给我这个包和所有未来的升级”),但是它会将你自己的应用程序暴露给包维护者所做的任何非向后兼容的更新。这篇文章还提供了一些推荐的最佳实践,但它是在大约4年前写成的。我希望还有其他更新的想法。
您使用哪种解决方案来解决此问题?每次在我依赖的库中进行重大更改时,我都不能浪费时间更新我的软件。我希望在我好的时候更新并准备好,而不是每当我运行npm update
时。
答案 0 :(得分:1)
使用npm shrinkwrap保存包含确切版本的依赖项树,因此当您npm install
时,它会使用这些确切版本。
npm outdated
命令将告诉您哪些包已过时。
而不是更新所有包的npm update
,而是使用npm install <pkg>@<version> --save