Node Package Manager (npm) 是 Node.js 生态系统的核心工具,它不仅是一个庞大的软件包库,更是管理项目依赖、执行脚本、发布和共享开源软件的强大平台。掌握 npm 的常用命令对于任何使用或开发 Node.js 应用的开发者来说至关重要。本文将深入探讨 npm 常用命令的详细用法,并结合实际代码示例,助您更高效地驾驭这一强大的工具。
一、初始化项目与 package.json
命令:npm init
用途: 创建一个新的 Node.js 项目并生成 package.json
文件,用于记录项目元数据和依赖信息。
示例:
Bash
bash
npm init
运行上述命令后,npm 将引导您完成一系列交互式问答,询问项目名称、版本、描述、入口文件、作者、许可证等信息。回答完毕后,npm 将基于这些信息生成 package.json
文件。
二、安装依赖
命令:npm install
用途: 安装项目所需的依赖包。
子命令与选项:
- 全局安装 (
-g
或--global
):将包安装到全局环境中,供系统所有项目使用。 - 生产依赖 (
--save
或-S
, 默认): 安装包并将其添加到dependencies
部分,适用于项目运行时必需的依赖。 - 开发依赖 (
--save-dev
或-D
) :安装包并将其添加到devDependencies
部分,适用于开发过程中的工具、测试框架等。 - 保存精确版本 (
--save-exact
或-E
):指定安装包的精确版本而非范围依赖。
示例:
Bash
bash
# 安装并保存到 dependencies
npm install lodash
# 安装并保存到 devDependencies
npm install --save-dev jest
# 全局安装一个包
npm install -g create-react-app
# 安装并保存精确版本
npm install --save-exact axios@0.21.1
三、更新依赖
命令:npm update
用途: 更新项目中已安装的依赖包到最新符合 semver 规则的版本。
子命令与选项:
- 指定包名更新: 可以直接提供要更新的包名。
- 更新所有依赖: 不指定包名时,更新所有
dependencies
和devDependencies
中的包。
示例:
Bash
bash
# 更新单个包
npm update lodash
# 更新所有依赖
npm update
四、卸载依赖
命令:npm uninstall
用途: 卸载项目中已安装的依赖包,并从 package.json
中移除对应的条目。
子命令与选项:
- 全局卸载 (
-g
或--global
):卸载全局安装的包。
示例:
Bash
bash
# 卸载并从 dependencies 移除
npm uninstall lodash
# 全局卸载一个包
npm uninstall -g create-react-app
五、查看依赖信息
命令:npm list
或 npm ls
用途: 列出当前项目及其所有依赖(包括嵌套依赖)的详细信息。
选项:
- 仅查看顶层依赖 (
--depth=0
):仅显示项目直接安装的依赖。
示例:
Bash
bash
# 查看所有依赖
npm list
# 仅查看顶层依赖
npm list --depth=0
六、运行脚本
命令:npm run <script-name>
用途: 执行 package.json
中 scripts
部分定义的任意脚本。
示例:
Json
json
// package.json
{
"scripts": {
"start": "node app.js",
"test": "jest"
}
}
Bash
bash
# 运行 start 脚本
npm run start
# 运行 test 脚本
npm run test
七、发布与管理包
命令:npm publish
、npm unpublish
、npm deprecate
用途: 发布本地项目为公共或私有 npm 包,管理已发布的包状态。
npm publish
:将当前项目发布到 npm 注册表。npm unpublish
:撤销指定版本包的发布(有严格的时间和版本限制)。npm deprecate
:标记某个包版本为已弃用,并提供弃用原因。
示例:
Bash
bash
# 发布项目
npm publish
# 弃用某个版本(假设为 1.2.3)
npm deprecate my-package@"1.2.3" "Found critical security issue, please upgrade to version 1.2.4"
# 注意:unpublish 示例不提供,因其涉及真实包名与版本,请谨慎操作
结语
npm 提供了一整套完善的命令集,覆盖了从项目初始化、依赖管理到脚本执行、包发布等各个环节。理解并熟练运用这些命令,将极大提升您的 Node.js 开发效率和项目管理能力。持续关注 npm 的更新与最佳实践,结合实际情况灵活运用,定能使您在 Node.js 生态圈中游刃有余。