【问题标题】:How to force npm to install specific version of package by default?如何强制 npm 默认安装特定版本的包?
【发布时间】:2016-10-18 10:03:49
【问题描述】:

有没有办法配置 npm 不使用惰性版本安装软件包,例如:

"coffee-script": "^1.11.1",

但是

"coffee-script": "1.11.1",

这种行为是否已成为默认行为?我们通常不想使用惰性版本,我更喜欢不时手动将所有内容升级到最新版本,而不是在新部署后由于我的一个依赖项中的错误而在我面前抛出错误。

目前“这样做”的唯一方法是每次在每个npm install 之后手动删除^ 字符,这有点无聊。

【问题讨论】:

    标签: node.js npm npm-install


    【解决方案1】:

    这个命令会在你的 npm 配置中设置一个用户变量为在执行所有包的 npm 安装时总是默认使用确切的版本

    在你的终端输入这个命令:

    npm config set save-exact=true
    

    新的首选项存储在基于用户的自定义 npm 配置文件中。它位于此处:

    ~/.npmrc
    

    最后,您可以使用以下命令验证设置是否已保存:

    npm config ls
    

    官方 NPM 文档在这里:

    https://docs.npmjs.com/misc/config

    https://docs.npmjs.com/files/npmrc

    【讨论】:

      【解决方案2】:

      我建议使用 npm shrinkwrap。 它将创建 npm-shrinkwrap.json 指定当前使用的依赖项版本,然后 npm install 将遵循它。

      然后,当您想升级所有依赖项时,删除 npm-shrinkwrap.json 文件,运行 npm install 并重新运行 npm shrinkwrap。 或者,要升级单个包依赖项,请运行 npm install --save <package-name>。这将使用更新的版本信息更新 npm-shrinkwrap 文件。

      见:https://docs.npmjs.com/cli/shrinkwrap

      【讨论】:

      • 很有趣,但并没有真正回答这个问题。它对npm install 没有帮助,并添加了新的依赖项和部署工作流程。我想它对非常关键的系统最有用。就我而言,现在只要确保我自己的依赖项的版本就足够了。 :) 但绝对有趣!
      • 这会冻结你的依赖并专门用于 npm install。它不会添加任何新的依赖项;该功能捆绑在 npm 中。我不知道关键性,但我细化了这很好地映射到您的用例并且易于使用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 2012-12-20
      • 2020-02-24
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多