NPM 常用命令
说明
npm 是 Node 默认的模块管理器是一个命令行下的软件,用来安装和管理 Node 模块
安装
安装 Node 的时候会默认安装 npm ,但是这个 npm 可能不是最新的版本,可以通过以下命令更新 npm 版本
# 安装最新版本
sudo npm install npm@latest -g
# 查看版本
npm --version
命令
1. npm init 初始化
npm init
命令会向用户提问一系列问题,然后生成一个package.json
文件, 使用参数-f
或者-y
则会跳过提问阶段,直接生成package.json
文件
# 需要回到提问,或者回车键默认
npm init
# 直接使用默认配置
npm init -f # npm init -y
2. npm install 安装模块
模块的安装分为全局安装和本地安装,全局安装会将模块安装到系统目录中,各个项目都可以调用,本地安装会将模块下载到当前项目的
node_modules
子目录下,只有当前项目才能调用这个模块。安装前,会先检查node_modules
中是否已经存在指定模块,如果存在就不在重复安转,如果需要强制重新安装可以使用-f
--force
参数
# 安装某个模块 (安装的模块名不会记录在 package.json 中)
npm install webpack
# 安装某个模块 (模块记录在 package.json 的 dependencies 中)
npm install webpack --save # 或者 -S
# 安装某个模块 (模块记录在 package.json 的 devDependencies 中)
npm install webpack --save-dev # 或者 -D
# 全局安装模块
npm install webpack -g
# 安装指定版本
npm install webpack@3.10.0 --save
# 指定安装版本范围
npm insatll webpack@">=2.0.0 <3.10.0"
# 安装模块最新版本
npm install webpack@latest
# 安装模块的确切版本 默认安装 "^3.10.0" 表示 3.10.0 及其以上、大版本号为3的版本 使用 --save-exact 后 "3.10.0" 表示只有 3.10.0 版本
npm install webpack --save --save-exact
# 安装 package.json 文件中记录的模块
sudo rm -rf node_modules # 删除安装的模块
npm install # 需要有 package.json 文件
3. npm uninstall 卸载模块
# 卸载模块
npm uninstall webpack
# 卸载全局模块
npm uninstall webpack -g
# 卸载 dependencies 中模块
npm uninstall webpack --save # -S
# 卸载 devDependencies 中模块
npm uninstall webpack --save-dev # -D
4. npm update 更新本地安装模块
会按照 依赖版本规则更新,比如 针对 “^2.1.0” 只会更新小版本号到最新
# 更新全部 package.json 中的模块
npm update
# 更新 dependencies 中模块
npm update --save # -S
# 更新 devDependencies 中模块
npm update --save-dev # -D
# 更新指定的模块
npm update webpack --save-dev
# 更新全局模块
npm update webpack -g
# 从npm v2.6.1 开始,npm update只更新顶层模块,而不更新依赖的依赖,以前版本是递归更新的。如果想取到老版本的效果,要使用下面的命令
npm --depth 9999 update
5. npm run 执行脚本
package.json
文件有一个scripts
字段,可以用于指定脚本命令,供npm
直接调用。
{
"name": "xxx",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "cross-env NODE_ENV=development node app.js",
"dev": "node app.js"
},
}
命令行
# 执行 script 中 dev 的脚本
npm run dev
# 执行 script 中 start的脚本 npm start 与 npm test 是两个默认的简写命令
npm start
# 列出所有 package.json 中记录的可执行脚本命令
npm run
npm run
会创建一个 shell ,执行指定的命令,并临时将node_modules/.bin
加入 PATH 变量,这意味着本地模块可以直接运行通过
npm install
本地安装的模块,都会被安装到node_modules
子目录,并且在node_modules/.bin
目录下生成一个同名的符号链接 指向安装的模块的可执行脚本这样通过
npm run a
命令执行package.json
中 script => a 部分定义命令时,可以不带路径的引用node_modules/.bin
下的脚本
scripts 中的命令,可以使用
&&
串联两个命令,两个命令依次执行;也可以使用&
并联两个命令,两个命令平行执行
// package.json
{
scripts: {
"dev": "npm run test1 && npm run test2", // && 用于串联
"build": "npm run test1 & npm run test2", // & 用于并联
"test1": "...",
"test2": "..."
}
}
pre- 和 post- 钩子用于脚本的前置执行和后置执行
{
"scripts": {
"dev": "node app.js",
"predev": "node test.js",
"postdev": "node test.js"
}
}
/*
调用 # npm run dev
依次执行 predev => dev => postdev
*/
scripts
字段中可以使用一些内部变量,主要是package.json
的各中字段,格式为npm_package_<propName>
// 获取版本号
{
"dev": "mkdir $npm_package_version"
}
6. npm info 查看模块具体信息
npm info webpack
7. npm list 列出安装的模块
npm list 命令以树型结构列出当前项目安装的所有模块,以及它们依赖的模块。
# 列出当前项目安装的模块
npm list
# 列出全局安装的模块
npm list -g
# 列出单个模块的依赖
npm list webpack
8. npm set 设置环境变量
npm set init-author-name 'Your name'
npm set init-author-email 'Your email'
npm set init-author-url 'http://yourdomain.com'
npm set init-license 'MIT'
# 设置 package.json 只记录确切版本 "^1.0.0" => "1.0.0"
npm set save-exact true
9. npm config 编辑 npmrc 文件的内容
npm 配置命令可用于更新和编辑 用户 和 全局 npmrc 文件的内容。
# 设置
npm config set key value
# 获取
npm config get key
# 列出
npm config list
# 删除
npm config delete key
# 命令行中编辑
npm config edit
# 设置 $dir 目录为全局安装目录,如果当前有这个目录的写权限,那么运行npm install的时候,就不再需要sudo命令授权了。
npm config set prefix $dir
# 设置安装新模块时,package.json 记录版本号的方式 ~ \ ^ 等
npm config set save-prefix ~
# 设置淘宝镜像
npm config set registry https://registry.npm.taobao.org