UNPKG

3.04 kBJavaScriptView Raw
1'use strict';
2
3const inquirer = require('inquirer'),
4 T = require('../lib/tools'),
5 Gupack = require('../lib/config/gupack');
6
7let config, gupack;
8const prompt = inquirer.createPromptModule();
9
10function checkConfig() {
11 // 项目列表
12 config = T.getConfig();
13 if (!config) {
14 T.log.error('× 不是有效的项目:缺少配置文件(src/gupack-config.js) ');
15 }
16
17 gupack = new Gupack(config);
18 // 编译前是否清理相关目录
19 gupack.startClean = T.hasArg(['c', 'clear-dest']) || gupack.startClean;
20}
21
22// task as gulp task
23// 支持指定多个任务 gupack task build.css+build.html
24// 如果不指定任务,将会从当前项目配置中读取供选择(可多选) gupack task
25function task(name) {
26 _logEnv('Build single task');
27 checkConfig();
28 const taskName = name || T.argv._[1];
29 if (!!taskName) {
30 gupack.runTask(taskName.split(/\+/i));
31 } else {
32 let tasks = config.buildTasks;
33 prompt([{
34 type: 'checkbox',
35 name: 'tname',
36 message: '请选择单独编译的任务: ',
37 choices: Object.keys(tasks)
38 }]).then(awn => {
39 gupack.runTask(awn.tname);
40 });
41 }
42}
43
44// build project
45function build() {
46 _logEnv('Build');
47 checkConfig();
48 if (T.hasArg(['t', 'task'])) {
49 let taskName = T.getArg(['t', 'task']);
50 return task(taskName);
51 }
52 gupack.run();
53}
54
55// gupack start projectName
56function start() {
57 checkConfig();
58 gupack.runIndex = 1;
59 gupack.run();
60}
61
62// 编译并发布(部署)
63function deploy() {
64 _logEnv('Deploy');
65 checkConfig();
66 gupack.runDeploy();
67}
68
69// 编译并发布(部署)
70function publish() {
71 if (!T.hasArg(['e', 'env'])) {
72 process.env.NODE_ENV = 'prd';
73 }
74 _logEnv('Deploy');
75 checkConfig();
76 gupack.runDeploy();
77}
78
79// 备份
80function backup() {
81 if (!T.hasArg(['e', 'env'])) {
82 process.env.NODE_ENV = 'prd';
83 }
84 _logEnv('Backup');
85 checkConfig();
86 gupack.runBackup();
87}
88
89// 回滚
90function rollback() {
91 if (!T.hasArg(['e', 'env'])) {
92 process.env.NODE_ENV = 'prd';
93 }
94 _logEnv('Rollback');
95 checkConfig();
96 gupack.runRollback();
97}
98
99function clean() {
100 // 如果指定配置文件,则将根据配置
101 if (T.hasArg(['f', 'gupackfile'])) {
102 checkConfig();
103 Gupack.cleanBuildDir(null, gupack.buildDir);
104 } else {
105 let dist = T.getArg('cwdir') || process.cwd();
106 dist = T.Path.resolve(dist, 'dist');
107 Gupack.cleanBuildDir(null, dist);
108 }
109}
110
111function _logEnv(commandName, env) {
112 env = env || process.env.NODE_ENV || T.getArg(['e', 'env']);
113 T.log.yellow(`→ [${T.getTime()}] ${commandName || ''} environment as '${env}'`);
114 process.env.NODE_ENV = env;
115}
116
117module.exports = {
118 task,
119 start,
120 build,
121 deploy,
122 publish,
123 backup,
124 rollback,
125 clean
126};
\No newline at end of file