npm 常用命令

NPM 常用命令

说明

npm 是 Node 默认的模块管理器是一个命令行下的软件,用来安装和管理 Node 模块

安装

安装 Node 的时候会默认安装 npm ,但是这个 npm 可能不是最新的版本,可以通过以下命令更新 npm 版本

1     # 安装最新版本
2     sudo npm install npm@latest -g
3     # 查看版本
4     npm --version 

 

 

命令

1. npm init 初始化

npm init 命令会向用户提问一系列问题,然后生成一个 package.json 文件, 使用参数 -f 或者 -y 则会跳过提问阶段,直接生成 package.json 文件

1     # 需要回到提问,或者回车键默认
2     npm init 
3     # 直接使用默认配置
4     npm init -f # npm init -y

 

2. npm install 安装模块

模块的安装分为全局安装和本地安装,全局安装会将模块安装到系统目录中,各个项目都可以调用,本地安装会将模块下载到当前项目的 node_modules 子目录下,只有当前项目才能调用这个模块。安装前,会先检查 node_modules 中是否已经存在指定模块,如果存在就不在重复安转,如果需要强制重新安装可以使用 -f --force 参数

 1     # 安装某个模块 (安装的模块名不会记录在 package.json 中)
 2     npm install webpack
 3     # 安装某个模块 (模块记录在 package.json 的 dependencies 中)
 4     npm install webpack --save # 或者 -S
 5     # 安装某个模块 (模块记录在 package.json 的 devDependencies 中)
 6     npm install webpack --save-dev # 或者 -D
 7     # 全局安装模块
 8     npm install webpack -g
 9     # 安装指定版本
10     npm install webpack@3.10.0 --save 
11     # 指定安装版本范围
12     npm insatll webpack@">=2.0.0 <3.10.0"
13     # 安装模块最新版本
14     npm install webpack@latest
15     # 安装模块的确切版本 默认安装 "^3.10.0" 表示 3.10.0 及其以上、大版本号为3的版本 使用 --save-exact 后 "3.10.0" 表示只有 3.10.0 版本
16     npm install webpack --save --save-exact 
17     # 安装 package.json 文件中记录的模块
18     sudo rm -rf node_modules # 删除安装的模块
19     npm install # 需要有 package.json 文件  npm --cache-min 9999999 install 先从缓存加载,

3. npm uninstall 卸载模块

1     # 卸载模块
2     npm uninstall webpack
3     # 卸载全局模块
4     npm uninstall webpack -g
5     # 卸载 dependencies 中模块
6     npm uninstall webpack --save # -S
7     # 卸载 devDependencies 中模块
8     npm uninstall webpack --save-dev # -D

4. npm update 更新本地安装模块

会按照 依赖版本规则更新,比如 针对 “^2.1.0” 只会更新小版本号到最新


 1     # 更新全部 package.json 中的模块
 2     npm update
 3     # 更新 dependencies 中模块
 4     npm update --save # -S
 5     # 更新 devDependencies 中模块
 6     npm update --save-dev # -D
 7     # 更新指定的模块
 8     npm update webpack --save-dev
 9     # 更新全局模块
10     npm update webpack -g
11     # 从npm v2.6.1 开始,npm update只更新顶层模块,而不更新依赖的依赖,以前版本是递归更新的。如果想取到老版本的效果,要使用下面的命令
12     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"
        },
    }

 

命令行

1     # 执行 script 中 dev 的脚本
2     npm run dev
3     # 执行 script 中 start的脚本 npm start 与 npm test 是两个默认的简写命令 
4     npm start 
5     # 列出所有 package.json 中记录的可执行脚本命令
6     npm run 

 

 

  1. npm run 会创建一个 shell ,执行指定的命令,并临时将 node_modules/.bin 加入 PATH 变量,这意味着本地模块可以直接运行

  2. 通过 npm install 本地安装的模块,都会被安装到 node_modules 子目录,并且在 node_modules/.bin 目录下生成一个同名的符号链接 指向安装的模块的可执行脚本

  3. 这样通过 npm run a 命令执行 package.json 中 script => a 部分定义命令时,可以不带路径的引用 node_modules/.bin 下的脚本

scripts 中的命令,可以使用 && 串联两个命令,两个命令依次执行;也可以使用 & 并联两个命令,两个命令平行执行

1     // package.json
2     {
3         scripts: {
4             "dev": "npm run test1 && npm run test2", // && 用于串联
5             "build": "npm run test1 & npm run test2", // & 用于并联
6             "test1": "...",
7             "test2": "..."
8         }
9     }

 

 

pre- 和 post- 钩子用于脚本的前置执行和后置执行

 1     {
 2         "scripts": {
 3             "dev": "node app.js",
 4             "predev": "node test.js", 
 5             "postdev": "node test.js"
 6         }
 7     }
 8     /*
 9         调用 # npm run dev
10         依次执行 predev => dev => postdev
11     */

 

 

 

scripts 字段中可以使用一些内部变量,主要是 package.json 的各中字段,格式为 npm_package_<propName>

1     // 获取版本号
2     {
3         "dev": "mkdir $npm_package_version"
4     }

 

 

6. npm info 查看模块具体信息

1     npm info webpack

 

7. npm list 列出安装的模块

npm list 命令以树型结构列出当前项目安装的所有模块,以及它们依赖的模块。

1     # 列出当前项目安装的模块
2     npm list 
3     # 列出全局安装的模块
4     npm list -g
5     # 列出单个模块的依赖
6     npm list webpack

 

8. npm set 设置环境变量

1     npm set init-author-name 'Your name'
2     npm set init-author-email 'Your email'
3     npm set init-author-url 'http://yourdomain.com'
4     npm set init-license 'MIT'
5 
6     # 设置 package.json 只记录确切版本 "^1.0.0" => "1.0.0"
7     npm set save-exact true

 

9. npm config 编辑 npmrc 文件的内容

npm 配置命令可用于更新和编辑 用户 和 全局 npmrc 文件的内容

 1     # 设置
 2     npm config set key value
 3     # 获取
 4     npm config get key
 5     # 列出
 6     npm config list
 7     # 删除
 8     npm config delete key
 9     # 命令行中编辑
10     npm config edit 
11     # 设置 $dir 目录为全局安装目录,如果当前有这个目录的写权限,那么运行npm install的时候,就不再需要sudo命令授权了。
12     npm config set prefix $dir
13     # 设置安装新模块时,package.json 记录版本号的方式 ~ \ ^14     npm config set save-prefix ~
15     # 设置淘宝镜像
16     npm config set registry https://registry.npm.taobao.org

 

 

 

posted @ 2018-04-08 16:33  wangpinzhou  阅读(358)  评论(0)    收藏  举报