NPM全称Node Package Manager,是Node.js包管理工具,是全球最大的模块生态系统,里面所有的模块都是开源免费的;也是 Node.js 的官方包管理器,相当于后端的Maven 。
npm 的核心功能:
- 安装和管理依赖: npm 允许你轻松地安装、更新、卸载和管理项目依赖项,确保你的项目始终使用最新且兼容的模块。
- 发布和共享代码: 你可以将自己的代码打包成 npm 包,发布到 npm 仓库,与其他开发者共享,让你的代码被更多人使用。
- 运行脚本: npm 提供了
npm run
命令,让你可以在package.json
文件中定义和管理项目脚本,方便地执行各种操作,例如启动应用程序、运行测试、生成文档等。
使用 npm 的优势:
- 快速构建: npm 提供了各种功能的模块,可以帮助你快速构建应用程序,无需从头开始编写所有代码。
- 代码复用: 通过使用 npm 包,你可以重复利用其他开发者的代码,避免重复造轮子,提高开发效率。
- 代码质量: npm 包通常经过测试和维护,可以提高代码质量和可靠性。
- 社区支持: npm 拥有一个庞大的社区,你可以轻松获取帮助和支持,解决开发问题。
npm 的基本命令:
npm init
: 初始化项目,生成package.json
文件,记录项目信息和依赖。npm install <package-name>
: 安装指定包到项目中。npm install -g <package-name>
: 全局安装指定包,可以在任何项目中使用。npm update <package-name>
: 更新指定包到最新版本。npm uninstall <package-name>
: 卸载指定包。npm ls
: 查看项目依赖。npm list -g
: 查看全局依赖。npm run <script-name>
: 运行package.json
文件中定义的脚本。
使用阿里镜像加速 npm 下载:
由于国内网络环境的原因,直接使用官方源下载 npm 包可能会很慢。可以使用阿里镜像来加速下载速度:
- 配置阿里镜像:
npm config set registry https://registry.npmmirror.com
- 验证配置:
如果输出结果为npm config get registry
https://registry.npmmirror.com
,则配置成功。
npm 依赖管理:
- 包 (Package): 一个包含代码、文档、配置等信息的压缩文件,通常以
.tgz
格式发布。 - 依赖 (Dependency): 项目所需的外部包,通常在
package.json
文件中定义。 - 依赖树 (Dependency Tree): 项目所有依赖的层次结构,npm 会自动解析和下载所有依赖。
- 版本控制: npm 使用语义化版本控制 (Semver) 来管理包的版本,例如
1.0.0
、2.0.0
等。 - 包仓库 (Package Registry): 一个存储所有公开发布的包的中央仓库,可以通过 npm 命令访问。
npm 依赖管理的基本操作:
-
安装依赖: 使用
npm install
命令安装依赖,例如:npm install lodash
这将安装
lodash
包及其所有依赖到项目的node_modules
目录。 -
更新依赖: 使用
npm update
命令更新依赖,例如:npm update lodash
这将更新
lodash
包到最新版本,并更新所有依赖。 -
卸载依赖: 使用
npm uninstall
命令卸载依赖,例如:npm uninstall lodash
这将删除
lodash
包及其所有依赖。
package.json
文件:
package.json
文件是项目的配置文件,它包含项目的名称、版本、描述、依赖等信息。
{
"name": "my-project",
"version": "1.0.0",
"description": "My project description",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Your Name",
"license": "ISC",
"dependencies": {
"lodash": "^4.17.21"
},
"devDependencies": {
"eslint": "^8.29.0"
}
}
dependencies
: 生产环境所需的依赖。devDependencies
: 开发环境所需的依赖,例如测试工具、代码格式化工具等。
- 官方网站: npm | Home
- 官方文档: npm Docs
求点赞!!!求点赞!!!求点赞!!!