npm(Node Package Manager)是 Node.js 默认的、用 JavaScript 编写的软件包管理系统。它是世界上最大的软件注册表,包含超过 1,000,000 个软件包(代码模块)。开源开发者使用 npm 来共享软件、安装和管理依赖。
npm 由三个不同的组件组成:
-
网站:开发者查找软件包(package)、设置参数以及管理 npm 使用体验的主要途径。
-
注册表(registry):一个巨大的软件包信息数据库,即 npm 网站背后的公共数据库。
-
命令行工具:开发者通过 CLI 与 npm 进行交互。
npm 的一些主要功能和优点包括:
- 便于安装和管理项目依赖
- 提供版本和依赖管理
- 使代码更容易分享和重用
- 拥有庞大、活跃的社区,大量可复用的模块
- 结合 package.json 描述项目及其依赖
使用npm,开发者可以轻松跟踪依赖项的版本、共享源代码、归档已发布的项目版本。这大大简化了 Node.js 及前端项目的开发和维护过程。npm 已成为现代 JavaScript 项目的标准工具之一。
好的,下面我将详细介绍npm的使用。
-
安装npm
npm随Node.js一起安装。你可以从Node.js官网下载安装包,根据你的操作系统选择对应版本。安装Node.js时会自动安装npm。 -
初始化一个项目
在项目根目录下运行npm init
, 按照提示输入项目信息,会生成一个package.json文件,包含项目的基本信息和依赖。 -
安装依赖包
- 本地安装:
npm install <package_name>
, 安装的包将放在当前目录的node_modules子目录中。 - 全局安装:
npm install -g <package_name>
, 安装的包将放在全局目录中,可在任何项目中使用。 - 安装指定版本:
npm install <package_name>@<version>
- 安装开发依赖:
npm install --save-dev <package_name>
, 只在开发环境中使用的包,如测试库、构建工具等。
- 本地安装:
-
更新依赖包
- 更新本地包:
npm update <package_name>
- 更新全局包:
npm update -g <package_name>
- 更新本地包:
-
删除依赖包
- 删除本地包:
npm uninstall <package_name>
- 删除全局包:
npm uninstall -g <package_name>
- 删除本地包:
-
运行脚本命令
在package.json的scripts字段中定义命令脚本,然后用npm run <script_name>
运行。一些常用的预定义脚本:npm start
: 启动应用npm test
: 运行测试npm build
: 构建应用
-
发布一个包
- 注册npm账号:
npm adduser
- 登录账号:
npm login
- 发布: 在包的根目录下运行
npm publish
- 注册npm账号:
-
其他常用命令
npm list
: 列出当前项目安装的所有包npm info <package_name>
: 查看包的详细信息npm search <keyword>
: 搜索包npm outdated
: 检查过期的依赖包
-
使用npm配置
- 设置:
npm config set <key> <value>
- 获取:
npm config get <key>
- 删除:
npm config delete <key>
- 常用配置:
registry
: 设置npm下载源,可切换到国内源以加速下载proxy
: 设置网络代理package-lock
: 是否启用package-lock.json文件
- 设置:
-
使用npmrc文件
在项目根目录或用户主目录下创建.npmrc文件,可以存放一些npm配置,这些配置会覆盖全局的npm配置。 -
安装git上的包
npm install <git_url>
,支持以下几种URL格式:
git://github.com/user/project.git#commit-ish
https://github.com/user/project#commit-ish
user/project#commit-ish
-
安装本地包
npm install <local_path>
,可以安装本地文件系统中的包。 -
使用npx运行包
npx是npm5.2版本引入的一个命令,可以直接运行本地或远程npm包的二进制文件,而无需全局安装。
npx <package_name> [...args]
-
使用npm钩子
npm支持在某些特定事件发生时自动运行脚本,常用的钩子包括:
preinstall
,install
,postinstall
preuninstall
,uninstall
,postuninstall
preversion
,version
,postversion
pretest
,test
,posttest
prestop
,stop
,poststop
prestart
,start
,poststart
- 使用npm缓存
- 清空缓存:
npm cache clean
- 添加缓存:
npm cache add <package_spec>
- 查看缓存:
npm cache ls
- 使用npm审计
npm audit
命令可以检查项目的依赖是否存在已知的安全漏洞,并提供自动修复的方法。