diff --git a/index.ts b/index.ts index 004f9787..fc0e031d 100755 --- a/index.ts +++ b/index.ts @@ -18,7 +18,7 @@ import generateReadme from './utils/generateReadme' import getCommand from './utils/getCommand' import getLanguage from './utils/getLanguage' import renderEslint from './utils/renderEslint' -import trimBoilerplate from './utils/trimBoilerplate' +import { trimBoilerplate, removeCSSImport, emptyRouterConfig } from './utils/trimBoilerplate' import cliPackageJson from './package.json' @@ -560,6 +560,24 @@ async function init() { }, ) + if (argv.bare) { + trimBoilerplate(root) + render('bare/base') + // TODO: refactor the `render` utility to avoid this kind of manual mapping? + if (needsTypeScript) { + render('bare/typescript') + } + if (needsVitest) { + render('bare/vitest') + } + if (needsCypressCT) { + render('bare/cypress-ct') + } + if (needsNightwatchCT) { + render('bare/nightwatch-ct') + } + } + // Cleanup. // We try to share as many files between TypeScript and JavaScript as possible. @@ -610,21 +628,9 @@ async function init() { } if (argv.bare) { - trimBoilerplate(root, { needsTypeScript, needsRouter }) - render('bare/base') - - // TODO: refactor the `render` utility to avoid this kind of manual mapping? - if (needsTypeScript) { - render('bare/typescript') - } - if (needsVitest) { - render('bare/vitest') - } - if (needsCypressCT) { - render('bare/cypress-ct') - } - if (needsNightwatchCT) { - render('bare/nightwatch-ct') + removeCSSImport(root, needsTypeScript) + if (needsRouter) { + emptyRouterConfig(root, needsTypeScript) } } diff --git a/template/base/vite.config.js.data.mjs b/template/base/vite.config.js.data.mjs index 12714be6..537a4325 100644 --- a/template/base/vite.config.js.data.mjs +++ b/template/base/vite.config.js.data.mjs @@ -11,7 +11,7 @@ export default function getData() { id: 'vite-plugin-vue-devtools', importer: "import vueDevTools from 'vite-plugin-vue-devtools'", initializer: 'vueDevTools()', - } + }, ], } } diff --git a/utils/trimBoilerplate.ts b/utils/trimBoilerplate.ts index 1a9fd704..ae5ab35b 100644 --- a/utils/trimBoilerplate.ts +++ b/utils/trimBoilerplate.ts @@ -6,8 +6,7 @@ function replaceContent(filepath: string, replacer: (content: string) => string) fs.writeFileSync(filepath, replacer(content)) } -export default function trimBoilerplate(rootDir: string, features: Record) { - const isTs = features.needsTypeScript +export function trimBoilerplate(rootDir: string) { const srcDir = path.resolve(rootDir, 'src') for (const filename of fs.readdirSync(srcDir)) { @@ -19,18 +18,21 @@ export default function trimBoilerplate(rootDir: string, features: Record content.replace("import './assets/main.css'\n\n", '')) +} +export function emptyRouterConfig(rootDir: string, needsTypeScript: boolean) { + const srcDir = path.resolve(rootDir, 'src') // If `router` feature is selected, use an empty router configuration - if (features.needsRouter) { - const routerEntry = path.resolve(srcDir, isTs ? 'router/index.ts' : 'router/index.js') - replaceContent(routerEntry, (content) => - content - .replace(`import HomeView from '../views/HomeView.vue'\n`, '') - .replace(/routes:\s*\[[\s\S]*?\],/, 'routes: [],'), - ) - } + const routerEntry = path.resolve(srcDir, needsTypeScript ? 'router/index.ts' : 'router/index.js') + replaceContent(routerEntry, (content) => + content + .replace(`import HomeView from '../views/HomeView.vue'\n`, '') + .replace(/routes:\s*\[[\s\S]*?\],/, 'routes: [],'), + ) }