描述
npm从以下来源获取配置值,按优先级排序:
命令行标记
在命令行上放置--foo bar
设置foo
配置参数为bar
。 一个 --
参数(argument)告诉cli解析器停止读取flags.一个 在命令行结尾的--flag
参数(parameter)的值将会是true
.
环境变量
任何以npm_config_
开始的环境变量都会作为配置参数解读。在环境里设置npm_config_foo=bar
将会设置foo
配置参数为bar
。任何没有值的环境配置将会默认为true
。配置值是不区分大小写的,所以NPM_CONFIG_FOO=bar
的结果一样。
npmrc Files
相关的四个文件是:
- 每个项目配置文件(/path/to/my/project/.npmrc)
- 每个用户配置文件(~/.npmrc)
- 全局配置文件($PREFIX/etc/npmrc)
- npm构建配置文件(/path/to/npm/npmrc)
查看npmrc了解更多细节
默认配置
运行npm config ls -l
查看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
- -D: --save-dev
- -O: --save-optional
- -B: --save-bundle
- -E: --save-exact
- -y: --yes
- -n: --yes false
- ll and la命名:ls --long
如果指定的配置参数解析明确已知的配置参数。比如:
npm ls --par
#same as
npm ls --parseable
如果多个单个字符缩写串在一起,并且组合没有去其他配置参数产生歧义,那么就会扩展成多个不同的组成。比如:
npm ls -gpld
# same as
npm ls --global --parseable --long --loglevel info
每个包的配置设置
当运行脚本时(看npm-scripts),如果有一个<name>[<@version>]:<key>
的配置参数,package.json “config”keys将在环境变量里被重写.比如:
{"name":"foo"
,"config":{"port":"8080"}
,"scripts":{"start":"node server.js"}}
并且server.js是这样的:
http.createServer(...).listen(process.env.npm_package_config_port)
然后用户可能这样修改:
npm config set foo:port 80
Config Settings
access
- Default:restricted
- Type:Access
当发布scoped packages是,默认的访问等级是restricted
.如果你想要scoped package是公共可见的(和可安装的)。设置 --access=public
. access
唯一合法的值是public
和restricted
.Unscoped packages的access
level总是public
.
always-auth
- Default: false
- Type:Boolean
npm在访问registry的时候强制需要验证,即使是GET请求
also
- Default: null
- Type: String
当“dev"或者"development"并且本地运行npm shrinkwrap
,npm outdated
或者npm update
,别名是-dev
bin-links
- Default: true
- Type: Boolean
为可执行包告诉npm创建symlinks(在windows是.cmd)
设置false告诉不要这样。这是用来解决一些不支持symlink的文件,即使表面是Unix systems.
browser
- Default: OS X:
"open"
, Windows:"start"
, Others:"xdg-open"
- Type: String
通过npm docs
命令调用浏览器打开网站
ca
- Default: The npm CA 认证
- Type: String, Array或者null
信任的证书颁发机构签名证书的SSL连接到注册表中.在PEM格式的换行应该通过"\n"
代替。比如:
ca="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
设置null
让只有known
登记员,或者指定CA认证相信只有特定的登陆认证。
多个CAs可以通过数组形式指定:
ca[]="..."
ca[]="..."
同看strict-ssl
配置。
cafile
- Default: null
- Type: path
路径文件包含一个或多个签名证书的证书颁发机构。类似于ca设置,但允许多个ca的,以及ca信息存储在磁盘上的文件中。
cache
- Default: Windows: %AppData%\npm-cache
, Posix:~/.npm
- Type: path
cache-lock-stale
- Default:60000(1分钟)
- Type:Number
the number of ms before cache folder lockfiles are considered stale.
cache-lock-retries
- Default:10
- Type:Number
Number of times to retry to acquire a lock on cache folder lockfiles.
cache-lock-wait
- Default:10000(10秒)
- Type: Number
Number of ms to wait for cache lock files to expire.
cache-max
- Default: Infinity
- Type: Number
The maximum time (in seconds) to keep items in the registry cache before re-checking against the registry.
Note that no purging is done unless the npm cache clean
command is explicitly used, and that only GET requests use the cache.
cache-min
- Default: 10
- Type: Number
The minimum time (in seconds) to keep items in the registry cache before re-checking against the registry.
Note that no purging is done unless the npm cache clean
command is explicitly used, and that only GET requests use the cache.
cert
- Default: null
- Type: String
当访问registry时传递的客户端认证
color
- Default: true
- Type: Boolean 或者"always"
如果false,就不会显示颜色。如果"always",就总是显示颜色。如果true,只有为ttf file描述才打印颜色代码
depth
- Default: Infinity
- Type: Number
通过npm ls
, npm cache ls
和npm outdated
递归目录时的深度
对于npm outdated
,Infinity
的设置将会是0,因为给出更多的信息。想要展示所有包和依赖的outdated状态,使用一个大数字,比如:npm outdated --depth 9999
.
description
- Default: true
- Type: Boolean
在npm search里展示描述
dev
- Default: false
- Type: Boolean
随包安装dev-dependencies
注意如果设置了npat
,dev-dependencies
也会被安装
dry-run
- Default:false
- Type:Boolean
表明你不需要让npm做出任何更新并且只报告完成了什么。这可以通过修改本地安装的任何命令,比如:install
,update
,dedupe
,uninstall
。这不是当前通过网络相关命令honored,比如:dist-tags
,owner
,publish
等等。
editor
- Default: 设置编辑器,或者"vi"在Posix上,或者"notepad"在windows上。
- Type: 编辑器路径(path)
命令运行行npm edit
或者npm config edit
engine-strict
- Default: false
- Type: Boolean
如果设置为true,npm将会直接拒绝安装(即使考虑安装)任何与当前Node.js版本不兼容的包
force
- Default: false
- Type: Boolean
让变量命令更强硬
- 生命周期脚本失败不阻塞进程
- 发布时销毁之前的发布的版本
- 从registry里请求时跳过缓存
- 对非npm文件不检查
fetch-retries
- Default:2
- Type: Number
当从registry获取包时,对retry module使用"retries"配置
fetch-retry-factor
- Default: 10
- Type: Number
获取包时,对retry module使用"factor"配置
fetch-retry-mintimeout
- Default: 10000(10秒)
- Type: Number
获取包时,设置retry module的"minTimeout"
fetch-retry-maxtimeout
- Default: 10000(10秒)
- Type: Number
获取包时,设置retry module的"maxTimeout"
git
- Default: "git"
- Type: String
使用git命令。如果电脑上安装了git,但是不在path里,需要将这个设置为git的全路径
git-tag-version
- Default: true
- Type: Boolean
使用npm version命令时标记提交
global
- Default: false
- Type: Boolean
使用全局模式,包会安装到prefix
文件夹而不是当前工作目录。 查看npm-folders获取更多的不同行为
- packages安装进{prefix}/lib/node_modules}文件夹,而不是当前工作目录
- bin files指向{prefix}/bin
- man pages 指向** {prefix}/share/man**
globalconfig
- Default: {prefix}/etc/npmrc
- Type: path
配置全局配置选项的文件
global-style
- Default: false
- Type: Boolean
让npm安装到本地的node_modules
文件夹和全局的node_moudules
文件夹是相同的布局。只有直接依赖的会显示到node_modules
并且依赖所依赖的会平级的在他们的node_modules
文件夹。这显然会消除一些重复。如果带有legacy-bundling
,legacy-bundling
会更好
group
- Default: 当前进程的GID
- Type: String or Number
the group to use when running package scripts in global mode as the root user.
heading
- Default: "npm"
- Type: String
所有调试日志输出开头的字符
https-proxy
- Default: null
- Type: url
用于代理https请求的。
if-present
- Default: false
- Type: Boolean
If true, npm will not exit with an error code when run-script
is invoked for a script that isn't defined in the scripts
section of package.json
. This option can be used when it's desirable to optionally run a script when it's present and fail if the script fails. This is useful, for example, when running scripts that may only apply for some builds in an otherwise generic CI setup.
ignore-scripts
- Default: false
- Type: Boolean
是true的话,npm不运行在pacakge.json文件里指定的脚本
init-module
- Default: ~/.npm-init.js
- Type: path
会被npm init
命令加载的模块。从init-pacakge-json文档获取更多信息,或者npm-init
init-author-name
- Default: ""
- Type: String
执行npm init
是默认给包设置的作者名
init-author-email
- Default: ""
- Type: String
执行npm init
是默认给包设置的作者的邮件
init-author-url
- Default: ""
- Type: String
执行npm init
是默认给包设置的作者的主页
init-license
- Default: "ISC"
- Type: String
执行npm init
是默认给包设置的默认证书
init-version
- Default: ""
- Type: String
如果pacakge.json
里没有设置,执行npm init
是默认给包设置的版本号
json
- Default: false
- Type: Boolean
是否输出JSON data,而不是普通输出
这个特性目前只是实验阶段,许多命令的输出结构还没有实现JSON,或者可能发生变化。只有npm ls --json
命令才是有效的。
key
- Default: null
- Type: String
访问registry传输的客户端key
legacy-bundling
- Default: false
- Type: Boolean
Causes npm to install the package such that versions of npm prior to 1.4, such as the one included with node 0.8, can install the package. This eliminates all automatic deduping. If used with global-style
this option will be preferred.
link
- Default: false
- Type: Boolean
if true, 局部安装会链接到合适的全局安装了的包。
注意这意味着局部安装会在同一时间导致things被安装进全局空间。只有两种条件之一发生时link才会完成:
- 包还没有被安装到全局环境,或者
- 全局安装的版本表明已经被安装到了局部
local-address
- Default: undefined
- Type: IP Address
在连接到npm registry是的本地接口的ip地址。Node小于0.12时必须是IPv4.
loglevel
- Default: "warn"
- Type: String
- Values: "silent", "error", "warn", "http", "info", "verbose", "silly"
日志输出的等级。失败的时候,所有的日志会写到当前工作目录的npm-debug.log
任何高于设置等级的日志都会被输出,默认是"warn",就会输出"warn","error"
logstream
- Default: process.stderr
- Type: Stream
在运行时传给npmlog的stream
如果不能从命令行里设置,但是正以编程方式使用npm,你可能想将日志存在其他地方而不是stderr。
如果设置了color
为true,如果stream是TTY,那么会接收到colored输出。
long
- Default: false
- Type: Boolean
在npm ls
和npm search
展示更多的信息
message
- Default: "%s"
- Type: String
使用npm version
创建版本提交时提交信息。
message里的任何"%s"都会被替换成版本号
node-version
- Default: process.version
- Type: semver or false
当检查package's engines
map时的node版本号
npat
- Default: false
- Type: Boolean
在安装时运行测试
onload-script
- Default: false
- Type: path
在npm加载时,node模块去require()
。在编程时的用法。
only
- Default: null
- Type: String
当是dev
或者development
时,不带任何参数运行局部npm install
,只会有devDependencies(和他们的依赖)会被安装
当是dev
或者development
时,运行npm ls
, npm outdated
或者npm update
,是 --dev
的别名
当是prod
或者production
是,无参运行npm install
,只有non-devDependencies(和他们的依赖)会被安装。运行npm ls
, npm outdated
或者npm update
,是 --production
的别名
optional
- Default: true
- Type: Boolean
试图安装在optionalDependencies
对象里的包。注意如果包安装失败了,整个安装过程不会终止。
parseable
- Default: false
- Type: Boolean
从命令行里的标准输出解析输出结构
prefix
- Default : 查看npm-folders
- Type: path
安装全局项的位置,如果在命令行上设置,会强制非全局命令在指定文件夹里运行
production
- Default: false
- Type: Boolean
是true就是production
模式:
- 无参运行
npm install
时不会将devDependencies安装在最高的等级 - 为生命周期脚本设置
NODE_ENV="production"
progress
- Default: true
- Type: Boolean
是true时,如果在处理中,npm会显示一个进度条。stderr
是一个TTY。
false就没有进度条
properietary-attribs
- Default: true
- Type: Boolean
在npm创建压缩包时是否包含私人扩展属性
Unless you are expecting to unpack package tarballs with something other than npm -- particularly a very outdated tar implementation -- leave this as true.
proxy
- Default: null
- Type: url
外部请求的代理。如果设置了HTTP_PROXY
或者http_proxy
环境变量,proxy设置将会由底层请求库
rebuild-bundle
- Default: true
- Type: Boolean
在安装后重新构建包依赖
registry
- Default: https://registry.npmjs.org/
- Type: url
基于npm 包registry的链接
rollback
- Default: true
- Type: Boolean
删除失败的安装
save
- Default: false
- Type: Boolean
安装包时,作为dependencies
保存到package.json
当使用npm rm
命令,会从dependencies
对象里删除
只有当已经有package.json
文件时才有效。
save-bundle
- Default: false
- Type: Boolean
通过使用--save
, --save-dev
或者--save-optional
,包是否会在安装时保存,然后也放到bundleDependencies
list里。
使用npm rm
命令时,会从bundledDependencies
list里移除
save-dev
- Default: false
- Type: Boolean
安装包时,作为devDenpendencies
保存到package.json
里
使用npm rm
命令时,会从devDenpendencies
list里移除
仅当存在package.json文件时才有效。
save-exact
- Default: false
- Type: Boolean
使用--save
,--save-dev
或者-save-optional
是保存Dependencies到pacakge.json会配置要求版本而不是npm的默认semver范围
save-optional
- Default: false
- Type: Boolean
保存安装包到package.json
里的optionalDependencies
里。
使用npm rm
命令时,会从devDependencies
对象里移除
仅当存在package.json文件时才有效。
save-prefix
- Default:'^'
- Type: String
通过--save
或者--save-dev
获取prefixed配置包的什么版本到package.json
比如:如果包有一个版本1.2.3
,但是默认设置的版本是可以允许小的升级包的^1.2.3
。但是在npm config set save--prefix='~'
后,应该设置为~1.2.3
。
scope
- Default: ""
- Type: String
Associate an operation with a scope for a scoped registry. Useful when logging in to a private registry for the first time: npm login --scope=@organization --registry=registry.organization.com
, which will cause @organization
to be mapped to the registry for future installation of packages specified according to the pattern @organization/package
searchopts
- Default: ""
- Type: String
搜索时空格分隔的选项
searchexclude
- Default:""
- Type: String
空格分隔的选项限制搜索的结果。
searchsort
- Defautl: "name"
- Type: String
- Values:"name","-name","date","-date","description","-description","keywords","-keywords"
显示的字段排序搜索结果。前缀-
表明逆向排序。
shell
- Default: SHEELL环境变量,Posix上是base,windows上是cmd
- Type: path
运行npm explore
命令的shell
shrinkwrap
- Default: true
- Type: Boolean
如果是false,安装时会忽略掉npm-shrinkwrap.json
sign-git-tag
- Default: false
- Type: Boolean
为true时,npm version
命令会使用-s
标记版本添加到signature.
注意git需要你设置GPG keys,在git配置这个工作属性
strict-ssl
- Default: true
- Type: Boolean
通过https请求registry是否进行SSL可以验证,同ca配置
tag
- Default:latest
- Type: String
如果在安装包时不告诉指定的版本,就会安装指定的tag
同样tag会添加到pacakge@version,通过npm tag
命令指定,如果没有显示的tag给
tag-version-prefix
- Default: "v"
- Type: String
If set, alters the prefix used when tagging a new version when performing a version increment using npm-version. To remove the prefix altogether, set it to the empty string: "".
Because other tools may rely on the convention that npm version tags look likev1.0.0
, only use this property if it is absolutely necessary. In particular, use care when overriding this setting for public packages.
tmp
- Default: TMPDIR environment variable, or "/tmp"
- Type: path
Where to store temporary files and folders. All temp files are deleted on success, but left behind on failure for forensic purposes.
unicode
- Default: false on windows, true on mac/unix systems with a unicode locale
- Type: Boolean
When set to true, npm uses unicode characters in the tree output. When false, it uses ascii characters to draw trees.
unsafe-perm
- Default: false if running as root, true otherwise
- Type: Boolean
Set to true to suppress the UID/GID switching when running package scripts. If set explicitly to false, then installing as a non-root user will fail.
usage
- Default: false
- Type: Boolean
Set to show short usage output (like the -H output) instead of complete help when doing npm-help
user
- Default: "nobody"
- Type: String or Number
The UID to set to when running package scripts as root.
userconfig
- Default: ~/.npmrc
- Type: path
The location of user-level configuration settings.
umask
- Default: 022
- Type: Octal numeric string in range 0000..0777 (0..511)
The "umask" value to use when setting the file creation mode on files and folders.
Folders and executables are given a mode which is 0777 masked against this value. Other files are given a mode which is 0666 masked against this value. Thus, the defaults are 0755 and 0644 respectively.
user-agent
- Default: node/{process.version} {process.platform} {process.arch}
- Type: String
Sets a User-Agent to the request header
version
- Default: false
- Type: boolean
If true, output the npm version and exit successfully.
Only relevant when specified explicitly on the command line.
versions
- Default: false
- Type: boolean
If true, output the npm version as well as node's process.versions map, and exit successfully.
Only relevant when specified explicitly on the command line.
viewer
- Default: "man" on Posix, "browser" on Windows
- Type: path
The program to use to view help content.
Set to "browser" to view html help content in the default web browser.