官方文件: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]
複製程式碼