1
+ 'use strict' ;
2
+
3
+ var execSync = require ( 'child_process' ) . execSync ;
4
+ var replaceStream = require ( 'replacestream' ) ;
5
+ var inquirer = require ( 'inquirer' ) ;
6
+ var Manager = require ( '../modules/manager.js' ) ;
7
+
8
+ exports . usage = "项目初始化" ;
9
+
10
+ exports . setOptions = function ( optimist ) { } ;
11
+
12
+ exports . run = function ( options ) {
13
+ Manager . reloadRC ( ) ;
14
+
15
+ var cwd = options . cwd ,
16
+ projectName = options . _ [ 1 ] ,
17
+ defaultName = '' ;
18
+
19
+ if ( fileExists ( './package.json' ) ) {
20
+ defaultName = JSON . parse ( fs . readFileSync ( './package.json' ) ) . name ;
21
+ } else {
22
+ defaultName = sysPath . basename ( cwd ) ;
23
+ }
24
+
25
+ var questions = [ {
26
+ type : 'input' ,
27
+ name : 'name' ,
28
+ message : 'project name(' + defaultName + '):'
29
+ } , {
30
+ type : 'list' ,
31
+ name : 'type' ,
32
+ message : 'config type:' ,
33
+ choices : [ 'qunar' , 'hy' ]
34
+ } ] ;
35
+
36
+ inquirer . prompt ( questions ) . then ( function ( answers ) {
37
+ answers . name = answers . name || defaultName ;
38
+
39
+ var initTmplPath = sysPath . resolve ( __dirname , '../config/initTmpl/' ) ;
40
+ var configFileName = 'ykit.' + answers . type + '.js' ;
41
+ var writePackageJsonStream = void 0 ;
42
+
43
+ // 如果没有package.json,先添加package.json
44
+ if ( answers . name ) {
45
+ writePackageJsonStream = createPakcageJson ( ) ;
46
+ }
47
+
48
+ if ( ! writePackageJsonStream ) {
49
+ createConfigFile ( ) ;
50
+ installDependencies ( ) ;
51
+ } else {
52
+ writePackageJsonStream . on ( 'finish' , function ( ) {
53
+ log ( 'Successfully created package.json file in ' + cwd ) ;
54
+
55
+ createConfigFile ( ) ;
56
+ installDependencies ( ) ;
57
+ } ) ;
58
+ }
59
+
60
+ function createPakcageJson ( ) {
61
+ return fs . createReadStream ( sysPath . resolve ( initTmplPath , 'package.json' ) ) . pipe ( replaceStream ( '#_name' , answers . name ) ) . pipe ( fs . createWriteStream ( sysPath . resolve ( cwd , 'package.json' ) ) ) ;
62
+ }
63
+
64
+ function createConfigFile ( ) {
65
+ if ( ! fileExists ( './' + configFileName ) ) {
66
+ var stream = fs . createReadStream ( sysPath . resolve ( initTmplPath , 'ykit.common.js' ) ) . pipe ( replaceStream ( '#_name' , answers . name ) ) . pipe ( fs . createWriteStream ( sysPath . resolve ( cwd , configFileName ) ) ) ;
67
+
68
+ stream . on ( 'finish' , function ( ) {
69
+ log ( 'Successfully created ' + configFileName + ' file in ' + cwd ) ;
70
+ } ) ;
71
+ }
72
+ }
73
+
74
+ function installDependencies ( ) {
75
+ var packageName = 'ykit-config-' + answers . type ,
76
+ installConfigPackageCmd = 'npm i --save git+ssh://git@gitlab.corp.qunar.com:mfe/ykit-config-' + answers . type + '.git' ;
77
+
78
+ log ( 'Installing ' + packageName + '...' ) ;
79
+ execSync ( installConfigPackageCmd ) ;
80
+ }
81
+ } ) ;
82
+ } ;
83
+
84
+ function fileExists ( filePath ) {
85
+ try {
86
+ return fs . statSync ( filePath ) . isFile ( ) ;
87
+ } catch ( err ) {
88
+ return false ;
89
+ }
90
+ }
0 commit comments