如果你在在安装新packages,并更新package.json
作为副作用。仔细观察,您会发现版本号前面有一些特殊符号。
"dependencies": { "lodash": "^3.9.2" }
语义版本控制介绍
前缀字符(^
)与称为语义版本化或semver的版本编号方案有关。 语义版本控制指示哪种更改会导致版本号增加。 Semver使用由三部分组成的版本号,例如3.9.2
,并将这三个数字从左到右分别称为主要,次要和补丁号。
3 | . | 9 | . | 2 |
---|---|---|---|---|
major | minor | patch |
在没有node_modules
的情况下以全新检出方式执行npm install
时,npm将下载并安装一个满足每个依赖项package.json
的版本。 通过使用npm而不是在package.json
中指定要安装的确切版本,可以扩大接受版本的范围。 您可以使用波浪号(~)允许更新的补丁程序级别,而使用插入号(^)允许更新的次要或补丁程序级别。
Symbol | Dependency | Versions | Changes |
---|---|---|---|
caret (^) | ^3.9.2 | 3.*.* |
|
tilde (~) | ~3.9.2 | 3.9.* |
|
使用npm更新模块
npm update
在package.json中有一个专用的命令npm update用于检查和安装满足semver模式的较新版本。
npm install lodash@latest
或者,如果您想将某个软件包更新为最新版本而忽略语义版本控制范围,则可以使用带有@latest
标记的install。
配置npm默认值
npm中的默认行为是在更新package.json
时使用插入符号(^
)。可以使用以下方式配置此默认行为
npm config set save-prefix '~'
您也可以使用--save-exact
标志来通知npm需要精确匹配,而不是默认的保存前缀。您可以使用npm config set save-exact true
将后一个选项设置为默认值。
Semver explained – why is there a caret (^) in my package.json?
Related Posts
- npm与npx的区别
- 如何升级Node.js版本(Linux, Ubuntu, macOS)
- 删除、弃用已发布在npmjs上的packages
- 查看npm安装的node模块版本
- Amazon S3 存储桶无法删除
- 关闭Sublime Text更新检查
- Device supports arm64-v8a, but APK only supports armeabi on device *
- npm ERR! gyp verb `which` failed Error: not found: python
- c++ ‘-DNODE_GYP_MODULE_NAME=libsass’ ‘-DUSING_UV_SHARED=1’ ‘-