Skip to content

Commit fc85499

Browse files
committed
feat(cmd): init 和 build 命令可以添加 registry 参数
1 parent 223eb84 commit fc85499

File tree

4 files changed

+50
-22
lines changed

4 files changed

+50
-22
lines changed

lib/commands/build.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,20 @@ exports.usage = '线上编译';
1919
exports.setOptions = function (optimist) {
2020
optimist.alias('m', 'min');
2121
optimist.describe('m', '是否压缩资源');
22+
optimist.alias('r', 'registry');
23+
optimist.describe('r', '指定 npm 仓库');
2224
};
2325

2426
exports.npmInstall = function () {
2527
var currentNpm = null;
2628
var cwd = process.cwd();
29+
var userRegistry = 'http://npmrepo.corp.qunar.com';
30+
31+
for (var i = 0; i < process.argv.length; i++) {
32+
if (process.argv[i] === '--registry' || process.argv[i] === '-r') {
33+
userRegistry = process.argv[i + 1];
34+
}
35+
}
2736

2837
// 检测是否存在 ykit.*.js
2938
var configFile = globby.sync(['ykit.*.js', 'ykit.js'], { cwd: cwd })[0];
@@ -70,11 +79,11 @@ exports.npmInstall = function () {
7079
}
7180

7281
// install
73-
var installParams = '--registry https://repo.corp.qunar.com/artifactory/api/npm/npm-qunar ';
82+
var installParams = '--registry ' + userRegistry;
7483
if (currentNpm === 'npm_cache_share') {
75-
installParams += '-d';
84+
installParams += ' -d';
7685
} else if (currentNpm === 'yarn') {
77-
installParams += '--non-interactive';
86+
installParams += ' --non-interactive';
7887
}
7988
var installCmd = currentNpm + ' install ' + installParams;
8089

lib/commands/init.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,14 @@ var UtilFs = require('../utils/fs.js');
1111
exports.usage = '项目初始化';
1212
exports.abbr = 'i';
1313

14-
exports.setOptions = function () {};
14+
exports.setOptions = function () {
15+
optimist.alias('r', 'registry');
16+
optimist.describe('r', '指定 npm 仓库');
17+
};
1518

1619
exports.run = function (options) {
20+
var userRegistry = options.r || options.registry;
21+
1722
Manager.reloadRC();
1823

1924
var cwd = options.cwd,
@@ -35,7 +40,7 @@ exports.run = function (options) {
3540
var checkConfigPkg = function checkConfigPkg(callback, packageName, registry) {
3641
if (!isInitReady) {
3742
var timeout = void 0;
38-
var child = shell.exec('npm view ' + packageName + ' --registry https://' + registry, {
43+
var child = shell.exec('npm view ' + packageName + ' --registry ' + registry, {
3944
silent: true
4045
}, function (code, stdout, stderr) {
4146
if (stdout) {
@@ -56,24 +61,24 @@ exports.run = function (options) {
5661
};
5762

5863
var initParam = process.argv[3];
59-
var qunarRegistry = 'repo.corp.qunar.com/artifactory/api/npm/npm-qunar';
60-
var taobaoRegistry = 'registry.npm.taobao.org';
64+
var qunarRegistry = 'http://npmrepo.corp.qunar.com';
65+
var taobaoRegistry = 'https://registry.npm.taobao.org';
6166
var isInitReady = false;
6267

6368
spinner.start();
6469
spinner.text = 'Checking package ykit-config-' + initParam;
6570
async.series([
6671
// qnpm 寻找是否存在 @qnpm/ykit-config-xxx 的插件
6772
function (callback) {
68-
checkConfigPkg(callback, '@qnpm/ykit-config-' + initParam, qunarRegistry);
73+
checkConfigPkg(callback, '@qnpm/ykit-config-' + initParam, userRegistry || qunarRegistry);
6974
},
7075
// qnpm 寻找是否存在 ykit-config-xxx 的插件
7176
function (callback) {
72-
checkConfigPkg(callback, 'ykit-config-' + initParam, qunarRegistry);
77+
checkConfigPkg(callback, 'ykit-config-' + initParam, userRegistry || qunarRegistry);
7378
},
7479
// cnpm 寻找是否存在 ykit-config-xxx 的插件
7580
function (callback) {
76-
checkConfigPkg(callback, 'ykit-config-' + initParam, taobaoRegistry);
81+
checkConfigPkg(callback, 'ykit-config-' + initParam, userRegistry || taobaoRegistry);
7782
}], function () {
7883
if (isInitReady) {
7984
spinner.stop();
@@ -116,7 +121,7 @@ exports.run = function (options) {
116121
function installConfigPlugin(callback, configPkgName, registry) {
117122
log('Install ' + configPkgName + '...');
118123

119-
shell.exec('npm install ' + configPkgName + ' --registry https://' + registry + ' --save', {
124+
shell.exec('npm install ' + configPkgName + ' --registry ' + registry + ' --save', {
120125
silent: false
121126
}, function (code, stdout, stderr) {
122127
callback(null); // npm install 中的警告也会当成 stderr 输出,所以不在这里做错误处理

src/commands/build.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,20 @@ exports.usage = '线上编译';
1919
exports.setOptions = (optimist) => {
2020
optimist.alias('m', 'min');
2121
optimist.describe('m', '是否压缩资源');
22+
optimist.alias('r', 'registry');
23+
optimist.describe('r', '指定 npm 仓库');
2224
};
2325

2426
exports.npmInstall = function() {
2527
let currentNpm = null;
2628
const cwd = process.cwd();
29+
let userRegistry = 'http://npmrepo.corp.qunar.com';
30+
31+
for(let i = 0; i < process.argv.length; i++) {
32+
if(process.argv[i] === '--registry' || process.argv[i] === '-r' ) {
33+
userRegistry = process.argv[i + 1];
34+
}
35+
}
2736

2837
// 检测是否存在 ykit.*.js
2938
const configFile = globby.sync(['ykit.*.js', 'ykit.js'], { cwd: cwd })[0];
@@ -70,11 +79,11 @@ exports.npmInstall = function() {
7079
}
7180

7281
// install
73-
let installParams = '--registry https://repo.corp.qunar.com/artifactory/api/npm/npm-qunar ';
82+
let installParams = '--registry ' + userRegistry;
7483
if(currentNpm === 'npm_cache_share') {
75-
installParams += '-d';
84+
installParams += ' -d';
7685
} else if (currentNpm === 'yarn') {
77-
installParams += '--non-interactive';
86+
installParams += ' --non-interactive';
7887
}
7988
const installCmd = (
8089
`${currentNpm} install ${installParams}`

src/commands/init.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,14 @@ const UtilFs = require('../utils/fs.js');
1111
exports.usage = '项目初始化';
1212
exports.abbr = 'i';
1313

14-
exports.setOptions = () => {};
14+
exports.setOptions = () => {
15+
optimist.alias('r', 'registry');
16+
optimist.describe('r', '指定 npm 仓库');
17+
};
1518

1619
exports.run = function(options) {
20+
const userRegistry = options.r || options.registry;
21+
1722
Manager.reloadRC();
1823

1924
let cwd = options.cwd,
@@ -33,24 +38,24 @@ exports.run = function(options) {
3338
// 如果初始化时带着初始化类型
3439
if (typeof process.argv[3] === 'string') {
3540
const initParam = process.argv[3];
36-
const qunarRegistry = 'repo.corp.qunar.com/artifactory/api/npm/npm-qunar';
37-
const taobaoRegistry = 'registry.npm.taobao.org';
41+
const qunarRegistry = 'http://npmrepo.corp.qunar.com';
42+
const taobaoRegistry = 'https://registry.npm.taobao.org';
3843
let isInitReady = false;
3944

4045
spinner.start();
4146
spinner.text = `Checking package ykit-config-${initParam}`;
4247
async.series([
4348
// qnpm 寻找是否存在 @qnpm/ykit-config-xxx 的插件
4449
(callback) => {
45-
checkConfigPkg(callback, `@qnpm/ykit-config-${initParam}`, qunarRegistry);
50+
checkConfigPkg(callback, `@qnpm/ykit-config-${initParam}`, userRegistry || qunarRegistry);
4651
},
4752
// qnpm 寻找是否存在 ykit-config-xxx 的插件
4853
(callback) => {
49-
checkConfigPkg(callback, `ykit-config-${initParam}`, qunarRegistry);
54+
checkConfigPkg(callback, `ykit-config-${initParam}`, userRegistry || qunarRegistry);
5055
},
5156
// cnpm 寻找是否存在 ykit-config-xxx 的插件
5257
(callback) => {
53-
checkConfigPkg(callback, `ykit-config-${initParam}`, taobaoRegistry);
58+
checkConfigPkg(callback, `ykit-config-${initParam}`, userRegistry || taobaoRegistry);
5459
}
5560
], () => {
5661
if (isInitReady) {
@@ -64,7 +69,7 @@ exports.run = function(options) {
6469
function checkConfigPkg(callback, packageName, registry) {
6570
if (!isInitReady) {
6671
let timeout;
67-
const child = shell.exec(`npm view ${packageName} --registry https://${registry}`, {
72+
const child = shell.exec(`npm view ${packageName} --registry ${registry}`, {
6873
silent: true
6974
}, (code, stdout, stderr) => {
7075
if (stdout) {
@@ -112,7 +117,7 @@ exports.run = function(options) {
112117
function installConfigPlugin(callback, configPkgName, registry) {
113118
log('Install ' + configPkgName + '...');
114119

115-
shell.exec(`npm install ${configPkgName} --registry https://${registry} --save`, {
120+
shell.exec(`npm install ${configPkgName} --registry ${registry} --save`, {
116121
silent: false
117122
}, (code, stdout, stderr) => {
118123
callback(null); // npm install 中的警告也会当成 stderr 输出,所以不在这里做错误处理

0 commit comments

Comments
 (0)