【推荐阅读】Nodejs中"npm install --save" No Longer Using Tildes

【推荐阅读】Nodejs中"npm install --save" No Longer Using Tildes

###一篇外文:

“npm install --save” No Longer Using Tildes

3 回复

【推荐阅读】Nodejs中"npm install --save" No Longer Using Tildes

在 Node.js 生态系统中,npm 是一个非常重要的工具,用于管理项目依赖。最近的更新改变了 npm 的默认行为,特别是关于如何处理版本范围的声明。这篇文章将带你了解这一变化及其影响。

背景

在较早的版本中,当你使用 npm install --save <package> 安装一个包时,npm 会默认在 package.json 文件中的 dependencies 字段中使用波浪号(~)来指定版本范围。例如:

{
  "dependencies": {
    "express": "~4.17.1"
  }
}

这种语法意味着安装的包版本将是 4.17.x 中的最新补丁版本,但不会安装 5.0.0 或更高版本。

新的变化

npm v5 版本开始,--save 选项不再默认使用波浪号(~),而是使用插入符号(^)。这意味着现在安装的包版本将是 4.x.x 中的最新版本,但仍然不会安装 5.0.0 或更高版本。

例如,如果你运行以下命令:

npm install --save express

生成的 package.json 文件可能会包含:

{
  "dependencies": {
    "express": "^4.17.1"
  }
}

这表示 npm 会安装 4.17.x 中的最新补丁版本,但不会跳过 4.x.x 的任何次要版本。

示例代码

假设你有一个项目,需要安装 express 包,并且你想确保始终使用 4.x.x 中的最新版本。你可以运行以下命令:

npm install --save express

这样,package.json 将会包含:

{
  "dependencies": {
    "express": "^4.17.1"
  }
}

如果你想明确地使用波浪号(~)来指定版本范围,可以手动修改 package.json 文件:

{
  "dependencies": {
    "express": "~4.17.1"
  }
}

然后运行 npm install 来安装这些依赖。

总结

这一变化使得 npm 的默认行为更加符合大多数开发者的期望,即在 x.y.z 版本格式中,尽可能获取最新的次要版本,而不仅仅是最新的补丁版本。这有助于减少因小版本更新而导致的兼容性问题。希望这篇文章能帮助你更好地理解和适应这一变化。


Tildes 表示: ~

【推荐阅读】Nodejs中"npm install --save" No Longer Using Tildes

在Node.js的npm版本5.0之后,“npm install --save”命令不再默认使用波浪号(~)来指定依赖包的版本。在以前的版本中,npm install --save会自动将依赖项的版本号更新为带有波浪号的格式(例如~1.2.3),这意味着它只会安装当前版本及其小版本更新(例如1.x.x)。然而,从npm 5.0开始,npm install --save默认使用插入符号(^)来指定依赖包的版本(例如^1.2.3),这表示可以安装当前版本及其大版本更新(例如^1.x.x)。

示例:

假设我们有一个项目,并且我们的package.json文件中有一条依赖:

{
  "dependencies": {
    "lodash": "~4.17.11"
  }
}

如果你在npm 5.0之前的版本中运行npm install lodash --save,那么package.json文件中的依赖版本可能会被设置为~4.17.11。然而,在npm 5.0及更高版本中,它会被设置为^4.17.11

如何控制依赖版本?

如果你想继续使用波浪号来指定依赖版本,你可以手动编辑package.json文件,或者在命令行中使用npm install lodash@~4.17.11 --save。这样可以确保安装的依赖版本保持在指定的小版本范围内。

npm install lodash@~4.17.11 --save

通过这种方式,你可以更精确地控制你的依赖版本。

回到顶部