今天看啥  ›  专栏  ›  yuanhjty

npm 常用配置

yuanhjty  · 掘金  ·  · 2019-03-25 10:22
阅读 19

npm 常用配置

官方文档: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]
复制代码



原文地址:访问原文地址
快照地址: 访问文章快照