配置项定义
lib/utils/config/definitions.js
数据结构
class Definition
{
default, - 配置项默认值
defaultDescription, - 配置项默认值描述
type, - 配置项类型,String、Number、Boolean、Array
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,项目级配置文件