npm(Node Package Manager)是 Node.js 的包管理工具,用于管理 JavaScript 项目的依赖和开发工具。它提供了一个丰富的生态系统,方便开发者分享和使用代码。以下是一些主要的 npm 包管理功能和概念:
1. 包的安装和管理
-
安装包:可以通过
npm install <package>
安装包,默认安装到项目的node_modules
目录。npm install lodash
-
全局安装:使用
-g
标志来全局安装包,使其在系统任何地方都能访问。npm install -g typescript
-
卸载包:使用
npm uninstall <package>
从项目中移除包。npm uninstall lodash
2. 版本管理
-
语义化版本控制:npm 使用语义化版本控制(SemVer),版本号格式为
MAJOR.MINOR.PATCH
,如1.2.3
。- MAJOR:大版本号变更,通常是不兼容的 API 变更。
- MINOR:小版本号变更,添加功能但保持向下兼容。
- PATCH:补丁版本,修复 bug 但不影响 API。
-
版本范围:可以在
package.json
中定义依赖的版本范围,如^1.2.3
(兼容1.x.x
)、~1.2.3
(兼容1.2.x
)。
3. package.json
-
定义依赖:
package.json
文件中列出了项目的所有依赖及其版本。{ "dependencies": { "lodash": "^4.17.21" }, "devDependencies": { "jest": "^27.0.0" } }
-
脚本命令:可以在
package.json
中定义脚本命令,如构建、测试、启动等。{ "scripts": { "start": "node index.js", "test": "jest" } }
4. npm 版本控制
- 包的发布:使用
npm publish
将包发布到 npm 注册表,使其可以被其他人使用。 - 包的版本更新:使用
npm version <updateType>
更新包版本,如patch
、minor
或major
。
5. 缓存和锁文件
- 缓存:npm 缓存机制加速包的安装,缓存存储在用户的本地目录中。
- lock 文件:
package-lock.json
或npm-shrinkwrap.json
文件记录确切的依赖树版本,确保在不同环境中一致的安装结果。
6. 安全性和审计
- 安全审计:使用
npm audit
检查项目依赖中的安全漏洞,并提供修复建议。npm audit
7. 版本管理工具
- nvm(Node Version Manager):用于管理不同版本的 Node.js 环境,使得在不同项目间切换 Node.js 版本变得简单。