1

查看默认设置:

npm config ls -l

删除指定的配置项:

npm config delete <key>

修改指定的配置项:

npm config set <key> <value>

修改源:

npm config set registry https://registry.npm.taobao.org

临时修改下载源:

npm i jquery -S --register=https://register.npm.taobao.org

查看全局安装路径:

npm config get prefix

修改全局安装路径:

npm config set prefix G:/node_modules_global

初始化目录:

npm init   

搜索包含关键字的包:

npm search jquery

查看指定NPM包的信息

npm info jquery

查看指定NPM包的指定信息

npm info jquery version

运行本地NPM包

  1. 将命令添加到scripts中,使用npm run script
  2. 使用npx —— 需要npm@6.5+;
  3. $(npm bin)/webpack -v —— Unix环境可用

全局安装(如gulp):

npm install -g gulp

全局包卸载(如gulp):

npm uninstall -g gulp

项目本地安装(如gulp):

npm install gulp --save-dev

本地文件安装依赖(如node-sass)

  • 第一步、 npm info node-sass //查看node-sass在github中的地址;
homepage: 'https://github.com/sass/node-...',
  • 第二步、

    • //可以直接通过url安装依赖;必须在Git环境下安装

      * `npm i -D https://github.com/sass/node-sass` 【二选一】;
    • //也下载解压node-sass,通过本地路径安装依赖

      * `npm i -D ./node-sass` 【二选一】

    注意:本地安装只是创建了一个软连接,如果将下载地址的包删掉,恭喜你:运行程序找不到依赖了

项目本地卸载(如gulp):

npm uninstall gulp --save-dev

查看全局安装包:

//会查看到安装包所包含的所有依赖文件;
npm ls --global
//只查看顶级安装包;
npm ls --global -depth 0

查看本地安装包:

npm ls

删除安装包缓存:

npm cache clean

npm使用不同源

npm i -g nrm

借助于第三方包nrm管理npm

nrm ls
nrm use taobao
nrm add custom http://***

运行本地NPM包

  1. 将命令添加到scripts中,使用npm run script
  2. 使用npx —— 需要npm@6.5+;
  3. $(npm bin)/webpack -v —— Unix环境可用
  4. ./node_modules/.bin/webpack -v —— Window环境可用

查看命令列表

npm run  // 罗列scripts

npm run scripts中使用package.json变量

  • Unix$npm_package_version
  • Windows%npm_package_version%
  • cross-var:跨平台

查看npm预定义变量

npm run env

自动升级package.json中的version

  • npm version major // 根据semver版本级别自动升级版本号
  • semver.inc('1.0.0', 'major') // 借助semver工具包
  • standard-version // 第三方NPM包

npm run script自定义命令传参

npm查找并吞并npm run-script <command>后续指定的参数,e.g. [--silent] [-- <args>...]

npm run-script <command>后使用--界定npm参数的结束,npm会将--之后的所有参数直接传递给自定义的脚本

Issue解释

npm run start -- -p cheese

npm run的内置参数

通过上述,对npm run自身的参数产生了好奇

npm run test -s // 静默输出,除非发生错误
npm run test --loglevel silent // 静默输出,除非发生错误
npm run test -d // 完整日志输出
npm run test --loglevel verbose // 完整日志输出

并、串行执行任务

npm run

//  串行执行任务"&&"
npm run lint:js && npm run lint:css && npm run lint:json

// 并行执行任务"&"
npm run lint:js & npm run lint:css & wait
                                    // ^ == & wait等待所有结果返回之后,才打印命令运行的结果。不然会直接输出结果,而不会等待其中时间较长的运行命令。
                                    // ^ == & wait适用于Unix系统

第三方npm-run-all

可以使用通配符

npm-run-all lint:*

npm run-script添加注释

由于*.json文件不支持添加注释,通过两种hack的形式添加。

scripts: {
  "//": "运行所有代码检查和单元测试",
  "test": "npm-run-all --parallel lint:* mocha"
  "test": "# 运行所有代码检查和单元测试 \n    npm-run-all --parallel lint:* mocha"
}

两种hack方式都有明显的缺陷:

  • //:本身是命令,npm run列出来的命令列表不能把注释和实际命令区分开
  • # comment \n:增加了命令脚本的阅读复杂度,仅适用于Unix平台

跨平台

rimraf 或 del-cli

用来删除文件和目录,实现类似于 rm -rf 的功能;

cpr

用于拷贝、复制文件和目录,实现类似于 cp -r 的功能;

make-dir-cli

用于创建目录,实现类似于 mkdir -p 的功能;

环境变量cross-env

  • Mac上可以在命令行中设置环境变量,而Windows不能这样操作

    scripts: {
      "test": "NODE_ENV =production node bin/index.js"
    }
  • cross-env可以忽略平台差异,通过定义cross-env NODE_ENV =production node bin/index.js,在各种平台(Mac/Windows)都可以通过process.env.*访问NODE_ENV——不能通过cross-env获取在process.env.*定义的变量

变量引用cross-var-no-babel

引入cross-var会自动安装了babel,如果想保持依赖更轻量的话,可以考虑使用cross-var-no-babel

NPM包在浏览器端的使用

NPM包的使用:

  1. Node环境中,将node_modules一起上传至服务器端
  2. Webpack环境中,将node_modules中的代码打包至bundle.js中,在*.html中作为脚本引入
  3. 无需任何工具,在*.html中优先引入jspm,然后引入其它NPM包即可,用法查看官网

ts场景

node -r ts-node/register pm.ts

配置npm init信息

npm config set init.author.email "123@gmail.com"
npm config set init.author.name "123"
npm config set init.author.url "http://github.com/123"
npm config set init.license "MIT"
npm config set init.version "0.0.1"

通过以上配置,可以避免每次初始化项目都去修改package.json文件信息


米花儿团儿
1.3k 声望75 粉丝