官方文档:docs.npmjs.com/misc/config
npm 配置来源
npm 从以下来源获取配置信息(优先级由高到低):
命令行选项
- 在命令行中用
--foo bar
设置配置参数foo
的值为"bar"
。 - CLI 解析器碰到
--
时停止读取配置参数值。 - 使用
--foo
而不指定任何值时,设置配置参数foo
的值为true
。
示例:
# flag1 -> true, flag2 -> true
--flag1 --flag2
# flag1 -> true, flag2 -> "bar"
--flag1 --flag2 bar
# flag1 -> true, flag2 -> true, bar 为命令参数,不是配置参数 flag2 的值
--flag1 --flag2 -- bar
复制代码
环境变量
- 带有
npm_config_
前缀的环境变量会被解释为 npm 配置参数。例如,环境变量中的npm_config_foo=bar
将会设置配置参数foo
的值为"bar"
。 - 只指定参数名却没有指定任何值的配置参数,其值将会被设置为
true
。
npmrc 文件
有如下四类 npmrc 文件(优先级由高到低):
- 项目配置文件(
/path/to/my/project/.npmrc
) - 用户配置文件(默认为
$HOME/.npmrc/
;可通过 CLI 选项--userconfig
或环境变量$NPM_CONFIG_USERCONFIG
指定) - 全局配置文件(默认为
$PREFIX/etc/npmrc
;可通过 CLI 选项--globalconfig
或环境变量$NPM_CONFIG_GLOBALCONFIG
指定) - npm 内置的配置文件(
/path/to/npm/npmrc
)
默认配置
执行 npm config ls -l
查看 npm 配置参数,如果没有额外指定配置,则该命令的输出结果是 npm 默认配置参数。
CLI 参数缩写
-v: --version
-h, -?, --help, -H: --usage
-s, --silent: --loglevel silent
-q, --quiet: --loglevel warn
-d: --loglevel info
-dd, --verbose: --loglevel verbose
-ddd: --loglevel silly
-g: --global
-C: --prefix
-l: --long
-m: --message
-p, --porcelain: --parseable
-reg: --registry
-f: --force
-desc: --description
-S: --save
-P: --save-prod
-D: --save-dev
-O: --save-optional
-B: --save-bundle
-E: --save-exact
-y: --yes
-n: --yes false
ll and la commands: ls --long
如果指定的配置参数缩写可以无歧义地解析为一个已知的配置参数,它将会被解析为该配置参数,示例:
npm ls --par
# same as:
npm ls --parseable
复制代码
如果多个单字母缩写的配置参数连在一起,并且结果无法无歧义地解析为一个已知配置参数,那么这些连在一起的缩写参数会被解析为这些配置参数的组合,示例:
npm ls -gpld
# same as:
npm ls --global --parseable --long --loglevel info
复制代码
Per-Package Config Settings
执行 npm-scripts 时,若脚本中引用了 package.json 文件中的 config
字段下的配置参数,用户可通过 npm 配置覆盖参数值。示例:
{
"name": "foo",
"config": {
"port": "8080"
},
"scripts": {
"start": "node server.js"
}
}
复制代码
// server.js
http.createServer(...).listen(process.env.npm_config_port)
复制代码
# 通过配置覆盖 package.json 中 config.port 的值
npm config set foo:port 80
复制代码
配置参数
所有配置参数:docs.npmjs.com/misc/config…
常见配置参数:
-
cache
- Default: Windows:
%AppData%\npm-cache
,Posix:~/.npm
- Type: path
- Default: Windows:
-
color
- Default:
true
- type: Boolean 或
"always"
如果为
false
,永远不彩色打印,如果为"always"
,永远彩色打印,如果为true
,只彩色打印 tty file descriptors。当环境变量
NO_COLOR
设置为任何值时,禁用彩色打印。 - Default:
-
depth
- Default:
Infinity
- Type: Number
执行
npm ls
,npm cache ls
,npm outdated
命令时,递归目录的深度。对于
npm outdated
时,Infinity
将会被视为0
。想要检查多有包及其依赖包,需要使用一个大整数,例如:npm outdated --depth 9999
。 - Default:
-
dry-run
- Default:
false
- Type: Boolean
若设置为
true
,npm 只报告要做什么,而不会付诸行动。 - Default:
-
global
- Default:
false
- Type: Boolean
若设置为
true
,在 "global" 模式下执行命令:- npm 包会被安装到
{prefix}/lib/node_modules
目录而不是当前工作目录。 - bin 文件链接到
{prefix}/bin
目录 - man pages 链接到
{prefix}/share/man
目录
- Default:
-
globalconfig
- Default:
{prefix}/et/npmrc
- Type: path
- Default:
-
https_proxy
- Default:
null
- Type: url
- Default:
-
long
- Default: false
- Type: Boolean
执行
npm ls
和npm search
打印详细信息。 -
node-version
- Default: precess.version
- Type: semver or
false
检查 package.json 中的
engines
字段时使用的 node 版本号。 -
onload-script
- Default:
false
- Type: path
npm 启动时
require()
的脚本。 - Default:
-
optional
- Default:
false
- Type: Boolean
尝试安装
optionalDependencies
对象中的包,如果这些包安装失败,不阻碍其他包的安装。 - Default:
-
package-lock
- Default: true
- Type: Boolean
如果设为
false
,在npm install
时忽略 package-lock.json。当 package-locks 被禁用时,多余模块的自动裁剪也会被禁用。此时,移除多余模块要使用
npm prune
命令 -
parseable
- Default:
false
- Type: Boolean
让执行的命令输出可解析的结果。对于
npm search
,指定该选项将会以tab
分隔的格式输出结果。 - Default:
-
prefix
- Default: 与 node 安装路径有关,node 安装在
{prefix}/bin
目录下。 - Type: path
全局包的安装位置。如果再命令行中指定,则在指定目录执行非全局命令。
- Default: 与 node 安装路径有关,node 安装在
-
production
- Default:
false
- Type: Boolean
设置为
true
时:- 不带参数执行
npm install
时,不会在项目的node_modules
目录的的直接子目录中安装devDependencies
中的包。 - 为生命周期钩子脚本设置环境变量:
NODE_ENV=production
。
- Default:
-
progress
- Default:
true
, 除非已通过 TRAVIS 或 CI 环境变量设置. - Type: Boolean
是否为时间敏感的操作显示进度条。
- Default:
-
proxy
- Default:
null
- Type: url
如果设置了
HTTP_PROXY
或http_proxy
环境变量,底层请求库将使用代理设置。 - Default:
-
registry
- Default: registry.npmjs.org/
- Type: url
npm 源地址。
-
rollback
- Default:
true
- Type: Boolean
是否移除安装失败的包。
- Default:
-
save
- Default:
true
- Type: Boolean
只在当前目录中存在 package.json 文件时有效。执行
npm install ...
时,将安装的包加入dependencies
,执行npm rm ...
时将删除的包从dependencies
中移除。 - Default:
-
save-dev
- Default:
false
- Type: Boolean
类似
save
参数,相应的 package.json 字段:devDependencies
。 - Default:
-
save-optional
- Default:
false
- Type: Boolean
类似
save
参数,相应的 package.json 字段:optionalDependencies
。 - Default:
-
save-exact
- Default:
false
- Type: Boolean
如果设置为
true
,使用--save
,--save-dev
或--save-optional
保存到 package.json 中的依赖包的会被配置为确定的版本,而不使用 npm 默认的语义化版本范围符号(semver range operator)。 - Default:
-
save-prefix
- Default:
^
- Type: String
为使用
--save
,--save-dev
或--save-optional
安装的依赖包指定版本号前缀。例如,如果依赖包的版本为
1.2.3
,在 package.json 中该包的版本会被设置为^1.2.3
,这允许使用该包的 minor upgrades。如果将save-prefix
设置为~
,在 package.json 中该包的版本会被设置为~1.2.3
,这允许使用该包的 patch upgrades。 - Default:
-
script-shell
- Default: null
- Type: path
通过
npm run
命令执行脚本时使用的 shell. -
searchlimit
- Default: 20
- Type: Number
npm search ...
结果数上限。 -
shell
- Default:
SHELL
environment variable, or"bash"
on Posix, or"cmd"
on Windows - Type: path
执行
npm explore
命令时使用的 shell。 - Default:
-
userconfig
- Default:
~/.npmrc
- Type: path
- Default:
-
version
- Default: false
- Type: boolean
如果设为
true
,输出 npm 版本。 -
versions
- Default: false
- Type: boolean
如果设为
true
,输出 npm 和 node 进程相关的版本信息。
使用 CLI 命令设置和读取配置参数
npm config
(alias:npm c
) 命令可以用来更新和编辑用户和全局 npmrc 文件。
# 设置配置参数 key 的值为 value,如果省略 value,key 会被设置为 true
npm config set <key> <value> [-g|--global]
# 查看配置参数 key 的值
npm config get <key>
# 删除配置参数 key
npm config delete <key>
# 查看所有设置过的配置参数。使用 -l 查看所有设置过的以及默认的配置参数。使用 --json 以 json 格式查看。
npm config list [-l] [--json]
# 在编辑器中打开 npmrc 文件,使用 --global 参数打开全局 npmrc 文件。
npm config edit
# 同 npm config get <key>
npm get <key>
# 同 npm config set <key> <value> [-g|--global]
npm set <key> <value> [-g|--global]
复制代码