npm-config

483 阅读1分钟

配置项定义

lib/utils/config/definitions.js

数据结构

class Definition

{
  default, - 配置项默认值
  defaultDescription, - 配置项默认值描述
  type, - 配置项类型,StringNumberBooleanArray
  description, 配置项用法描述
  deprecated, - 配置项deprecated描述
  flatten, 配置项key转成camelCase,并聚合
  hint, - 配置项用法提示
  key, - 配置项键
  typeDescription, - 配置项类型描述
  envExport, - 配置项是否导出到环境变量
}

执行流程

  • 收集各类配置

  • 收集default,设置this.defaults

  • 收集type,设置this.types

  • 收集deprecated,设置this.deprecated

  • 收集shorthands,设置this.shorthands

  • 设置npmPath,Npm构造器所在目录path,即{globalPrefix}/node_modules/npm

  • 设置argv,即process.argv

  • 设置env,即process.env

  • 设置execPath,即node runtime bin路径,/usr/local/bin/node

  • 按wheres={ 'default', 'builtin', 'global', 'user', 'project', 'env', 'cli' }顺序设置configData,this.data形成原型链

  • loadDefaults,加载所有配置项的默认值,设置metrics-registry->registrygetter,globalconfig全局文件路径getter->{prefix}/etc/npmrc

  • loadGlobalPrefix

  • loadHome

  • loadBuiltinConfig,加载npm全局npmrc文件配置

  • loadCLI,nopt(this.types, this.shorthands, this.argv)获取命令行参数

  • loadEnv,加载npm_config_环境变量

  • loadProjectConfig,项目目录下.npmrc文件配置

  • loadUserConfig,加载用户npmrc文件配置,默认~/.npmrc,可通过npm config设置

  • loadGlobalConfig,加载全局npmrc文件配置,默认globalconfig->{prefix}/etc/npmrc

    this.data = new Map() let parent = null for (const where of wheres) { this.data.set(where, parent = new ConfigData(parent)) }

    class ConfigData { constructor (parent) { this[_data] = Object.create(parent && parent.data) } }

Set

npm config set = [= ...]

快键方式npm set = [= ...]

Get

npm config get [ [ ...]]

快键方式npm get [ [ ...]]

options flags

-L

控制配置项存放位置

  • user:userconfig -> ~/.npmrc,用户级配置文件

  • global:globalconfig -> /usr/local/etc/npmrc,全局级配置文件

  • project,当前项目目录node_modules同层级.npmrc,项目级配置文件