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

twi*_*wiz 64 version node.js npm package.json

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

"dependencies": {
    "somepackage": "^2.1.0"
}
Run Code Online (Sandbox Code Playgroud)

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

所以,我有几个问题:

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

Pie*_*ert 100

要默认指定精确版本,您可以使用save-exact更改npm配置:

npm config set save-exact true

您还可以使用带有保存前缀的波浪号指定前置版本

并且,不能强制用户更新为次要版本或补丁版本,NPM使用semver,这是推荐发布包的方式.

  • 如果您只想为特定包执行此操作,则可以在命令行中添加`--save-exact`.例如,`npm install --save --save-exact somepackage`. (21认同)
  • 这只保存“顶级包”的确切版本 - 在“package.json”中指定的版本,但不适用于“顶级包”所依赖的任何包。https://yarnpkg.com/ 使用 `yarn.lock` 文件解决该问题,以便您始终拥有所有软件包的准确版本。 (2认同)

Dal*_*son 6

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

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

// yarn
yarn add --exact react
Run Code Online (Sandbox Code Playgroud)

我创建了一个有关此的博客文章,以供将来有人在寻找。

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