第一部分:npm 是什么?
核心定义:
npm 是全球最大的 软件注册表 和 JavaScript/Node.js 的包管理工具。它包含三个独立但紧密相关的部分:
-
网站:
https://www.npmjs.com/-
用于发现包、管理个人资料和查看文档的门户。
-
-
命令行界面(CLI):你在终端中运行的
npm命令。-
这是开发者与 npm 交互的主要工具,用于安装和管理包。
-
-
注册表:一个巨大的公共数据库,存储了数百万个开源 JavaScript 包(代码库)。
-
当你运行
npm install时,CLI 会从这个注册表中下载你需要的包。
-
简单理解:
想象一下,你不是在从头开始编写每一行代码,而是可以轻松地使用全世界开发者已经写好的、经过验证的代码模块(例如,用于日期处理的 moment/day.js,用于 HTTP 请求的 axios等)。npm 就是帮助你查找、安装、更新和删除这些模块的“应用商店”或“软件管家”。
第二部分:核心概念与核心文件
在深入学习命令之前,必须理解两个核心文件:package.json和 package-lock.json。
1. package.json- 项目清单文件
这是你项目的身份证和菜单。它记录了项目的元信息以及它所依赖的第三方包。
-
如何创建?
在项目根目录运行
npm init,然后根据提示输入信息。要快速跳过提问使用默认配置,可以运行npm init -y。 -
文件内容示例:
json
复制
{ "name": "my-awesome-project", "version": "1.0.0", "description": "A project to learn npm", "main": "index.js", "scripts": { "start": "node index.js", "dev": "nodemon index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": ["learning", "npm"], "author": "Your Name", "license": "ISC", "dependencies": { "express": "^4.18.2", "lodash": "^4.17.21" }, "devDependencies": { "nodemon": "^2.0.22" } } -
关键字段解释:
-
dependencies:生产环境依赖。即项目上线运行时所必须的包(如express,react,vue)。通过npm install <package_name> --save或npm install <package_name>(--save是默认选项)安装的包会记录在这里。 -
devDependencies:开发环境依赖。即只在开发阶段需要,上线后不需要的包(如代码打包工具webpack、测试工具jest、代码格式化工具prettier)。通过npm install <package_name> --save-dev安装的包会记录在这里。
-
2. package-lock.json- 依赖关系锁文件
这个文件由 npm 自动生成,它精确地描述了当前项目中所有包(包括嵌套依赖)的确切版本和下载地址。
-
为什么需要它?
-
在
package.json中,版本号可能是^4.18.2(表示允许安装 4.x.x 的最新版本,只要主版本号是 4)。这可能导致不同时间、不同机器上安装的依赖版本略有不同,可能引发难以调试的兼容性问题。 -
package-lock.json锁死了整个依赖树,确保团队中每个成员和部署服务器安装的依赖版本完全一致,实现了“可重复的安装”。
-
-
重要规则: 务必将其提交到 Git 版本控制中!
第三部分:npm 常用命令详解
1. 初始化项目
npm init # 交互式创建 package.json
npm init -y # 快速使用默认配置创建 package.json
2. 安装包
-
安装项目依赖(根据 package.json):
npm install # 或简写 npm i这个命令会读取
package.json中的dependencies和devDependencies,并安装所有列出的包。 -
安装生产依赖并保存到
dependencies:npm install <package_name> # 例如 npm install express -
安装开发依赖并保存到
devDependencies:npm install --save-dev <package_name> # 或简写 npm i -D <package_name> # 例如 npm i -D nodemon -
全局安装(通常用于命令行工具):
npm install -g <package_name> # 例如 npm install -g @vue/cli注意: 全局安装的包可以在系统的任何地方通过命令行直接运行,但它不会出现在项目的
package.json中。 -
安装特定版本:
npm install <package_name>@<version> # 例如 npm install react@18.2.0
3. 卸载包
npm uninstall <package_name> # 卸载包并从 dependencies 中移除
npm uninstall --save-dev <package_name> # 卸载包并从 devDependencies 中移除
npm uninstall -g <package_name> # 卸载全局包
4. 更新包
npm update # 更新所有包到 package.json 允许的最新版本
npm update <package_name> # 更新指定包
npm outdated # 检查有哪些过时的包
5. 查看信息
npm list # 列出当前项目安装的包(及其依赖树)
npm list -g --depth=0 # 列出全局安装的顶级包
npm info <package_name> # 查看包的详细信息(版本、依赖等)
npm view <package_name> versions --json # 查看包的所有历史版本
6. 运行脚本(npm run)
这是 npm 最强大的功能之一。你可以在 package.json的 "scripts"字段中定义自定义命令。
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"build": "webpack --mode=production",
"test": "jest"
}
运行它们:
npm run dev # 运行自定义脚本,如启动开发服务器
npm run build # 运行构建脚本
npm test # 运行测试,`run` 可以省略
npm start # 运行启动脚本,`run` 可以省略
第四部分:高级用法与最佳实践
1. npx- 执行临时包
npx是 npm 自 5.2 版本起附带的工具,用于临时安装并运行一个包,运行完成后即删除。
-
场景: 你只是想尝试一个 CLI 工具(如创建一个 React 项目),但不想全局安装它。
# 无需先执行 `npm install -g create-react-app` npx create-react-app my-app这条命令会下载
create-react-app包,执行它来创建项目,之后这个包就不会占用你的全局空间。
2. 设置国内镜像源
由于网络原因,从官方源下载可能很慢。可以切换为国内镜像(如淘宝 NPM 镜像)。
-
临时使用:
npm install <package_name> --registry=https://registry.npmmirror.com -
永久设置:
npm config set registry https://registry.npmmirror.com -
使用
nrm(NPM registry manager)工具切换源:npm install -g nrm # 安装 nrm nrm ls # 列出可用源 nrm use taobao # 切换至淘宝源
3. 安全审计
npm 提供了命令来检查项目依赖中的已知安全漏洞。
npm audit # 扫描漏洞
npm audit fix # 尝试自动修复漏洞
总结
|
操作 |
命令 |
说明 |
|---|---|---|
|
初始化 |
|
快速创建 |
|
安装依赖 |
|
安装 |
|
安装生产包 |
|
安装并保存到 |
|
安装开发包 |
|
安装并保存到 |
|
运行脚本 |
|
运行 |
|
审计漏洞 |
|
检查依赖的安全漏洞 |
掌握 npm 是现代 JavaScript 开发的基石。它极大地提升了开发效率,保证了项目依赖的可维护性和一致性。建议从常用命令开始,逐步熟悉 package.json和脚本的编写,最终掌握依赖管理和版本控制的精髓。
19万+

被折叠的 条评论
为什么被折叠?



