csmall-theme
Version:
自用资源,不负责对外的使用解答
69 lines (58 loc) • 1.63 kB
JavaScript
const root = process.cwd();
const childProcess = require('child_process');
const themeConfig = require('./theme-config')(root);
let buildJs = true;
let items = null;
if(process.argv[2] && process.argv[2].trim() !== 'all'){
items = process.argv[2].split(',');
buildJs = false;
}
if(items){
items.map(key => {
if(!themeConfig.keys.includes(key)){
console.warn('Theme key: ' + key + ' not exists! from items.map');
process.exit();
}
});
}else{
items = themeConfig.keys;
}
if(process.env.npm_lifecycle_event === 'build-test'){
process.env.buildMode = 'test';
}else{
process.env.buildMode = 'production';
}
if(process.env.npm_lifecycle_event === 'build-theme'){
buildJs = false;
}
function execBuild(key, clean){
if(key !== 'false'){
console.info('>>>Start build theme: ' + key);
}
process.env.themeKey = key;
if(items.length){
process.env.onlyBuildTheme = 1;
}else if(buildJs){
process.env.onlyBuildTheme = 0;
}else{
process.env.onlyBuildTheme = process.argv[3] !== 'false'? 1: 0;
}
process.env.cleanExpiredCompiled = clean;
const child = childProcess.spawn('npm run build-release', [], {
stdio: 'inherit',
encoding: 'utf8',
shell: true,
timeout: 0,
killSignal: 'SIGTERM',
setsid: false,
cwd: root,
env: process.env
});
child.on('close', () => {
if(items.length > 0){
execBuild(items.shift(), 0);
}
});
}
execBuild(items.length? items.shift(): 'false', 1);