@@ -44,14 +44,23 @@ function emptyDir(dir) {
44
44
45
45
async function init ( ) {
46
46
const cwd = process . cwd ( )
47
- const argv = minimist ( process . argv . slice ( 2 ) )
47
+ // possible options:
48
+ // --jsx
49
+ // --spa (todo: split into vuex & vue-router)
50
+ // --typescript / --ts
51
+ // --with-tests / --tests / --cypress
52
+ const argv = minimist ( process . argv . slice ( 2 ) , {
53
+ alias : {
54
+ 'typescript' : [ 'ts' ] ,
55
+ 'with-tests' : [ 'tests' , 'cypress' ]
56
+ } ,
57
+ // all arguments are treated as booleans
58
+ boolean : true
59
+ } )
48
60
49
61
let targetDir = argv . _ [ 0 ]
50
62
const defaultProjectName = ! targetDir ? 'vue-project' : targetDir
51
63
52
- let template = argv . template || argv . t
53
- const isValidTemplate = templateList . includes ( template )
54
-
55
64
let result = { }
56
65
57
66
try {
@@ -102,33 +111,33 @@ async function init() {
102
111
isValidPackageName ( dir ) || 'Invalid package.json name'
103
112
} ,
104
113
{
105
- name : 'shouldAddJSX ' ,
106
- type : ( ) => ( isValidTemplate ? null : 'toggle' ) ,
114
+ name : 'needsJSX ' ,
115
+ type : ( ) => ( argv . jsx ? null : 'toggle' ) ,
107
116
message : 'Add JSX Support?' ,
108
117
initial : false ,
109
118
active : 'Yes' ,
110
119
inactive : 'No'
111
120
} ,
112
121
{
113
- name : 'shouldAddTypeScript ' ,
114
- type : ( ) => ( isValidTemplate ? null : 'toggle' ) ,
122
+ name : 'needsTypeScript ' ,
123
+ type : ( ) => ( argv . typescript ? null : 'toggle' ) ,
115
124
message : 'Add TypeScript?' ,
116
125
initial : false ,
117
126
active : 'Yes' ,
118
127
inactive : 'No'
119
128
} ,
120
129
{
121
130
name : 'isSPA' ,
122
- type : ( ) => ( isValidTemplate ? null : 'toggle' ) ,
131
+ type : ( ) => ( argv . spa ? null : 'toggle' ) ,
123
132
message :
124
133
'Add Vue Router & Vuex for Single Page Application development?' ,
125
134
initial : false ,
126
135
active : 'Yes' ,
127
136
inactive : 'No'
128
137
} ,
129
138
{
130
- name : 'shouldAddCypress ' ,
131
- type : ( ) => ( isValidTemplate ? null : 'toggle' ) ,
139
+ name : 'needsTests ' ,
140
+ type : ( ) => ( argv . tests ? null : 'toggle' ) ,
132
141
message : 'Add Cypress for testing?' ,
133
142
initial : false ,
134
143
active : 'Yes' ,
@@ -151,10 +160,10 @@ async function init() {
151
160
const {
152
161
packageName = toValidPackageName ( defaultProjectName ) ,
153
162
shouldOverwrite,
154
- shouldAddJSX ,
155
- shouldAddTypeScript = isValidTemplate && template . includes ( '-ts' ) ,
156
- isSPA = isValidTemplate && template . includes ( ' spa' ) ,
157
- shouldAddCypress = isValidTemplate && template . includes ( '-with- tests' )
163
+ needsJSX = argv . jsx ,
164
+ needsTypeScript = argv . typescript ,
165
+ isSPA = argv . spa ,
166
+ needsTests = argv . tests
158
167
} = result
159
168
const root = path . join ( cwd , targetDir )
160
169
@@ -180,13 +189,13 @@ async function init() {
180
189
181
190
// Add configs.
182
191
render ( 'config/base' )
183
- if ( shouldAddJSX ) {
192
+ if ( needsJSX ) {
184
193
render ( 'config/jsx' )
185
194
}
186
- if ( shouldAddCypress ) {
195
+ if ( needsTests ) {
187
196
render ( 'config/cypress' )
188
197
}
189
- if ( shouldAddTypeScript ) {
198
+ if ( needsTypeScript ) {
190
199
render ( 'config/typescript' )
191
200
192
201
// rename all `.js` files to `.ts`
@@ -210,7 +219,7 @@ async function init() {
210
219
// Render code template.
211
220
// prettier-ignore
212
221
const codeTemplate =
213
- ( shouldAddTypeScript ? 'typescript-' : '' ) +
222
+ ( needsTypeScript ? 'typescript-' : '' ) +
214
223
( isSPA ? 'spa' : 'default' )
215
224
render ( `code/${ codeTemplate } ` )
216
225
@@ -219,7 +228,7 @@ async function init() {
219
228
220
229
// Cleanup.
221
230
222
- if ( ! shouldAddCypress ) {
231
+ if ( ! needsTests ) {
223
232
// All templates assumes the need of tests.
224
233
// If the user doesn't need it:
225
234
// rm -rf cypress **/__tests__/
0 commit comments