查看默认设置:
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包
- 将命令添加到
scripts
中,使用npm run script
; - 使用
npx
—— 需要npm@6.5+
; $(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包
- 将命令添加到
scripts
中,使用npm run script
; - 使用
npx
—— 需要npm@6.5+
; $(npm bin)/webpack -v
——Unix环境可用
;./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
包的使用:
- 在
Node
环境中,将node_modules
一起上传至服务器端 - 在
Webpack
环境中,将node_modules
中的代码打包至bundle.js
中,在*.html
中作为脚本引入 - 无需任何工具,在
*.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
文件信息
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。