1 | #!/usr/bin/env node
|
2 |
|
3 | 'use strict';
|
4 |
|
5 | var fs = require('fs');
|
6 | var path = require('path');
|
7 | var program = require('commander');
|
8 | var spawn = require('cross-spawn');
|
9 | var updateNotifier = require('update-notifier');
|
10 | var color = require('@fle/color');
|
11 |
|
12 | var {
|
13 | pkgName,
|
14 | pkgVersion,
|
15 | fleHomePath,
|
16 | needVerifyCommands
|
17 | } = require('../lib/consts');
|
18 | var { checkProject } = require('../lib/utils');
|
19 |
|
20 | // 检查更新
|
21 | updateNotifier({
|
22 | pkg: {
|
23 | name: pkgName,
|
24 | version: pkgVersion
|
25 | },
|
26 | updateCheckInterval: 86400000 // 每天检查一次
|
27 | }).notify({
|
28 | isGlobal: true
|
29 | });
|
30 |
|
31 | // 第一次启动需要安装编译需要的依赖
|
32 | var buildPkgPath = path.join(fleHomePath, 'package.json');
|
33 | if (!fs.existsSync(buildPkgPath) || require(buildPkgPath)['fle-version'] !== pkgVersion) {
|
34 | require('../lib/install');
|
35 | require('../lib/fix/babel-cli');
|
36 | }
|
37 |
|
38 | program
|
39 | .version(pkgVersion, '-v, --version')
|
40 | .usage('<command> [options]')
|
41 | .on('--help', () => {
|
42 | console.log();
|
43 | console.log(' Commands:');
|
44 | console.log();
|
45 | console.log(' init 创建项目工程或页面');
|
46 | console.log(' dev 启动本地开发调试');
|
47 | console.log(' build 编译生产环境代码');
|
48 | console.log(' lib 编译js库工程');
|
49 | console.log(' upload 上传图片或文件');
|
50 | console.log(' sprite 将多张图片合成雪碧图');
|
51 | console.log();
|
52 | })
|
53 | .parse(process.argv);
|
54 |
|
55 | var subcmd = program.args[0];
|
56 | var aliases = {
|
57 | "i": "init",
|
58 | "d": "dev",
|
59 | "b": "build",
|
60 | "l": "lib",
|
61 | "u": "upload"
|
62 | };
|
63 |
|
64 | if (aliases[subcmd]) {
|
65 | subcmd = aliases[subcmd];
|
66 | }
|
67 |
|
68 | if (!subcmd || subcmd === 'help') {
|
69 | program.help();
|
70 | } else {
|
71 | if (needVerifyCommands.indexOf(subcmd) !== -1) {
|
72 | checkProject();
|
73 | }
|
74 |
|
75 | var file = path.join(__dirname, `../lib/commands/${subcmd}.js`);
|
76 |
|
77 | fs.stat(file, (err) => {
|
78 | if (err) {
|
79 | console.log(`\n不存在此命令:${color.cyan(subcmd)}\n`);
|
80 | process.exit(1);
|
81 | }
|
82 |
|
83 | spawn('node', [file].concat(process.argv.slice(3)), { stdio: 'inherit' });
|
84 | });
|
85 | }
|