Skip to content

Commit

Permalink
删除 iojs、npm 相关的环境变量设置功能
Browse files Browse the repository at this point in the history
  • Loading branch information
gucong3000 committed May 22, 2023
1 parent 59f4fe6 commit d360e89
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 92 deletions.
27 changes: 18 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,21 +32,25 @@ registry.npmjs.com 镜像URL
### `--bin-mirrors-prefix=https://cdn.npmmirror.com/binaries`
npmmirror.com/mirrors 镜像URL,会覆盖下文中的`{bin-mirrors}`

### `--xxx-mirrors-prefix=https://some.com/mirrors`
自定义镜像URL字面量`{xxx-mirrors}`

### `--http-proxy=https://my.proxy.com`
### `--https-proxy=https://my.proxy.com`
代理配置,默认从操作系统设置中读取

### `--nodejs-org-mirror={bin-mirrors}/node` (别名: `--disturl`)
nodejs.org/dist 镜像URL
### `--disturl={bin-mirrors}/node` (别名: `--node-mirror``--nodejs-org-mirror`)
nodejs.org/dist 镜像URL 默认值为`{bin-mirrors}/node`

### `--iojs-org-mirror={bin-mirrors}/iojs`
iojs.org/dist 镜像URL
### 其他
其他参数将被写入`.npmrc`文件中,如

### `--nvmw-npm-mirror={bin-mirrors}/npm`
github.com/npm/npm/releases 镜像URL
```bash
# 在`~/.npmrc`加入自定义设置项 canvas-binary-mirror
mirror-config-china --ali-mirrors-prefix=https://mirrors.aliyun.com --canvas-binary-mirror={ali-mirrors}/canvas-prebuilt

### 其他
其他参数将被写入`.npmrc`文件中
npm i -g mirror-config-china --canvas-binary-mirror=https://mirrors.aliyun.com/canvas-prebuilt
```

## 安装成功后,针对以下组件的镜像URL,将被写入npm用户配置文件(~/.npmrc)中

