|
- const fg = require('fast-glob')
- const fse = require('fs-extra')
- const { basename } = require('path')
- const { showDir, moduleTypes } = require('./shared/base.cjs')
-
- /**
- * 自动删除
- * @param {import('plop').NodePlopAPI} plop
- */
- function remove(plop) {
- plop.setActionType('remove', (answers) => {
- const { name, type, shouldRemove } = answers
- const dir = showDir(type)
- const target = `./src/${dir}/${name}`
- if (shouldRemove) {
- return fse.removeSync(target)
- }
- throw new Error(`删除 ${target} 失败`)
- })
-
- plop.setGenerator('controller', {
- description: '自动删除',
- prompts: [
- {
- name: 'type',
- type: 'list',
- message: '请选择您要删除的类型',
- async choices() {
- const dirs = await fg('./src/**/*', {
- deep: 1,
- onlyDirectories: true,
- })
- const types = moduleTypes.filter((type) => {
- const dir = showDir(type)
- return dirs.includes(`./src/${dir}`)
- })
- return types
- },
- },
- {
- name: 'name',
- type: 'list',
- message({ type }) {
- return `请选择您要删除的 ${type} 模块`
- },
- async choices({ type }) {
- const dir = showDir(type)
- let modules = await fg(`./src/${dir}/*.*`, {
- deep: 1,
- onlyFiles: true,
- })
- modules = modules.map((module) => {
- return basename(module)
- })
- return modules
- },
- },
- {
- name: 'shouldRemove',
- type: 'confirm',
- default: false,
- message: '再次确认是否删除',
- },
- ],
- actions: [
- {
- type: 'remove',
- },
- ],
- })
- }
-
- module.exports = remove
|