UNPKG

@eljs/template-npm-node

Version:
74 lines (64 loc) 1.7 kB
/* eslint-disable @typescript-eslint/naming-convention */ import { Api, defineConfig } from '@eljs/create' export const config = defineConfig({}) export default async (api: Api) => { api.addQuestions(() => { return [ { name: 'cli', type: (_, values) => values.repoType !== 'monorepo' ? 'confirm' : null, message: '是否提供命令行', }, { name: 'cliType', type: (_, values) => values.repoType !== 'monorepo' && values.cli ? 'select' : null, message: '命令行类型', choices: [ { title: '单命令', value: 'single' }, { title: '多命令', value: 'multiple' }, ], }, ] }) api.onStart(() => { api.extendPackage(() => { const { cli, cliType, unscopedName } = api.prompts const pkgJSON: Record<string, any> = { '@eljs/utils': 'latest', } if (cli) { pkgJSON.files = ['bin', 'lib'] pkgJSON.bin = { [unscopedName]: `bin/${unscopedName}.js`, } } if (cliType === 'multiple') { pkgJSON.dependencies = { leven: '^3.1.0', } } return pkgJSON }) }) api.onGenerateFiles(({ prompts }) => { const { isMonorepo, cli, cliType } = prompts if (isMonorepo) { api.render('./templates/monorepo', { ...prompts, }) } else { api.render('./templates/polyrepo', { ...prompts, }) if (cli) { api.render('./templates/cli', { ...prompts, singleCommand: cliType === 'single', multipleCommand: cliType === 'multiple', }) } } }) }