Expand Down Expand Up @@ -80,7 +84,12 @@ Windows 下会写入注册表:`HKLM/SYSTEM/CurrentControlSet/Control/Session Man

[Homebrew](https://brew.sh/index_zh-cn)`HOMEBREW_BOTTLE_DOMAIN` 写入国内源(清华)

Node.js IO.js 的国内版本下载地址镜像写入`NODEJS_ORG_MIRROR``IOJS_ORG_MIRROR` 等几个环境变量
Node.js IO.js 的镜像下载地址镜像写入`NVM_NODEJS_ORG_MIRROR``N_NODE_MIRROR` 等几个环境变量

-[Node Version Manager](https://github.com/creationix/nvm)
-[n](https://github.com/tj/n)
-[nodist](https://github.com/marcelklehr/nodist)
-[Node Version Manager for Windows](https://github.com/hakobera/nvmw)

PATH 环境变量中加入`node_modules/.bin`这个路径,方便调用 mocha、eslint 等命令行工具

Expand Down
53 changes: 15 additions & 38 deletions lib/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -141,21 +141,12 @@ async function getConf (argv) {
} else if (/^(https?)[-_]proxy$/i.test(key)) {
key = RegExp.$1.toLowerCase();
env[key + '_proxy'] = value;
key = key + '-proxy';
return;
} else if (/^env-/i.test(key)) {
env[key.slice(4).toUpperCase().replace(/-/g, '_')] = value;
return;
} else if (/^(?:\w+-)*(NODE|IO|NPM)(?:JS)?(?:-?ORG)?-MIRROR$/i.test(key)) {
key = RegExp.$1.toUpperCase();
env[key === 'NPM' ? 'NVMW_NPM_MIRROR' : (key + 'JS_ORG_MIRROR')] = value;
if (key === 'NODE') {
key = 'disturl';
} else {
return;
}
} else if (/^disturl$/i.test(key)) {
env.NODEJS_ORG_MIRROR = value;
} else if (/^(\w+-)*NODE(JS)?(-?ORG)?-MIRROR$/i.test(key)) {
key = 'disturl';
}
npmrc[key.toLowerCase()] = value;
});
Expand All @@ -172,33 +163,19 @@ async function getConf (argv) {
fixUrl(env);
fixUrl(npmrc);

[
'NODEJS',
'IOJS',
].forEach(project => {
const propName = project + '_ORG_MIRROR';
(
isWin
? [
// https://github.com/hakobera/nvmw/
'NVMW_' + propName,
// https://github.com/marcelklehr/nodist
'NODIST_' + project.slice(0, 4) + '_MIRROR',
]
: [
// https://github.com/creationix/nvm
'NVM_' + propName,
// https://github.com/tj/n
'N_' + project.slice(0, -2) + '_MIRROR',
]
).filter(Boolean).forEach(prefixPropName => {
Object.defineProperty(env, prefixPropName, {
set: (value) => {
env[propName] = value;
},
get: () => env[propName],
enumerable: true,
});
const envNameList = [
'NODEJS_ORG_MIRROR',
'NODE_MIRROR',
];
(isWin ? ['NVMW', 'NODIST'] : ['NVM', 'N']).map(
(prefix, i) => `${prefix}_${envNameList[i]}`,
).concat(envNameList).forEach(envName => {
Object.defineProperty(env, envName, {
set: (value) => {
npmrc.disturl = value;
},
get: () => npmrc.disturl,
enumerable: true,
});
});

Expand Down
50 changes: 11 additions & 39 deletions test/env.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,45 +13,27 @@ describe('environment variables', () => {
assert.strictEqual(env.NODEJS_ORG_MIRROR, 'https://cdn.npmmirror.com/binaries/node');
});

it('IOJS_ORG_MIRROR', () => {
assert.strictEqual(env.IOJS_ORG_MIRROR, 'https://cdn.npmmirror.com/binaries/iojs');
it('NODE_MIRROR', () => {
assert.strictEqual(env.NODE_MIRROR, 'https://cdn.npmmirror.com/binaries/node');
});

if (process.platform === 'win32') {
it('NVMW_NODEJS_ORG_MIRROR', () => {
assert.strictEqual(env.NVMW_NODEJS_ORG_MIRROR, 'https://cdn.npmmirror.com/binaries/node');
});
it('NVMW_IOJS_ORG_MIRROR', () => {
assert.strictEqual(env.NVMW_IOJS_ORG_MIRROR, 'https://cdn.npmmirror.com/binaries/iojs');
});

it('NVMW_NPM_MIRROR', () => {
assert.strictEqual(env.NVMW_NPM_MIRROR, 'https://cdn.npmmirror.com/binaries/npm');
});

it('NODIST_NODE_MIRROR', () => {
assert.strictEqual(env.NODIST_NODE_MIRROR, 'https://cdn.npmmirror.com/binaries/node');
});

it('NODIST_IOJS_MIRROR', () => {
assert.strictEqual(env.NODIST_IOJS_MIRROR, 'https://cdn.npmmirror.com/binaries/iojs');
});
} else {
it('NVM_NODEJS_ORG_MIRROR', () => {
assert.strictEqual(env.NVM_NODEJS_ORG_MIRROR, 'https://cdn.npmmirror.com/binaries/node');
});

it('NVM_IOJS_ORG_MIRROR', () => {
assert.strictEqual(env.NVM_IOJS_ORG_MIRROR, 'https://cdn.npmmirror.com/binaries/iojs');
it('N_NODE_MIRROR', () => {
assert.strictEqual(env.N_NODE_MIRROR, 'https://cdn.npmmirror.com/binaries/node');
});

it('NODE_MIRROR', () => {
assert.strictEqual(env.NODE_MIRROR, 'https://cdn.npmmirror.com/binaries/node');
});

it('IO_MIRROR', () => {
assert.strictEqual(env.IO_MIRROR, 'https://cdn.npmmirror.com/binaries/iojs');
});
if (process.platform === 'darwin') {
it('HOMEBREW_BOTTLE_DOMAIN', () => {
assert.strictEqual(env.HOMEBREW_BOTTLE_DOMAIN, 'https://mirrors.aliyun.com/homebrew/homebrew-bottles');
Expand All @@ -64,30 +46,26 @@ describe('config', () => {
const opts = await config(['--disturl=https://nodejs.mock']);
const env = opts.env;
assert.strictEqual(env.NODEJS_ORG_MIRROR, 'https://nodejs.mock');
assert.strictEqual(env.NODE_MIRROR, 'https://nodejs.mock');
if (process.platform === 'win32') {
assert.strictEqual(env.NVMW_NODEJS_ORG_MIRROR, 'https://nodejs.mock');
assert.strictEqual(env.NODIST_NODE_MIRROR, 'https://nodejs.mock');
} else {
assert.strictEqual(env.NVM_NODEJS_ORG_MIRROR, 'https://nodejs.mock');
assert.strictEqual(env.NODE_MIRROR, 'https://nodejs.mock');
assert.strictEqual(env.N_NODE_MIRROR, 'https://nodejs.mock');
}
});
it('--bin-mirrors-prefix', async () => {
const opts = await config(['--bin-mirrors-prefix=https://mirror.mock']);
const env = opts.env;
assert.strictEqual(env.NODEJS_ORG_MIRROR, 'https://mirror.mock/node');
assert.strictEqual(env.IOJS_ORG_MIRROR, 'https://mirror.mock/iojs');
assert.strictEqual(env.NODE_MIRROR, 'https://mirror.mock/node');
if (process.platform === 'win32') {
assert.strictEqual(env.NVMW_NODEJS_ORG_MIRROR, 'https://mirror.mock/node');
assert.strictEqual(env.NVMW_IOJS_ORG_MIRROR, 'https://mirror.mock/iojs');
assert.strictEqual(env.NVMW_NPM_MIRROR, 'https://mirror.mock/npm');
assert.strictEqual(env.NODIST_NODE_MIRROR, 'https://mirror.mock/node');
assert.strictEqual(env.NODIST_IOJS_MIRROR, 'https://mirror.mock/iojs');
} else {
assert.strictEqual(env.NVM_NODEJS_ORG_MIRROR, 'https://mirror.mock/node');
assert.strictEqual(env.NVM_IOJS_ORG_MIRROR, 'https://mirror.mock/iojs');
assert.strictEqual(env.NODE_MIRROR, 'https://mirror.mock/node');
assert.strictEqual(env.IO_MIRROR, 'https://mirror.mock/iojs');
assert.strictEqual(env.N_NODE_MIRROR, 'https://mirror.mock/iojs');
}
});
it('proxy', async () => {
Expand All @@ -109,23 +87,17 @@ describe('config', () => {
it('--*-mirror', async () => {
const opts = await config([
'--nodejs-org-mirror=https://nodejs.mock',
'--nvm-iojs-mirror=https://iojs.mock',
'--npm-mirror=https://npmjs.mock',
]);
const env = opts.env;
assert.strictEqual(env.IOJS_ORG_MIRROR, 'https://iojs.mock');
assert.strictEqual(env.NODEJS_ORG_MIRROR, 'https://nodejs.mock');
assert.strictEqual(env.NODE_MIRROR, 'https://nodejs.mock');
if (process.platform === 'win32') {
assert.strictEqual(env.NVMW_IOJS_ORG_MIRROR, 'https://iojs.mock');
assert.strictEqual(env.NVMW_NODEJS_ORG_MIRROR, 'https://nodejs.mock');
assert.strictEqual(env.NVMW_NPM_MIRROR, 'https://npmjs.mock');
assert.strictEqual(env.NODEJS_ORG_MIRROR, 'https://nodejs.mock');
assert.strictEqual(env.NODIST_IOJS_MIRROR, 'https://iojs.mock');
assert.strictEqual(env.NODIST_NODE_MIRROR, 'https://nodejs.mock');
} else {
assert.strictEqual(env.NVM_NODEJS_ORG_MIRROR, 'https://nodejs.mock');
assert.strictEqual(env.NVM_IOJS_ORG_MIRROR, 'https://iojs.mock');
assert.strictEqual(env.NODE_MIRROR, 'https://nodejs.mock');
assert.strictEqual(env.IO_MIRROR, 'https://iojs.mock');
assert.strictEqual(env.N_NODE_MIRROR, 'https://nodejs.mock');
}
});
});
6 changes: 0 additions & 6 deletions test/npmrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,6 @@ describe('get config', () => {
assert.strictEqual(npmrc.disturl, 'https://mock.npmjs.org/dist');
assert.ifError(npmrc['nodejs-org-mirror']);
});
it('--nvm-iojs-org-mirror', async () => {
const opts = await config(['--nvm-iojs-org-mirror=https://mock.npmjs.org/dist']);
const npmrc = opts.npmrc;
assert.strictEqual(npmrc.disturl, 'https://cdn.npmmirror.com/binaries/node');
assert.ifError(npmrc['nvm-iojs-org-mirror']);
});
it('--bin-mirrors-prefix', async () => {
const opts = await config(['--bin-mirrors-prefix=https://mirror.mock']);
const npmrc = opts.npmrc;
Expand Down

0 comments on commit d360e89

Please sign in to comment.