NPM 安装命令与版本控制
🎯 引言
学会这篇文章,你将掌握 NPM 最常用的安装、卸载、更新命令,理解版本号前面的 ^ 和 ~ 到底是什么意思,并能根据项目需求选择合适的版本控制策略。
🧱 npm install 的基本用法
npm install 是 NPM 最常用的命令,用来安装项目依赖。根据场景不同,它有以下几种常见写法:
安装项目全部依赖
当你从仓库拉下一个项目,第一件事通常是:
npm install
NPM 会读取 package.json 中的 dependencies 和 devDependencies,把所有依赖下载到 node_modules 中。
安装指定包
npm install dayjs
npm install dayjs@1.11.13
npm install dayjs@latest
- 不写版本号:安装符合
package.json要求的最新版本。 @版本号:安装指定版本。@latest:安装最新发布版本。
安装到不同依赖字段
npm install axios # 安装到 dependencies
npm install eslint -D # 安装到 devDependencies
npm install typescript -O # 安装到 optionalDependencies
| 参数 | 全称 | 写入字段 |
|---|---|---|
| 无 | 无 | dependencies |
-D | --save-dev | devDependencies |
-O | --save-optional | optionalDependencies |
-g | --global | 全局安装,不写入 package.json |
⚡ 全局安装
有些工具我们不希望只在某个项目里用,而是想在任何目录下都能调用,比如 http-server、create-vite:
npm install http-server -g
npm install create-vite -g
全局安装后,你可以在任意目录直接运行:
http-server
package.json。如果项目是团队协作的,优先把工具安装到 devDependencies,这样大家都能保持版本一致。🗑 卸载与更新依赖
卸载依赖
npm uninstall dayjs
执行后,NPM 会删除 node_modules 中的包,并同时从 package.json 中移除对应记录。
更新依赖
npm update dayjs
npm update
npm update dayjs:只更新指定包。npm update:更新所有符合版本范围的包。
npm update 只会更新到 package.json 中版本号允许的范围。比如 ^1.11.13 最多更新到 1.x.x,不会跳到 2.0.0。⚖️ 版本号规则详解
package.json 里的版本号通常带有一些特殊符号,常见写法如下:
| 写法 | 含义 | 示例 |
|---|---|---|
1.2.3 | 固定版本 | 只安装 1.2.3 |
^1.2.3 | 兼容 1.x 最新 | 可更新到 1.9.0,不能到 2.0.0 |
~1.2.3 | 兼容 1.2.x 最新 | 可更新到 1.2.9,不能到 1.3.0 |
>=1.2.3 | 大于等于 1.2.3 | 可安装更高版本 |
* | 任意版本 | 不推荐,容易引入破坏性更新 |
版本范围写法组合
{
"dependencies": {
"vue": "^3.5.0",
"lodash": "~4.17.21",
"dayjs": "1.11.13"
}
}
* 或不写版本号,这会导致每次安装可能拿到不同版本,造成“我电脑上能跑,你电脑上报错”的问题。💡 查看已安装版本
如果你想知道自己装了什么版本,可以执行:
npm list
npm list --depth=0
--depth=0 表示只显示当前项目的直接依赖,不显示依赖的依赖,看起来更清爽。
🧾 小节总结
npm install可安装全部依赖或指定包,-D表示开发依赖,-g表示全局安装。npm uninstall 包名卸载包并从package.json中移除。npm update在版本号允许的范围内更新依赖。^、~、固定版本分别代表不同的更新策略,选择时要权衡安全性和灵活性。
❓ 知识问答
Q1:npm install 和 npm install 包名 有什么区别?
A:npm install 会安装 package.json 中列出的所有依赖;npm install 包名 会安装指定包,并把它添加到 dependencies。
Q2:^ 和 ~ 哪个更严格?
A:~ 更严格。~1.2.3 只允许更新修订号,^1.2.3 允许更新次版本。
Q3:全局安装和本地安装有什么区别?
A:全局安装可以在任意目录使用命令,但不写入 package.json;本地安装只作用于当前项目,能被 package.json 记录,方便团队协作。
Q4:为什么有时候 npm install 很慢?
A:因为 NPM 默认从国外服务器下载包。下节课我们会学习如何切换国内镜像源来加速。
🧪 小练习
- 在你的
npm-demo项目中,安装axios@1.7.9到dependencies:
# 请在这里输入命令
- 安装
nodemon到devDependencies:
# 请在这里输入命令
- 执行
npm list --depth=0,观察直接依赖列表。 - 尝试卸载
nodemon,并确认package.json中已移除。
🎉 恭喜你掌握了 NPM 的安装、卸载和版本控制!下一篇我们会学习 npm scripts 和 npx,让你的命令行操作更加高效。
