1 | #! /usr/bin/env node
|
2 |
|
3 | const fs = require('fs')
|
4 | const path = require('path')
|
5 | const program = require('commander')
|
6 | const createDevServer = require('../libs/server')
|
7 | const buildProd = require('../libs/buildProd')
|
8 | const createProject = require('../libs/createProject')
|
9 | const packageFile = require('../package.json')
|
10 |
|
11 | const description = `
|
12 | =======================================================================
|
13 | provide develop environment & build project for tiresias framework.
|
14 | for more description use:
|
15 | ----------------------
|
16 | | tiresias run -h |
|
17 | | tiresias init -h |
|
18 | ----------------------
|
19 | =======================================================================
|
20 | `
|
21 | program
|
22 | .version('tiresias-cli v' + packageFile.version)
|
23 | .description(description)
|
24 |
|
25 | program
|
26 | .command('run <env>')
|
27 | .description( 'use "tiresias run dev" to start dev server and use "tiresias run prod" to build project.')
|
28 | .option('-p, --port [port]', 'dev server\'s port')
|
29 | .option('-d, --dist [dist]', 'build tartget directory')
|
30 | .option('-c, --custom [custom]', 'custom [webpack cofing] and [tiresias server] for dev or build')
|
31 | .action((env, options) => {
|
32 | if (options.custom) {
|
33 | var build = require(path.join(process.cwd(), `./tiresias-custom-webpack/build/${env}`))
|
34 | if (env === 'dev') {
|
35 | var buildConfig = {}
|
36 | buildConfig.port = options.port || 9999
|
37 | buildConfig.rootDir = process.cwd()
|
38 | var projectConfigPath = path.join(buildConfig.rootDir, './project.json')
|
39 | var projectConfigPath = path.join(buildConfig.rootDir, './project.json')
|
40 | fs.stat(projectConfigPath, (err, stat) => {
|
41 | var projectConfig
|
42 | if (err) {
|
43 | console.log('no project config, use default.')
|
44 | projectConfig = {}
|
45 | } else {
|
46 | console.log('got project config.')
|
47 | projectConfig = require(projectConfigPath)
|
48 | }
|
49 |
|
50 | if (projectConfig.server && projectConfig.server.port) {
|
51 | buildConfig.port = projectConfig.server.port
|
52 | }
|
53 |
|
54 | build(buildConfig.port, buildConfig, null, projectConfig)
|
55 | })
|
56 | }
|
57 | if (env === 'pord') {
|
58 | build()
|
59 | }
|
60 | } else {
|
61 | if (env === 'dev') {
|
62 | var buildConfig = {}
|
63 | buildConfig.port = options.port || 9999
|
64 | buildConfig.rootDir = process.cwd()
|
65 | var projectConfigPath = path.join(buildConfig.rootDir, './project.json')
|
66 | fs.stat(projectConfigPath, (err, stat) => {
|
67 | var projectConfig
|
68 | if (err) {
|
69 | console.log('no project config, use default.')
|
70 | projectConfig = {}
|
71 | } else {
|
72 | console.log('got project config.')
|
73 | projectConfig = require(projectConfigPath)
|
74 | }
|
75 |
|
76 | if (projectConfig.server && projectConfig.server.port) {
|
77 | buildConfig.port = projectConfig.server.port
|
78 | }
|
79 | createDevServer(buildConfig, projectConfig)
|
80 | })
|
81 | }
|
82 | if (env === 'prod') {
|
83 | var cwd = process.cwd()
|
84 | var config = {}
|
85 | config.rootDir = path.join(cwd)
|
86 | config.distDir = options.dist || path.join(cwd, './dist')
|
87 | console.log(config)
|
88 | buildProd(config)
|
89 | }
|
90 | }
|
91 | })
|
92 |
|
93 | program
|
94 | .command('init <projectName>')
|
95 | .description( 'use "tiresias init <your project name>" to init your project.')
|
96 | .option('-c, --custom [custom]', 'custom [webpack cofing] and [tiresias server] for dev or build')
|
97 | .action((projectName, options) => {
|
98 | var projectConfig = {}
|
99 | projectConfig.distDir = path.join(process.cwd(), projectName)
|
100 | if (options.custom) {
|
101 | createProject('hbs', projectConfig, () => {
|
102 | createProject('custom', projectConfig)
|
103 | })
|
104 | } else {
|
105 | createProject(projectConfig)
|
106 | }
|
107 | })
|
108 |
|
109 | program.parse(process.argv)
|
110 |
|
111 | if (!program.args.length) program.help();
|
112 |
|
113 |
|