mirror of
https://github.com/nodejs/node.git
synced 2025-05-21 17:44:15 +00:00

PR-URL: https://github.com/nodejs/node/pull/37117 Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
395 lines
9.5 KiB
JavaScript
395 lines
9.5 KiB
JavaScript
// defaults, types, and shorthands
|
|
|
|
const {
|
|
typeDefs: {
|
|
semver: { type: semver },
|
|
Umask: { type: Umask },
|
|
url: { type: url },
|
|
path: { type: path },
|
|
},
|
|
} = require('@npmcli/config')
|
|
|
|
const { version: npmVersion } = require('../../package.json')
|
|
|
|
const ciDetect = require('@npmcli/ci-detect')
|
|
const ciName = ciDetect()
|
|
|
|
const isWindows = require('./is-windows.js')
|
|
|
|
const editor = process.env.EDITOR ||
|
|
process.env.VISUAL ||
|
|
(isWindows ? 'notepad.exe' : 'vi')
|
|
|
|
const shell = isWindows ? process.env.ComSpec || 'cmd'
|
|
: process.env.SHELL || 'sh'
|
|
|
|
const { tmpdir, networkInterfaces } = require('os')
|
|
const getLocalAddresses = () => {
|
|
try {
|
|
return Object.values(networkInterfaces()).map(
|
|
int => int.map(({ address }) => address)
|
|
).reduce((set, addrs) => set.concat(addrs), [undefined])
|
|
} catch (e) {
|
|
return [undefined]
|
|
}
|
|
}
|
|
|
|
const unicode = /UTF-?8$/i.test(
|
|
process.env.LC_ALL || process.env.LC_CTYPE || process.env.LANG
|
|
)
|
|
|
|
// use LOCALAPPDATA on Windows, if set
|
|
// https://github.com/npm/cli/pull/899
|
|
const cacheRoot = (isWindows && process.env.LOCALAPPDATA) || '~'
|
|
const cacheExtra = isWindows ? 'npm-cache' : '.npm'
|
|
const cache = `${cacheRoot}/${cacheExtra}`
|
|
|
|
const defaults = {
|
|
access: null,
|
|
all: false,
|
|
'allow-same-version': false,
|
|
also: null,
|
|
'always-auth': false,
|
|
audit: true,
|
|
'audit-level': null,
|
|
_auth: null,
|
|
'auth-type': 'legacy',
|
|
before: null,
|
|
'bin-links': true,
|
|
browser: null,
|
|
ca: null,
|
|
cache,
|
|
'cache-lock-retries': 10,
|
|
'cache-lock-stale': 60000,
|
|
'cache-lock-wait': 10000,
|
|
'cache-max': Infinity,
|
|
'cache-min': 10,
|
|
cafile: null,
|
|
call: '',
|
|
cert: null,
|
|
'ci-name': ciName || null,
|
|
cidr: null,
|
|
color: process.env.NO_COLOR == null,
|
|
'commit-hooks': true,
|
|
depth: null,
|
|
description: true,
|
|
dev: false,
|
|
diff: [],
|
|
'diff-unified': null,
|
|
'diff-ignore-all-space': false,
|
|
'diff-name-only': false,
|
|
'diff-no-prefix': false,
|
|
'diff-src-prefix': '',
|
|
'diff-dst-prefix': '',
|
|
'diff-text': false,
|
|
'dry-run': false,
|
|
editor,
|
|
'engine-strict': false,
|
|
'fetch-retries': 2,
|
|
'fetch-retry-factor': 10,
|
|
'fetch-retry-maxtimeout': 60000,
|
|
'fetch-retry-mintimeout': 10000,
|
|
'fetch-timeout': 5 * 60 * 1000,
|
|
force: false,
|
|
'foreground-script': false,
|
|
'format-package-lock': true,
|
|
fund: true,
|
|
git: 'git',
|
|
'git-tag-version': true,
|
|
global: false,
|
|
'global-style': false,
|
|
// `globalconfig` has its default defined outside of this module
|
|
heading: 'npm',
|
|
'https-proxy': null,
|
|
'if-present': false,
|
|
'ignore-prepublish': false,
|
|
'ignore-scripts': false,
|
|
include: [],
|
|
'include-staged': false,
|
|
'init-author-email': '',
|
|
'init-author-name': '',
|
|
'init-author-url': '',
|
|
'init-license': 'ISC',
|
|
'init-module': '~/.npm-init.js',
|
|
'init-version': '1.0.0',
|
|
'init.author.email': '',
|
|
'init.author.name': '',
|
|
'init.author.url': '',
|
|
'init.license': 'ISC',
|
|
'init.module': '~/.npm-init.js',
|
|
'init.version': '1.0.0',
|
|
json: false,
|
|
key: null,
|
|
'legacy-bundling': false,
|
|
'legacy-peer-deps': false,
|
|
link: false,
|
|
'local-address': undefined,
|
|
loglevel: 'notice',
|
|
'logs-max': 10,
|
|
long: false,
|
|
maxsockets: 50,
|
|
message: '%s',
|
|
'node-options': null,
|
|
'node-version': process.version,
|
|
noproxy: null,
|
|
'npm-version': npmVersion,
|
|
offline: false,
|
|
omit: [],
|
|
only: null,
|
|
optional: true,
|
|
otp: null,
|
|
package: [],
|
|
'package-lock': true,
|
|
'package-lock-only': false,
|
|
parseable: false,
|
|
'prefer-offline': false,
|
|
'prefer-online': false,
|
|
// `prefix` has its default defined outside of this module
|
|
preid: '',
|
|
production: process.env.NODE_ENV === 'production',
|
|
progress: !ciName,
|
|
proxy: null,
|
|
'read-only': false,
|
|
'rebuild-bundle': true,
|
|
registry: 'https://registry.npmjs.org/',
|
|
rollback: true,
|
|
save: true,
|
|
'save-bundle': false,
|
|
'save-dev': false,
|
|
'save-exact': false,
|
|
'save-optional': false,
|
|
'save-prefix': '^',
|
|
'save-prod': false,
|
|
scope: '',
|
|
'script-shell': null,
|
|
'scripts-prepend-node-path': 'warn-only',
|
|
searchexclude: null,
|
|
searchlimit: 20,
|
|
searchopts: '',
|
|
searchstaleness: 15 * 60,
|
|
shell,
|
|
shrinkwrap: true,
|
|
'sign-git-commit': false,
|
|
'sign-git-tag': false,
|
|
'sso-poll-frequency': 500,
|
|
'sso-type': 'oauth',
|
|
'strict-peer-deps': false,
|
|
'strict-ssl': true,
|
|
tag: 'latest',
|
|
'tag-version-prefix': 'v',
|
|
timing: false,
|
|
tmp: tmpdir(),
|
|
umask: 0,
|
|
unicode,
|
|
'update-notifier': true,
|
|
usage: false,
|
|
'user-agent': 'npm/{npm-version} ' +
|
|
'node/{node-version} ' +
|
|
'{platform} ' +
|
|
'{arch} ' +
|
|
'{ci}',
|
|
userconfig: '~/.npmrc',
|
|
version: false,
|
|
versions: false,
|
|
viewer: isWindows ? 'browser' : 'man',
|
|
}
|
|
|
|
const types = {
|
|
access: [null, 'restricted', 'public'],
|
|
all: Boolean,
|
|
'allow-same-version': Boolean,
|
|
also: [null, 'dev', 'development'],
|
|
_auth: [null, String],
|
|
'always-auth': Boolean,
|
|
audit: Boolean,
|
|
'audit-level': ['low', 'moderate', 'high', 'critical', 'none', null],
|
|
'auth-type': ['legacy', 'sso', 'saml', 'oauth'],
|
|
before: [null, Date],
|
|
'bin-links': Boolean,
|
|
browser: [null, Boolean, String],
|
|
ca: [null, String, Array],
|
|
cache: path,
|
|
'cache-lock-retries': Number,
|
|
'cache-lock-stale': Number,
|
|
'cache-lock-wait': Number,
|
|
'cache-max': Number,
|
|
'cache-min': Number,
|
|
cafile: path,
|
|
call: String,
|
|
cert: [null, String],
|
|
'ci-name': [null, String],
|
|
cidr: [null, String, Array],
|
|
color: ['always', Boolean],
|
|
'commit-hooks': Boolean,
|
|
depth: [null, Number],
|
|
description: Boolean,
|
|
dev: Boolean,
|
|
diff: [String, Array],
|
|
'diff-unified': [null, Number],
|
|
'diff-ignore-all-space': Boolean,
|
|
'diff-name-only': Boolean,
|
|
'diff-no-prefix': Boolean,
|
|
'diff-src-prefix': String,
|
|
'diff-dst-prefix': String,
|
|
'diff-text': Boolean,
|
|
'dry-run': Boolean,
|
|
editor: String,
|
|
'engine-strict': Boolean,
|
|
'fetch-retries': Number,
|
|
'fetch-retry-factor': Number,
|
|
'fetch-retry-maxtimeout': Number,
|
|
'fetch-retry-mintimeout': Number,
|
|
'fetch-timeout': Number,
|
|
force: Boolean,
|
|
'foreground-script': Boolean,
|
|
'format-package-lock': Boolean,
|
|
fund: Boolean,
|
|
git: String,
|
|
'git-tag-version': Boolean,
|
|
global: Boolean,
|
|
'global-style': Boolean,
|
|
globalconfig: path,
|
|
heading: String,
|
|
'https-proxy': [null, url],
|
|
'if-present': Boolean,
|
|
'ignore-prepublish': Boolean,
|
|
'ignore-scripts': Boolean,
|
|
include: [Array, 'prod', 'dev', 'optional', 'peer'],
|
|
'include-staged': Boolean,
|
|
'init-author-email': String,
|
|
'init-author-name': String,
|
|
'init-author-url': ['', url],
|
|
'init-license': String,
|
|
'init-module': path,
|
|
'init-version': semver,
|
|
'init.author.email': String,
|
|
'init.author.name': String,
|
|
'init.author.url': ['', url],
|
|
'init.license': String,
|
|
'init.module': path,
|
|
'init.version': semver,
|
|
json: Boolean,
|
|
key: [null, String],
|
|
'legacy-bundling': Boolean,
|
|
'legacy-peer-deps': Boolean,
|
|
link: Boolean,
|
|
'local-address': getLocalAddresses(),
|
|
loglevel: [
|
|
'silent',
|
|
'error',
|
|
'warn',
|
|
'notice',
|
|
'http',
|
|
'timing',
|
|
'info',
|
|
'verbose',
|
|
'silly',
|
|
],
|
|
'logs-max': Number,
|
|
long: Boolean,
|
|
maxsockets: Number,
|
|
message: String,
|
|
'node-options': [null, String],
|
|
'node-version': [null, semver],
|
|
noproxy: [null, String, Array],
|
|
'npm-version': semver,
|
|
offline: Boolean,
|
|
omit: [Array, 'dev', 'optional', 'peer'],
|
|
only: [null, 'dev', 'development', 'prod', 'production'],
|
|
optional: Boolean,
|
|
otp: [null, String],
|
|
package: [String, Array],
|
|
'package-lock': Boolean,
|
|
'package-lock-only': Boolean,
|
|
parseable: Boolean,
|
|
'prefer-offline': Boolean,
|
|
'prefer-online': Boolean,
|
|
prefix: path,
|
|
preid: String,
|
|
production: Boolean,
|
|
progress: Boolean,
|
|
proxy: [null, false, url], // allow proxy to be disabled explicitly
|
|
'read-only': Boolean,
|
|
'rebuild-bundle': Boolean,
|
|
registry: [null, url],
|
|
rollback: Boolean,
|
|
save: Boolean,
|
|
'save-bundle': Boolean,
|
|
'save-dev': Boolean,
|
|
'save-exact': Boolean,
|
|
'save-optional': Boolean,
|
|
'save-prefix': String,
|
|
'save-prod': Boolean,
|
|
scope: String,
|
|
'script-shell': [null, String],
|
|
'scripts-prepend-node-path': [Boolean, 'auto', 'warn-only'],
|
|
searchexclude: [null, String],
|
|
searchlimit: Number,
|
|
searchopts: String,
|
|
searchstaleness: Number,
|
|
shell: String,
|
|
shrinkwrap: Boolean,
|
|
'sign-git-commit': Boolean,
|
|
'sign-git-tag': Boolean,
|
|
'sso-poll-frequency': Number,
|
|
'sso-type': [null, 'oauth', 'saml'],
|
|
'strict-peer-deps': Boolean,
|
|
'strict-ssl': Boolean,
|
|
tag: String,
|
|
'tag-version-prefix': String,
|
|
timing: Boolean,
|
|
tmp: path,
|
|
umask: Umask,
|
|
unicode: Boolean,
|
|
'update-notifier': Boolean,
|
|
usage: Boolean,
|
|
'user-agent': String,
|
|
userconfig: path,
|
|
version: Boolean,
|
|
versions: Boolean,
|
|
viewer: String,
|
|
}
|
|
|
|
const shorthands = {
|
|
'?': ['--usage'],
|
|
a: ['--all'],
|
|
B: ['--save-bundle'],
|
|
C: ['--prefix'],
|
|
c: ['--call'],
|
|
D: ['--save-dev'],
|
|
d: ['--loglevel', 'info'],
|
|
dd: ['--loglevel', 'verbose'],
|
|
ddd: ['--loglevel', 'silly'],
|
|
desc: ['--description'],
|
|
E: ['--save-exact'],
|
|
'enjoy-by': ['--before'],
|
|
f: ['--force'],
|
|
g: ['--global'],
|
|
H: ['--usage'],
|
|
h: ['--usage'],
|
|
help: ['--usage'],
|
|
l: ['--long'],
|
|
local: ['--no-global'],
|
|
m: ['--message'],
|
|
n: ['--no-yes'],
|
|
'no-desc': ['--no-description'],
|
|
'no-reg': ['--no-registry'],
|
|
noreg: ['--no-registry'],
|
|
O: ['--save-optional'],
|
|
P: ['--save-prod'],
|
|
p: ['--parseable'],
|
|
porcelain: ['--parseable'],
|
|
q: ['--loglevel', 'warn'],
|
|
quiet: ['--loglevel', 'warn'],
|
|
readonly: ['--read-only'],
|
|
reg: ['--registry'],
|
|
S: ['--save'],
|
|
s: ['--loglevel', 'silent'],
|
|
silent: ['--loglevel', 'silent'],
|
|
v: ['--version'],
|
|
verbose: ['--loglevel', 'verbose'],
|
|
y: ['--yes'],
|
|
}
|
|
|
|
module.exports = { defaults, types, shorthands }
|