1 | #!/usr/bin/env node
|
2 | 'use strict'
|
3 |
|
4 | const path = require('path')
|
5 | const program = require('commander')
|
6 | const slush = require.resolve('slush/bin/slush')
|
7 | const exec = require('../util/exec')
|
8 | const logger = require('../util/logger')
|
9 | const isInstalled = require('../util/is-installed')
|
10 | const npm = require('../util/npm')
|
11 | const config = require('../util/config')
|
12 |
|
13 | program
|
14 | .option('-r --registry <registry-url>', '指定镜像')
|
15 | .parse(process.argv)
|
16 |
|
17 | const option = program.args[0] || config.get('template')
|
18 |
|
19 | if (!option) {
|
20 | logger.fatal('请指定脚手架')
|
21 | }
|
22 |
|
23 | const name = 'xdc-' + option
|
24 | const template = 'slush-' + name
|
25 |
|
26 | /**
|
27 | * download template
|
28 | * @param {string} template template name
|
29 | */
|
30 | const installTemplate = template => {
|
31 | logger.log(`downloading '${template}'`)
|
32 | npm.install(template, program.registry)
|
33 | logger.success('脚手架安装成功\n')
|
34 | }
|
35 |
|
36 | /**
|
37 | * run slush
|
38 | * @param {string} name slush template name
|
39 | */
|
40 | const generator = function (name) {
|
41 | logger.log('generator project')
|
42 | exec(slush, [ name ], {
|
43 | stdio: 'inherit',
|
44 | errorMessage: 'slush runtime error'
|
45 | })
|
46 | }
|
47 |
|
48 | if (!isInstalled('generator-package-xdc')) {
|
49 | logger.log('下载脚手架相关依赖')
|
50 | npm.install('generator-package-xdc', program.registry)
|
51 | }
|
52 | if (!isInstalled(path.join(template.split('@')[0], 'package.json'))) {
|
53 | installTemplate(template)
|
54 | }
|
55 |
|
56 | generator(name.split('@')[0])
|