Skip to content

Commit 073af21

Browse files
committed
refactor!: support command line flags such as --ts
1 parent 86533d8 commit 073af21

File tree

1 file changed

+29
-20
lines changed

1 file changed

+29
-20
lines changed

index.js

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,23 @@ function emptyDir(dir) {
4444

4545
async function init() {
4646
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+
})
4860

4961
let targetDir = argv._[0]
5062
const defaultProjectName = !targetDir ? 'vue-project' : targetDir
5163

52-
let template = argv.template || argv.t
53-
const isValidTemplate = templateList.includes(template)
54-
5564
let result = {}
5665

5766
try {
@@ -102,33 +111,33 @@ async function init() {
102111
isValidPackageName(dir) || 'Invalid package.json name'
103112
},
104113
{
105-
name: 'shouldAddJSX',
106-
type: () => (isValidTemplate ? null : 'toggle'),
114+
name: 'needsJSX',
115+
type: () => (argv.jsx ? null : 'toggle'),
107116
message: 'Add JSX Support?',
108117
initial: false,
109118
active: 'Yes',
110119
inactive: 'No'
111120
},
112121
{
113-
name: 'shouldAddTypeScript',
114-
type: () => (isValidTemplate ? null : 'toggle'),
122+
name: 'needsTypeScript',
123+
type: () => (argv.typescript ? null : 'toggle'),
115124
message: 'Add TypeScript?',
116125
initial: false,
117126
active: 'Yes',
118127
inactive: 'No'
119128
},
120129
{
121130
name: 'isSPA',
122-
type: () => (isValidTemplate ? null : 'toggle'),
131+
type: () => (argv.spa ? null : 'toggle'),
123132
message:
124133
'Add Vue Router & Vuex for Single Page Application development?',
125134
initial: false,
126135
active: 'Yes',
127136
inactive: 'No'
128137
},
129138
{
130-
name: 'shouldAddCypress',
131-
type: () => (isValidTemplate ? null : 'toggle'),
139+
name: 'needsTests',
140+
type: () => (argv.tests ? null : 'toggle'),
132141
message: 'Add Cypress for testing?',
133142
initial: false,
134143
active: 'Yes',
@@ -151,10 +160,10 @@ async function init() {
151160
const {
152161
packageName = toValidPackageName(defaultProjectName),
153162
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
158167
} = result
159168
const root = path.join(cwd, targetDir)
160169

@@ -180,13 +189,13 @@ async function init() {
180189

181190
// Add configs.
182191
render('config/base')
183-
if (shouldAddJSX) {
192+
if (needsJSX) {
184193
render('config/jsx')
185194
}
186-
if (shouldAddCypress) {
195+
if (needsTests) {
187196
render('config/cypress')
188197
}
189-
if (shouldAddTypeScript) {
198+
if (needsTypeScript) {
190199
render('config/typescript')
191200

192201
// rename all `.js` files to `.ts`
@@ -210,7 +219,7 @@ async function init() {
210219
// Render code template.
211220
// prettier-ignore
212221
const codeTemplate =
213-
(shouldAddTypeScript ? 'typescript-' : '') +
222+
(needsTypeScript ? 'typescript-' : '') +
214223
(isSPA ? 'spa' : 'default')
215224
render(`code/${codeTemplate}`)
216225

@@ -219,7 +228,7 @@ async function init() {
219228

220229
// Cleanup.
221230

222-
if (!shouldAddCypress) {
231+
if (!needsTests) {
223232
// All templates assumes the need of tests.
224233
// If the user doesn't need it:
225234
// rm -rf cypress **/__tests__/

0 commit comments

Comments
 (0)