使 `npm install --save` 添加一个严格的版本到 package.json

Make `npm install --save` add a strict version to package.json

当你 运行 npm install --save somepackage 时,它通常会在 package.json:

中添加类似这样的内容
"dependencies": {
    "somepackage": "^2.1.0"
}

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

所以,我有几个问题:

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

要默认指定一个确切的版本,您可以使用 save-exact:

更改您的 npm 配置
npm config set save-exact true

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

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

运行:

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

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

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

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

// yarn
yarn add --exact react

我创建了一个关于此的博客 post,如果以后有人需要的话。

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