UNPKG

create-node-template

Version:

Create node.js or express boilerplate with one command

39 lines 2.03 kB
import { Command } from 'commander'; // import { cyan, green, red, yellow, bold, blue } from 'picocolors'; import { bold, green, red } from '../../utils/index.js'; import packageJson from '../../../package.json' with { type: 'json' }; import { formatOptionDescription } from './helpers/misc.js'; import { validateNpmName } from './helpers/validate-pkg.js'; // import { createApp, DownloadError } from './create-app'; // import ciInfo from 'ci-info'; export const program = new Command(packageJson.name) .version(packageJson.version) .arguments('[project-name]') // [] means optional, <> means required .usage(`${green('<project-name>')} [options]`) .action((name) => { const nameTrimmed = name?.trim(); if (nameTrimmed) { const validation = validateNpmName(nameTrimmed); if (!validation.valid) { console.error('Invalid project name. Issue(s): '); validation.problems.forEach(p => console.error(`- ${p}\n`)); validation.problems.forEach(p => console.error(` ${red(bold('*'))} ${p}`)); process.exit(1); } } }) // .option('--eslint', formatDesc('Initialize with eslint config.')) .option('-t, --template [name]', formatOptionDescription('Which template to bootstrap the app with. You can use any of:\n' + ' - node-basic: A basic Node.js app.\n' + ' - express-basic: A basic Express.js app.\n' + ' - express-advanced: An advanced Express.js app with ready for production.')) .option('-pm, --package-manager [name]', formatOptionDescription('Which package manager to use. You can select any of:\n' + ' - npm.\n' + ' - yarn.\n' + ' - pnpm.\n' + ' - bun.')) .option('--import-alias <alias-to-configure>', formatOptionDescription('Specify import alias to use (default "@/*").')) .option('--reset-preferences', formatOptionDescription('Explicitly tell the CLI to reset any stored preferences')) .allowUnknownOption() .parse(process.argv); //# sourceMappingURL=program.js.map