1 | #!/usr/bin/env node
|
2 |
|
3 | 'use strict';
|
4 |
|
5 | const program = require('commander'),
|
6 | T = require('../lib/tools'),
|
7 | version = require('../package.json')['version'];
|
8 |
|
9 |
|
10 | const gupack = program
|
11 | .usage('[options] \n\r\t 欢迎使用前端自动化构建工具 Gupack; \n\r\t ' + '将帮助您简化前端开发流程和提升开发效率。')
|
12 |
|
13 | .option('-c, --clear-dest', '清空编译目录')
|
14 | .option('-d, --dest', '指定编译后的输出路径')
|
15 | .option('-e, --env', '设置环境')
|
16 | .option('-o, --open-browser', '启动内置静态服务器是否打开默认浏览器')
|
17 | .option('-s, --server', '是否启动内置静态服务器')
|
18 | .option('-t, --task', '指定编译任务')
|
19 | .option('-w, --watch', '编译时监听文件变化\n\n模板相关--------------------')
|
20 |
|
21 | .option('-C, --clear-templates', '清除项目模板')
|
22 | .option('-D, --download-template', '下载项目模板')
|
23 | .option('-T, --template', '新建项目时指定模板\n\n备份与还原相关--------------------')
|
24 |
|
25 | .option('--skip-backup', '部署时跳过备份')
|
26 | .option('--backup-date', '指定备份版本所在的日期(*项目根目录必须存在backup.json)')
|
27 | .option('--backup-name', '直接指定备份名称(*项目根目录必须存在backup.json)')
|
28 | .option('-r, --remove-backup', '指定清除备份')
|
29 | .option('-m, --message', '备注信息')
|
30 | .option('--out-path', '指定备份输出路径')
|
31 | .option('--mode', '指定备份模式(local:本地; remote:远程)')
|
32 | .option('--log', '指定备份打印方式(all | progress)\n\n其他--------------------')
|
33 |
|
34 | .option('-f, --gupackfile', '指定配置文件')
|
35 | .option('--host', '服务器主机')
|
36 | .option('--port', '服务器端口')
|
37 | .option('--liveDelay', '热更新延迟时间,单位ms')
|
38 | .option('-v, --version', '查看当前版本号 \n\nCommands _ _ _ _ _ _ _ _ _ _ _\n', function () {
|
39 | require('./version').displayVersion();
|
40 | })
|
41 | |
42 |
|
43 |
|
44 |
|
45 |
|
46 | .option(
|
47 | 'create',
|
48 | repx(
|
49 | '<projectName*> 创建项目; ' +
|
50 | exp(
|
51 | '\n\t -T --template: 选择项目模板' +
|
52 | '\n\t --auto-install: 新建项目后自动安装npm相关依赖模块' +
|
53 | '\n\t --skip-cache: 跳过缓存,下载模板'
|
54 | )
|
55 | ),
|
56 | function () {
|
57 | require('./create')();
|
58 | }
|
59 | )
|
60 | .option('new', repx('create alias '), function () {
|
61 | require('./create')();
|
62 | })
|
63 | .option('task', repx('<taskName>(可选) 编译指定任务; '), function () {
|
64 | require('./task').task();
|
65 | })
|
66 | .option(
|
67 | 'build',
|
68 | repx(
|
69 | '编译项目; ' +
|
70 | exp(
|
71 | '\n\t -e, --env <env>: 指定编译环境,(local:本地; dev:开发; stg:测试; prd:生产) ' +
|
72 | '\n\t -d, --dest <destPath>: 指定编译输出目录 ' +
|
73 | '\n\t -t, --task <taskName>: 指定编译任务(gupack build -t js+css -e dev) ' +
|
74 | '\n\t -c, --clear-dest: 编译前清空编译路径下的所有文件 ' +
|
75 | '\n\t -o, --open-browser: 启动内置静态服务器是否打开默认浏览器 ' +
|
76 | '\n\t -s, --server: 是否启动内置静态服务器(热更新)' +
|
77 | '\n\t --skip-deploy 跳过部署'
|
78 | )
|
79 | ),
|
80 | function () {
|
81 | require('./task').build();
|
82 | }
|
83 | )
|
84 |
|
85 | .option('start', repx('启动内置Node静态服务器; ' + exp('\n\t -o, --open-browser: 启动内置静态服务器是否打开默认浏览器')), function () {
|
86 | require('./task').start();
|
87 | })
|
88 | .option('deploy', repx('部署项目; ' + exp('\n\t -e, --env: 指定部署环境' + '\n\t --skip-backup: 部署时跳过备份')), function () {
|
89 | require('./task').deploy();
|
90 | })
|
91 | .option('publish', repx('生产发布(部署生产环境, 相当于gupack deploy -e prd); '), function () {
|
92 | require('./task').publish();
|
93 | })
|
94 |
|
95 | .option(
|
96 | 'rollback',
|
97 | repx(
|
98 | '备份回滚(依赖config.deploy.backup); ' +
|
99 | exp(
|
100 | '\n\t --backup-date: 指定备份版本所在的日期(*项目根目录必须存在backup.json)' +
|
101 | '\n\t --backup-name: 直接指定备份名称(*项目根目录必须存在backup.json)' +
|
102 | '\n\t -e, --env: 指定环境,如未指定,默认prd:生产'
|
103 | )
|
104 | ),
|
105 | function () {
|
106 | require('./task').rollback();
|
107 | }
|
108 | )
|
109 | .option(
|
110 | 'backup',
|
111 | repx(
|
112 | '备份(依赖config.deploy); ' +
|
113 | exp(
|
114 | '\n\t --out-path: 指定备份输出路径' +
|
115 | '\n\t --name: 直接指定备份名称(名称后自动添加当前日期:@name-yyyy-mm-dd HH:MM:ss)' +
|
116 | '\n\t --log: 指定打印方式(all | progress)' +
|
117 | '\n\t --mode: 指定备份模式(local:本地; remote:远程)' +
|
118 | '\n\t -r, --remove-backup: 清除指定备份' +
|
119 | '\n\t -e, --env: 指定环境,如未指定,默认prd:生产' +
|
120 | '\n\t -m, --message: 备注信息'
|
121 | )
|
122 | ),
|
123 | function () {
|
124 | require('./task').backup();
|
125 | }
|
126 | )
|
127 |
|
128 |
|
129 |
|
130 |
|
131 |
|
132 |
|
133 |
|
134 |
|
135 |
|
136 |
|
137 |
|
138 | .option('gt', repx('<name*>生成测试用例; '), function () {
|
139 | require('./generator').generateSpec();
|
140 | })
|
141 | .option('test', repx('<testName[fileName]>用例测试; '), function () {
|
142 | require('./testor').test();
|
143 | })
|
144 | .option('clean', repx(' 清空编译路径下的所有文件; ' + exp('\n\t -f, --gupackfile: 指定项目配置文件路径')), function () {
|
145 | require('./task').clean();
|
146 | })
|
147 | .option(
|
148 | 'addTemplate',
|
149 | repx('<templateName*> <templateGitUrl(注:github username/repo)*> 添加项目模板; ' + exp('\n\t -D, --download-template: 下载模板')),
|
150 | function () {
|
151 | require('./add').addTemplate();
|
152 | }
|
153 | )
|
154 | .option('removeTemplate', repx('<templateName>删除指定项目模板; gupack removeTemplate vue_webpack'), function () {
|
155 | require('./add').removeTemplate();
|
156 | })
|
157 | .option('listTemplate', repx('模板列表; '), function () {
|
158 | require('./add').listTemplate();
|
159 | })
|
160 | .option('versions', repx('查看相关版本;'), function () {
|
161 | require('./version').displayDescVersion();
|
162 | })
|
163 | .parse(process.argv);
|
164 |
|
165 | function exp(s) {
|
166 | return T.msg.gray(s);
|
167 | }
|
168 |
|
169 | function repx(s) {
|
170 | return T.msg.green(s);
|
171 | } |
\ | No newline at end of file |