@eljs/template-npm-node
Version:
@eljs/template-npm-node
74 lines (64 loc) • 1.7 kB
text/typescript
/* 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',
})
}
}
})
}