UNPKG

create-vite-pages

Version:

Create a [vite-pages](https://github.com/vitejs/vite-plugin-react-pages) project.

74 lines (65 loc) 1.92 kB
#!/usr/bin/env node const path = require('path') const fs = require('fs-extra') const argv = require('minimist')(process.argv.slice(2)) async function init() { const targetDir = argv._[0] || '.' const cwd = process.cwd() const root = path.join(cwd, targetDir) const renameFiles = { _gitignore: '.gitignore', _npmrc: '.npmrc', '_pnpm-workspace.yaml': 'pnpm-workspace.yaml', } console.log(`Scaffolding project in ${root}...`) await fs.ensureDir(root) const existing = await fs.readdir(root) if (existing.length) { console.error(`Error: target directory is not empty.`) process.exit(1) } const templateDir = path.join( __dirname, `template-${argv.t || argv.template || 'app'}` ) const write = async (file, content) => { const targetPath = renameFiles[file] ? path.join(root, renameFiles[file]) : path.join(root, file) if (content) { await fs.writeFile(targetPath, content) } else { await fs.copy(path.join(templateDir, file), targetPath) } } const files = await fs.readdir(templateDir) for (const file of files.filter((f) => f !== 'package.json')) { await write(file) } const pkg = require(path.join(templateDir, `package.json`)) removeWorkspace(pkg) pkg.name = path.basename(root) await write('package.json', JSON.stringify(pkg, null, 2)) console.log(`\nDone. Now run:\n`) if (root !== cwd) { console.log(` cd ${path.relative(cwd, root)}`) } console.log(` npm install (or \`pnpm install\`)`) console.log(` npm run dev (or \`pnpm dev\`)`) console.log() } init().catch((e) => { console.error(e) }) function removeWorkspace(pkg) { rm(pkg.dependencies) rm(pkg.devDependencies) function rm(deps) { if (!deps) return Object.keys(deps).forEach((k) => { if (deps[k].startsWith('workspace:')) { deps[k] = deps[k].slice('workspace:'.length) } }) } }