npm 检查并根据需要更新包

新手上路,请多包涵

我们需要将 Karma 测试运行程序集成到 TeamCity 中,为此我想给 sys-engineers 小脚本(powershell 或其他),它会:

  1. 从某个配置文件中获取所需的版本号(我想我可以将其作为评论放在 karma.conf.js 中)

  2. 检查定义的 karma runner 版本是否安装在 npm 的全局 repo 中

  3. 如果不是,或者安装的版本比预期的旧:选择并安装正确的版本

  4. 运行它: karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run

所以我真正的问题是:“如果安装了所需的软件包版本,如何签入脚本?”。您应该进行检查,还是每次都调用 npm -g install 是安全的?

我不想总是检查和安装最新的可用版本,因为其他配置值可能会变得不兼容

原文由 iLemming 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 689
2 个回答

要检查项目中的任何模块是否“旧”:

 npm outdated

outdated ‘ 将检查 package.json 中定义的每个模块,并查看 NPM 注册表中是否有更新的版本。

例如,说 xml2js 0.2.6 (位于当前项目中的 node_modules )已过时,因为存在较新的版本 (0.2.7)。你会看到:

 xml2js@0.2.7 node_modules/xml2js current=0.2.6

更新 所有依赖项,如果您确信这是可取的:

 npm update

或者,要更新单个依赖项,例如 xml2js

 npm update xml2js

要更新 package.json 版本号,请附加 --save 标志:

 npm update --save

原文由 dublx 发布,翻译遵循 CC BY-SA 4.0 许可协议

npm outdated 将识别应该更新的包,并且 npm update <package name> 可用于更新每个包。但在 npm@5.0.0 之前, npm update <package name> 不会更新 package.json 中的版本,这是一个问题。

最好的工作流程是:

  1. 使用 npm outdated
  2. 更新 package.json 中的版本
  3. 运行 npm update 安装每个包的最新版本

查看 npm-check-updates 以帮助完成此工作流程。

  • 安装 npm-check-updates
  • 运行 npm-check-updates 列出哪些包已过时(基本上与运行 npm outdated 相同)
  • 运行 npm-check-updates -u 更新 package.json 中的所有版本(这是魔术酱)
  • 像往常一样运行 npm update 以根据更新的 package.json 安装新版本的包

原文由 Erik Olson 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题