name|pkg 模块名 version 版本号 version range 版本范围 @scope 作用域。所有 npm 软件包都有一个名称。某些软件包名称也有作用域。

# 查看 npm 的版本 //6.4.0  安装成功会返回版本号
$ npm -v  

# 查看各个命令的简单用法
$ npm -l 
 
# 查看 npm 命令列表
$ npm help

# 查看 npm 的配置
$ npm config list -l

# npm init用来初始化生成一个新的package.json文件
$ npm set init-author-name 'my name jerry'
$ set init-author-email '12345@qq.com'
$ set init-author-url 'http://yourdomain.com'
$ npm set init-license 'MIT'
$ npm init


$ npm search 搜索词 [-g]

#当前项目安装的所有模块
$npm list

#列出全局安装的模块 带上[--depth 0] 不深入到包的支点 更简洁
$ npm list -g --depth 0

# 读取package.json里面的配置单安装  
$ npm install 
//可简写成 npm i

# 默认安装指定模块的最新(@latest)版本
$ npm install [@scope/]name 
//eg:npm install gulp

# 安装指定模块的指定版本
$ npm install [@scope/]name@version
//eg: npm install gulp@3.9.1

# 安装指定指定版本范围内的模块
$ npm install [@scope/]name@version range
//eg: npm install vue@"=1.0.28  2.0.0"

# 安装指定模块的指定标签 默认值为(@latest)
$ npm install [@scope/]name@tag
//eg:npm install sax@0.1.1

# 通过Github代码库地址安装
$ npm install tarball url
//eg:npm install git://github.com/package/path.git

#卸载当前项目或全局模块 
$ npm uninstall name [-g] 

eg: npm uninstall gulp --save-dev  
    npm i gulp -g

#卸载后,你可以到 /node\_modules/ 目录下查看包是否还存在,或者使用以下命令查看:
#查看安装的模块
npm ls 

#升级当前项目或全局的指定模块
$ npm update name [-g] 

# 引用依赖 有些包是全局安装了,在项目里面只需要引用即可。
$ npm link [@scope/]pkg[@version]
//eg: 引用   npm link gulp gulp-ssh gulp-ftp
//eg: 解除引用 npm unlink gulp

# 引用模块 本人用得少没深入说了 用得上时可去翻文档例子
$ npm link (in package dir)


npm run 执行脚本

package.json的scripts字段,可以用于指定脚本命令,供npm直接调用。npm run会创建一个Shell,执行指定的命令。

{
    "name": "npm_test",
    "version": "1.0.0",
    "config": {
        "reporter": "xunit"
    },
    "script":{
        "bundle": "mkdir -p build/$npm_package_version/",
        //$npm_package_version 读的是外层"version"的值,同理$npm_package_name 读的是外层"name"的值
        "test": "mocha test/ --reporter $npm_package_config_reporter"
        //$npm_package_config_reporter读的是"config"里的"reporter"
    }
}


pre-和post-两个钩子(hook)

npm会先查看有没有定义prelint和postlint两个钩子,如果有的话,就会 先执行npm run pre-命令名,然后执行npm run 命令名,最后执行npm run post-命令名。

"scripts": {
    "lint": "eslint --cache --ext .js --ext .jsx src",
    "test": "karma start --log-leve=error karma.config.js --single-run=true",
    "pretest": "npm run lint",
    "posttest": "echo 'Finished running tests'"
  }
  
-------终端-------
$ npm run lint
//直接执行 npm run lint 结束

$ npm run test
//因为有定义了两个钩子pretest、posttest。
//所以先执行 npm run pretest
//然后执行 npm run test
//最后执行 npm run posttest