【推荐阅读】Nodejs中"npm install --save" No Longer Using Tildes
【推荐阅读】Nodejs中"npm install --save" No Longer Using Tildes
###一篇外文:
【推荐阅读】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
通过这种方式,你可以更精确地控制你的依赖版本。