@@ -263,16 +263,44 @@ async function init() {
263263
264264 if ( ! isFeatureFlagsUsed ) {
265265 const features = await multiselect ( {
266- message : `Select the features you want to enable: ${ dim ( '(↑/↓ to navigate, space to select, a to select/deselect all, return to submit)' ) } ` ,
266+ message : `${ language . featureSelection . message } ${ dim ( language . featureSelection . hint ) } ` ,
267267 options : [
268- { value : 'typescript' , label : language . needsTypeScript . message } ,
269- { value : 'jsx' , label : language . needsJsx . message } ,
270- { value : 'router' , label : language . needsRouter . message } ,
271- { value : 'pinia' , label : language . needsPinia . message } ,
272- { value : 'vitest' , label : language . needsVitest . message } ,
273- { value : 'e2e' , label : language . needsE2eTesting . message } ,
274- { value : 'eslint' , label : language . needsEslint . message } ,
275- { value : 'prettier' , label : language . needsPrettier . message } ,
268+ {
269+ value : 'typescript' ,
270+ label : language . needsTypeScript . message ,
271+ hint : language . needsTypeScript . hint ,
272+ } ,
273+ { value : 'jsx' , label : language . needsJsx . message , hint : language . needsJsx . hint } ,
274+ {
275+ value : 'router' ,
276+ label : language . needsRouter . message ,
277+ hint : language . needsRouter . hint ,
278+ } ,
279+ {
280+ value : 'pinia' ,
281+ label : language . needsPinia . message ,
282+ hint : language . needsPinia . hint ,
283+ } ,
284+ {
285+ value : 'vitest' ,
286+ label : language . needsVitest . message ,
287+ hint : language . needsVitest . hint ,
288+ } ,
289+ {
290+ value : 'e2e' ,
291+ label : language . needsE2eTesting . message ,
292+ hint : language . needsE2eTesting . hint ,
293+ } ,
294+ {
295+ value : 'eslint' ,
296+ label : language . needsEslint . message ,
297+ hint : language . needsEslint . hint ,
298+ } ,
299+ {
300+ value : 'prettier' ,
301+ label : language . needsPrettier . message ,
302+ hint : language . needsPrettier . hint ,
303+ } ,
276304 ] ,
277305 required : false ,
278306 } )
@@ -285,25 +313,26 @@ async function init() {
285313
286314 if ( features . includes ( 'e2e' ) ) {
287315 const e2eTestingInput = await select ( {
288- message : `${ language . needsE2eTesting . message } : ${ dim ( '(↑/↓ to navigate, return to submit)' ) } ` ,
316+ message : `${ language . e2eSelection . message } ${ dim ( language . e2eSelection . hint ) } ` ,
289317 options : [
318+ {
319+ value : 'playwright' ,
320+ label : language . e2eSelection . selectOptions . playwright . title ,
321+ hint : language . e2eSelection . selectOptions . playwright . desc ,
322+ } ,
290323 {
291324 value : 'cypress' ,
292- label : language . needsE2eTesting . selectOptions . cypress . title ,
325+ label : language . e2eSelection . selectOptions . cypress . title ,
293326 hint : features . includes ( 'vitest' )
294- ? undefined
295- : language . needsE2eTesting . selectOptions . cypress . desc ,
327+ ? language . e2eSelection . selectOptions . cypress . desc
328+ : language . e2eSelection . selectOptions . cypress . hintOnComponentTesting ! ,
296329 } ,
297330 {
298331 value : 'nightwatch' ,
299- label : language . needsE2eTesting . selectOptions . nightwatch . title ,
332+ label : language . e2eSelection . selectOptions . nightwatch . title ,
300333 hint : features . includes ( 'vitest' )
301- ? undefined
302- : language . needsE2eTesting . selectOptions . nightwatch . desc ,
303- } ,
304- {
305- value : 'playwright' ,
306- label : language . needsE2eTesting . selectOptions . playwright . title ,
334+ ? language . e2eSelection . selectOptions . nightwatch . desc
335+ : language . e2eSelection . selectOptions . nightwatch . hintOnComponentTesting ! ,
307336 } ,
308337 ] ,
309338 } )
@@ -316,25 +345,16 @@ async function init() {
316345 }
317346
318347 if ( features . includes ( 'eslint' ) ) {
319- const eslintInput = await select ( {
320- message : language . needsEslint . message ,
321- options : [
322- {
323- value : 'eslintOnly' ,
324- label : language . needsEslint . selectOptions . eslintOnly . title ,
325- } ,
326- {
327- value : 'speedUpWithOxlint' ,
328- label : language . needsEslint . selectOptions . speedUpWithOxlint . title ,
329- } ,
330- ] ,
348+ const oxlintInput = await confirm ( {
349+ message : language . needsOxlint . message ,
350+ initialValue : false ,
331351 } )
332352
333- if ( isCancel ( eslintInput ) ) {
353+ if ( isCancel ( oxlintInput ) ) {
334354 throw new Error ( red ( '✖' ) + ` ${ language . errors . operationCancelled } ` )
335355 }
336356
337- result . needsEslint = eslintInput
357+ result . needsOxlint = oxlintInput
338358 }
339359 }
340360
@@ -676,7 +696,12 @@ async function init() {
676696 if ( needsPrettier ) {
677697 outroMessage += ` ${bold ( green ( getCommand ( packageManager , 'format' ) ) ) } \n`
678698 }
679- outroMessage += ` ${bold ( green ( getCommand ( packageManager , 'dev' ) ) ) } `
699+ outroMessage += ` ${bold ( green ( getCommand ( packageManager , 'dev' ) ) ) } \n`
700+
701+ outroMessage += `
702+ ${dim ( '|' ) } Optional : Initialize Git in your project directory with :
703+
704+ ${bold ( green ( 'git init && git add -A && git commit -m "initial commit"' ) ) } `
680705
681706 outro ( outroMessage )
682707}
0 commit comments