UNPKG

create-pro-ts-lib

Version:

A command-line-interface for building Typescript libraries

112 lines (97 loc) 3.04 kB
// @ts-check const { Option } = require('./utils/options'); const { tsxLogic } = require('./logics/tsx'); const { prettierLogic } = require('./logics/prettier'); const { eslintLogic } = require('./logics/eslint'); const { testsLogic } = require('./logics/tests'); const { prettierEslintLogic } = require('./logics/prettier-eslint'); const { separatedLogic, combinedLogic } = require('./logics/flags/test-mode'); const { huskyLogic } = require('./logics/husky'); const chalk = require('chalk'); const webpackLogic = require('./logics/webpack'); const viteLogic = require('./logics/vite'); const tsupLogic = require('./logics/tsup'); const pkg = require('./package.json'); module.exports = { version: pkg.version ?? 'unknown', options: [ new Option('tsx') .setDescription('Adds Tsx') .setAlias('t') .setColor(chalk.red) .setLogic(tsxLogic), new Option('eslint') .setDescription('Adds ESlint') .setAlias('e') .setColor('#ff6500') .setLogic(eslintLogic), new Option('prettier') .setDescription('Adds Prettier') .setAlias('p') .setColor(chalk.yellow) .setInitialSelected(true) .setLogic(prettierLogic), new Option('tests') .setDescription('Adds tests [jest]') .setAlias('t') .setColor(chalk.green) .setInitialSelected(true) .setLogic(testsLogic), new Option('husky') .setDescription('Adds husky (with lint-staged)') .setColor(chalk.blue) .setInitialSelected(false) .setLogic(huskyLogic), new Option('prettier-eslint', { visible: false }) .setDescription('Adds Prettier + Eslint') .setAlias('pe') .setLogic(prettierEslintLogic), ].sort((a, b) => a.name.localeCompare(b.name)), buildOptions: [ new Option('vite') .setDescription('build your library with vite') .setInitialSelected(true) .setAlias('vi') .setLogic(viteLogic) .setColor('#ffc920'), new Option('webpack') .setDescription('builds your library with webpack') .setColor('#84c7e8') .setAlias('w') .setInitialSelected(false) .setLogic(webpackLogic), new Option('tsup') .setDescription('builds your library using tsup') .setColor('#c526bb') .setAlias('tp') .setInitialSelected(false) .setLogic(tsupLogic), ].sort((a, b) => a.name.localeCompare(b.name)), flags: [ new Option('all') .setDescription(chalk.red`ADDS ALL FEATURES!`) .setAlias('a'), new Option('name', { type: 'string' }).setDescription('Project name'), new Option('dry').setDescription( 'Run the CLI without creating the files' ), new Option('no-colors').setDescription('Disable output colors'), new Option('test-mode', { type: 'string' }).setDescription( 'Sets test mode [separated / combined]' ), ], testMode: [ new Option('combined') .setDescription('tests will remain in src/ folder') .setLogic(combinedLogic), new Option('separated') .setDescription('tests fies will be in __tests__/ directory') .setLogic(separatedLogic), ], files: { rename: { '_package.json': 'package.json', _gitignore: '.gitignore', }, }, };