custom-app
Version:
ITIMS��Ʒ�鿪��ר��React���,�Dz��ý��ּ�dhcc-app���������
151 lines (135 loc) • 4.7 kB
JavaScript
let exec = require('child_process').exec;
let spinner = require('../util/spinner');
let chalk = require('chalk')
let path = require('path');
let fs = require("fs");
let execList = [];
let initNRM = function () {
return new Promise(function (resolve, reject) {
spinner.logWithSpinner('', chalk.cyan('nrm init start'))
var install_webpack = 'npm install -g nrm';
exec(install_webpack, { cwd: execPath }, function (err, stdout, stderr) {
if (err) {
console.error(chalk.red('nrm 初始化失败:' + stderr));
console.log(stdout);
spinner.stopSpinner();
} else {
spinner.logWithSpinner('', stdout)
spinner.logWithSpinner(chalk.cyan('nrm init complete'))
spinner.logWithSpinner(' ');
resolve();
}
});
})
}
execList.push(initNRM);
let useNPMRegistry = function () {
return new Promise(function (resolve, reject) {
spinner.logWithSpinner('', chalk.cyan('nrm use npm start'))
var install_webpack = 'nrm use taobao';
exec(install_webpack, { cwd: execPath }, function (err, stdout, stderr) {
if (err) {
console.error(chalk.red('nrm use taobao失败:' + stderr));
spinner.stopSpinner();
} else {
spinner.logWithSpinner('', stdout)
spinner.logWithSpinner(chalk.cyan('nrm use taobao complete'))
spinner.logWithSpinner(' ');
resolve();
}
});
})
}
execList.push(useNPMRegistry);
let addDHCCRegistry = function () {
return new Promise(function (resolve, reject) {
spinner.logWithSpinner('', chalk.cyan('nrm dhcc init start'))
var install_webpack = 'nrm add dhcc http://172.24.24.236:8081/repository/npmGroup24.236/';
exec(install_webpack, { cwd: execPath }, function (err, stdout, stderr) {
if (err) {
console.error(chalk.red('nrm dhcc 初始化失败:' + stderr));
spinner.stopSpinner();
} else {
spinner.logWithSpinner('', stdout)
spinner.logWithSpinner(chalk.cyan('nrm dhcc init complete'))
spinner.logWithSpinner(' ');
resolve();
}
});
})
}
//execList.push(addDHCCRegistry);
let useDHCCRegistry = function () {
return new Promise(function (resolve, reject) {
spinner.logWithSpinner('', chalk.cyan('nrm use dhcc start'))
var install_webpack = 'nrm use dhcc';
exec(install_webpack, { cwd: execPath }, function (err, stdout, stderr) {
if (err) {
console.error(chalk.red('nrm use dhcc失败:' + stderr));
spinner.stopSpinner();
} else {
spinner.logWithSpinner('', stdout)
spinner.logWithSpinner(chalk.cyan('nrm use dhcc complete'))
spinner.logWithSpinner(' ');
resolve();
}
});
})
}
//execList.push(useDHCCRegistry);
let Install2ndpage = function () {
return new Promise(function (resolve, reject) {
spinner.logWithSpinner('', chalk.cyan('itims4-2ndpage init start'))
var install_webpack = 'npm install itims4-2ndpage -g';
exec(install_webpack, { cwd: execPath }, function (err, stdout, stderr) {
if (err) {
console.error(chalk.red('itims4-2ndpage 安装失败:' + stderr));
spinner.stopSpinner();
} else {
spinner.logWithSpinner('', stdout)
spinner.logWithSpinner(chalk.cyan('itims4-2ndpage init complete'))
spinner.logWithSpinner(' ');
resolve();
}
});
})
}
execList.push(Install2ndpage);
//安装webpack webpack-cli
let loadDEMO = function () {
return new Promise(function (resolve, reject) {
spinner.logWithSpinner('', chalk.cyan('itims4-2ndpage DEMO installing'))
var install_webpack = 'itims4 initTpl dpList';
exec(install_webpack, { cwd: execPath }, function (err, stdout, stderr) {
if (err) {
console.error(chalk.red('itims4-2ndpage DEMO 安装失败:' + stderr));
spinner.stopSpinner();
} else {
spinner.logWithSpinner('', stdout)
spinner.logWithSpinner(chalk.cyan('itims4-2ndpage DEMO installed complete'))
spinner.logWithSpinner(' ', ' ');
resolve();
}
});
})
}
execList.push(loadDEMO);
async function queue (arr) {
let res = null
for (let promise of arr) {
res = await promise(res)
}
return await res
}
var execPath;
module.exports = function (reactAppPath, callback) {
execPath = reactAppPath;
if (!fs.existsSync(execPath)) {
chalk.cyan('根目录下创建src目录')
fs.mkdirSync(execPath);
}
queue(execList)
.then(data => {
callback && callback.call();
})
}