npm 经常使用配置

官方文档:docs.npmjs.com/misc/confightml

npm 配置来源

npm 从如下来源获取配置信息(优先级由高到低):node

命令行选项

  • 在命令行中用 --foo bar 设置配置参数 foo 的值为 "bar"
  • CLI 解析器碰到 -- 时中止读取配置参数值。
  • 使用 --foo 而不指定任何值时,设置配置参数 foo 的值为 true

示例:shell

# 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 文件(优先级由高到低):npm

  • 项目配置文件(/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 默认配置参数。json

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

若是指定的配置参数缩写能够无歧义地解析为一个已知的配置参数,它将会被解析为该配置参数,示例:bash

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 配置覆盖参数值。示例:ui

{
    "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…url

常见配置参数:spa

  • 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]
复制代码
相关文章
相关标签/搜索