91

当你运行时npm install --save somepackage,它通常会在 package.json 中添加类似这样的内容:

"dependencies": {
    "somepackage": "^2.1.0"
}

因为版本前面带有插入符号 (^),这意味着如果您稍后运行npm install,它可能会安装 2.3.0 版本。由于相当明显的原因,这可能是不可取的。npm shrinkwrap很有用,但并不能真正解决问题。

所以,我有几个问题:

  1. 安装包时,是否可以指定您希望将其设置为 package.json 中的特定版本(版本号前没有插入符号)?
  2. 将包发布到 npm 时,有什么方法可以防止在其他开发者安装你的包时默认在版本之前包含插入符号?
4

3 回答 3

132

要默认指定确切的版本,您可以使用以下命令更改您的 npm 配置save-exact

npm config set save-exact true

您还可以使用波浪号指定前置版本save-prefix

而且,不,您不能强制用户更新到次要版本或补丁版本,NPM 使用semver并且它是发布包的推荐方式。

于 2015-06-05T05:44:34.187 回答
20

您可以使用该--save-exact选项更改默认行为。

// npm
npm install --save --save-exact react

// yarn
yarn add --exact react

如果有人在未来寻找这个,我创建了一篇关于这个的博客文章。

https://www.dalejefferson.com/blog/how-to-save-exact-npm-package-versions/

于 2018-02-05T08:03:06.350 回答
3

跑:

npm install --save --save-exact my-module@my-specific-version

添加答案以使此建议更易于查看。

于 2018-01-31T19:20:48.240 回答