@@ -11,28 +11,29 @@ const lintStyles = ['standard', 'airbnb']
11
11
*/
12
12
exports . sortDependencies = function sortDependencies ( data ) {
13
13
const packageJsonFile = path . join (
14
- data . inPlace ? "" : data . destDirName ,
15
- " package.json"
14
+ data . inPlace ? '' : data . destDirName ,
15
+ ' package.json'
16
16
)
17
17
const packageJson = JSON . parse ( fs . readFileSync ( packageJsonFile ) )
18
18
packageJson . devDependencies = sortObject ( packageJson . devDependencies )
19
19
packageJson . dependencies = sortObject ( packageJson . dependencies )
20
- fs . writeFileSync (
21
- packageJsonFile ,
22
- JSON . stringify ( packageJson , null , 2 ) + "\n"
23
- ) ;
20
+ fs . writeFileSync ( packageJsonFile , JSON . stringify ( packageJson , null , 2 ) + '\n' )
24
21
}
25
22
26
23
/**
27
24
* Runs `npm install` in the project directory
28
25
* @param {string } cwd Path of the created project directory
29
26
* @param {object } data Data from questionnaire
30
27
*/
31
- exports . installDependencies = function installDependencies ( cwd , executable = 'npm' , color ) {
28
+ exports . installDependencies = function installDependencies (
29
+ cwd ,
30
+ executable = 'npm' ,
31
+ color
32
+ ) {
32
33
console . log ( `\n\n# ${ color ( 'Installing project dependencies ...' ) } ` )
33
34
console . log ( '# ========================\n' )
34
35
return runCommand ( executable , [ 'install' ] , {
35
- cwd
36
+ cwd,
36
37
} )
37
38
}
38
39
@@ -43,10 +44,18 @@ exports.installDependencies = function installDependencies(cwd, executable = 'np
43
44
*/
44
45
exports . runLintFix = function runLintFix ( cwd , data , color ) {
45
46
if ( data . lint && lintStyles . indexOf ( data . lintConfig ) !== - 1 ) {
46
- console . log ( `\n\n${ color ( 'Running eslint --fix to comply with chosen preset rules...' ) } ` )
47
+ console . log (
48
+ `\n\n${ color (
49
+ 'Running eslint --fix to comply with chosen preset rules...'
50
+ ) } `
51
+ )
47
52
console . log ( '# ========================\n' )
48
- return runCommand ( 'npm' , [ 'run' , 'lint' , '--' , '--fix' ] , {
49
- cwd
53
+ const args =
54
+ data . autoInstall === 'npm'
55
+ ? [ 'run' , 'lint' , '--' , '--fix' ]
56
+ : [ 'run' , 'lint' , '--fix' ]
57
+ return runCommand ( data . autoInstall , args , {
58
+ cwd,
50
59
} )
51
60
}
52
61
return Promise . resolve ( )
@@ -63,35 +72,60 @@ exports.printMessage = function printMessage(data, { green, yellow }) {
63
72
64
73
To get started:
65
74
66
- ${ yellow ( `${ data . inPlace ? '' : `cd ${ data . destDirName } \n ` } ${ requiresLint ( data ) ? 'npm run lint -- --fix\n ' : '' } npm run dev` ) }
75
+ ${ yellow (
76
+ `${ data . inPlace ? '' : `cd ${ data . destDirName } \n ` } ${ installMsg (
77
+ data
78
+ ) } ${ lintMsg ( data ) } npm run dev`
79
+ ) }
67
80
68
81
Documentation can be found at https://vuejs-templates.github.io/webpack
69
82
`
70
83
console . log ( message )
71
84
}
72
85
73
86
/**
74
- * Returns true if the user will have to run lint --fix themselves.
87
+ * If the user will have to run lint --fix themselves, it returns a string
88
+ * containing the instruction for this step.
75
89
* @param {Object } data Data from questionnaire.
76
90
*/
77
- function requiresLint ( data ) {
78
- return ! data . autoInstall && data . lint && lintStyles . indexOf ( data . lintConfig ) !== - 1
91
+ function lintMsg ( data ) {
92
+ return ! data . autoInstall &&
93
+ data . lint &&
94
+ lintStyles . indexOf ( data . lintConfig ) !== - 1
95
+ ? 'npm run lint -- --fix (or for yarn: yarn run lint --fix)\n '
96
+ : ''
97
+ }
98
+
99
+ /**
100
+ * If the user will have to run `npm install` or `yarn` themselves, it returns a string
101
+ * containing the instruction for this step.
102
+ * @param {Object } data Data from the questionnaire
103
+ */
104
+ function installMsg ( data ) {
105
+ return ! data . autoInstall ? 'npm install (or if using yarn: yarn)\n ' : ''
79
106
}
80
107
81
108
/**
82
109
* Spawns a child process and runs the specified command
83
110
* By default, runs in the CWD and inherits stdio
84
111
* Options are the same as node's child_process.spawn
85
- * @param {string } cmd
86
- * @param {array<string> } args
112
+ * @param {string } cmd
113
+ * @param {array<string> } args
87
114
* @param {object } options
88
115
*/
89
116
function runCommand ( cmd , args , options ) {
90
117
return new Promise ( ( resolve , reject ) => {
91
- const spwan = spawn ( cmd , args , Object . assign ( {
92
- cwd : process . cwd ( ) ,
93
- stdio : 'inherit' ,
94
- } , options ) )
118
+ const spwan = spawn (
119
+ cmd ,
120
+ args ,
121
+ Object . assign (
122
+ {
123
+ cwd : process . cwd ( ) ,
124
+ stdio : 'inherit' ,
125
+ } ,
126
+ options
127
+ )
128
+ )
95
129
96
130
spwan . on ( 'exit' , ( ) => {
97
131
resolve ( )
@@ -101,9 +135,11 @@ function runCommand(cmd, args, options) {
101
135
102
136
function sortObject ( object ) {
103
137
// Based on https://github.com/yarnpkg/yarn/blob/v1.3.2/src/config.js#L79-L85
104
- const sortedObject = { } ;
105
- Object . keys ( object ) . sort ( ) . forEach ( item => {
106
- sortedObject [ item ] = object [ item ] ;
107
- } ) ;
108
- return sortedObject ;
109
- }
138
+ const sortedObject = { }
139
+ Object . keys ( object )
140
+ . sort ( )
141
+ . forEach ( item => {
142
+ sortedObject [ item ] = object [ item ]
143
+ } )
144
+ return sortedObject
145
+ }
0 commit comments