npm 常用配置

yuanhjty發表於2019-03-23

官方文件: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

    npm-cache

  • color

    • Default: true
    • type: Boolean 或 "always"

    如果為 false,永遠不彩色列印,如果為 "always",永遠彩色列印,如果為 true,只彩色列印 tty file descriptors。

    當環境變數 NO_COLOR 設定為任何值時,禁用彩色列印。

  • depth

    • Default: Infinity
    • Type: Number

    執行 npm ls, npm cache ls, npm outdated 命令時,遞迴目錄的深度。

    對於 npm outdated 時,Infinity 將會被視為 0。想要檢查多有包及其依賴包,需要使用一個大整數,例如:npm outdated --depth 9999

  • dry-run

    • Default: false
    • Type: Boolean

    若設定為 true,npm 只報告要做什麼,而不會付諸行動。

  • global

    • Default: false
    • Type: Boolean

    若設定為 true,在 "global" 模式下執行命令:

    • npm 包會被安裝到 {prefix}/lib/node_modules 目錄而不是當前工作目錄。
    • bin 檔案連結到 {prefix}/bin 目錄
    • man pages 連結到 {prefix}/share/man 目錄
  • globalconfig

    • Default: {prefix}/et/npmrc
    • Type: path
  • https_proxy

    • Default: null
    • Type: url
  • long

    • Default: false
    • Type: Boolean

    執行 npm lsnpm search 列印詳細資訊。

  • node-version

    • Default: precess.version
    • Type: semver or false

    檢查 package.json 中的 engines 欄位時使用的 node 版本號。

  • onload-script

    • Default: false
    • Type: path

    npm 啟動時 require() 的指令碼。

  • optional

    • Default: false
    • Type: Boolean

    嘗試安裝 optionalDependencies 物件中的包,如果這些包安裝失敗,不阻礙其他包的安裝。

  • package-lock

    • Default: true
    • Type: Boolean

    如果設為 false,在 npm install 時忽略 package-lock.json。

    當 package-locks 被禁用時,多餘模組的自動裁剪也會被禁用。此時,移除多餘模組要使用 npm prune 命令

  • parseable

    • Default: false
    • Type: Boolean

    讓執行的命令輸出可解析的結果。對於 npm search,指定該選項將會以 tab 分隔的格式輸出結果。

  • prefix

    • Default: 與 node 安裝路徑有關,node 安裝在 {prefix}/bin 目錄下。
    • Type: path

    全域性包的安裝位置。如果再命令列中指定,則在指定目錄執行非全域性命令。

  • production

    • Default: false
    • Type: Boolean

    設定為 true 時:

    • 不帶引數執行 npm install 時,不會在專案的 node_modules 目錄的的直接子目錄中安裝 devDependencies 中的包。
    • 為生命週期鉤子指令碼設定環境變數:NODE_ENV=production
  • progress

    • Default: true, 除非已通過 TRAVIS 或 CI 環境變數設定.
    • Type: Boolean

    是否為時間敏感的操作顯示進度條。

  • proxy

    • Default: null
    • Type: url

    如果設定了 HTTP_PROXYhttp_proxy 環境變數,底層請求庫將使用代理設定。

  • registry

    npm 源地址。

  • rollback

    • Default: true
    • Type: Boolean

    是否移除安裝失敗的包。

  • save

    • Default: true
    • Type: Boolean

    只在當前目錄中存在 package.json 檔案時有效。執行 npm install ... 時,將安裝的包加入 dependencies,執行 npm rm ... 時將刪除的包從 dependencies 中移除。

  • save-dev

    • Default: false
    • Type: Boolean

    類似 save 引數,相應的 package.json 欄位:devDependencies

  • save-optional

    • Default: false
    • Type: Boolean

    類似 save 引數,相應的 package.json 欄位:optionalDependencies

  • save-exact

    • Default: false
    • Type: Boolean

    如果設定為 true,使用 --save,--save-dev--save-optional 儲存到 package.json 中的依賴包的會被配置為確定的版本,而不使用 npm 預設的語義化版本範圍符號(semver range operator)。

  • 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。

  • 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。

  • userconfig

    • Default: ~/.npmrc
    • Type: path
  • 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]
複製程式碼

相關文章