UNPKG

3.9 kBJavaScriptView Raw
1#! /usr/bin/env node
2
3const fs = require('fs')
4const path = require('path')
5const program = require('commander')
6const createDevServer = require('../libs/server')
7const buildProd = require('../libs/buildProd')
8const createProject = require('../libs/createProject')
9const packageFile = require('../package.json')
10
11const 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`
21program
22 .version('tiresias-cli v' + packageFile.version)
23 .description(description)
24
25program
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
93program
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
109program.parse(process.argv)
110
111if (!program.args.length) program.help();
112
113