@ygyg/yg-cli
Version:
A simple CLI for front-end engineering automation construction tool.
62 lines (47 loc) • 1.87 kB
JavaScript
// gulpfile.js YGUI Web Gulp 工作流
const gulp = require('gulp');
const fs = require('fs');
const yargs = require('yargs');
// const knownOptions = {
// default: {
// env: process.env.NODE_ENV || 'production',
// cfg: '',
// },
// };
// const options = minimist(process.argv.slice(2), knownOptions);
// mix.util.log(yargs.argv);
const options = yargs.argv;
// const myCfg = options.cfg ? '-' + options.cfg : '';
const myCfg = options.cfg ? options.cfg.split(',') : '';
const myChannel = options.channel ? options.channel.split(',') : '';
const isDebug = !!options.debug;
const mix = new (require('./Mix.js'))(gulp);
// 载入基础任务
const basicTaskPath = 'basicTasks';
const combinedTaskPath = '';
const basicTaskPathFilterCallback = file => file.match(/js$/); // 排除非 JS 文件,如 Vim 临时文件
mix.util.log('当前项目运行的 文件夹: ' + mix.util.colors.green(myCfg));
const complex = require('./complex')(gulp, mix, myCfg, myChannel, isDebug);
mix.complex = complex;
fs.readdirSync(basicTaskPath)
.filter(basicTaskPathFilterCallback)
.sort()
.forEach(file => {
require('./' + basicTaskPath + '/' + file)(gulp, mix, myCfg);
});
// 载入复合任务
// 载入 watch 任务
require('./' + combinedTaskPath + '/watch')(gulp, mix);
// 载入自定义任务
if (mix.config.customTasks) {
Object.keys(mix.config.customTasks).forEach(customTaskName => {
require('./' + mix.config.customTasks[customTaskName])(gulp, mix);
});
}
// 载入 start 和 initProject 任务
['start', 'initProject'].forEach(file => {
require('./' + combinedTaskPath + '/' + file)(gulp, mix);
});
gulp.task('build', gulp.series('clean', 'initBuild'));
gulp.task('resultVerify', gulp.series('initVerifyJson', 'initVerifyFolders')); // , 'validFolder'
// gulp.task('resultVerify').description = '验证文件夹build结果';