diff --git a/packages/cli/package.json b/packages/cli/package.json index 2491b284..df790e57 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -27,6 +27,7 @@ "@types/gulp-postcss": "^8.0.3", "@types/gulp-rename": "^2.0.2", "@types/inquirer": "^9.0.3", + "@types/lodash.camelcase": "^4.3.9", "@types/lodash.capitalize": "^4.2.7", "@types/lodash.kebabcase": "^4.1.7", "@types/lodash.template": "^4.5.1", @@ -65,6 +66,7 @@ "gulp-typescript": "6.0.0-alpha.1", "inquirer": "^9.2.10", "jiti": "^1.19.1", + "lodash.camelcase": "^4.3.0", "lodash.capitalize": "^4.2.1", "lodash.kebabcase": "^4.1.1", "lodash.template": "^4.5.0", diff --git a/packages/cli/src/commands/generate/document/index.ts b/packages/cli/src/commands/generate/document/index.ts index 9ab2f44c..1ef4f190 100644 --- a/packages/cli/src/commands/generate/document/index.ts +++ b/packages/cli/src/commands/generate/document/index.ts @@ -1,5 +1,7 @@ +import consola from 'consola'; import inquirer from 'inquirer'; import matter from 'gray-matter'; +import camelcase from 'lodash.camelcase'; import { basename, resolve } from 'node:path'; import { readFileSync, readJsonSync, readdirSync, writeFileSync } from 'fs-extra'; @@ -51,41 +53,27 @@ export default async () => { message: 'Please select the document category: ', }); - const { title } = await inquirer.prompt({ - name: 'title', + const { zName } = await inquirer.prompt({ + name: 'zName', type: 'input', validate: input => !!input?.trim(), - message: 'Please select the document title (browser tab title): ', + message: 'Please input the component Chinese name: ', }); - const { label } = await inquirer.prompt({ - name: 'label', - type: 'input', - validate: input => !!input?.trim(), - message: 'Please select the document label (link text): ', - }); + const formatedComponent = `${(component as string).charAt(0).toUpperCase()}${camelcase(component).slice(1)}`; + + const title = `${zName} ${formatedComponent}`; - // const orderMap = docs.reduce( - // (map, item) => { - // const { data } = matter(readFileSync(resolve(COMPONENTS_DOCS_DIR, `${item}.mdx`), 'utf-8')); - // if (data.category === category) { - // map[item] = data.order; - // } - // return map; - // }, - // {} as Record - // ); + const label = `${formatedComponent} ${zName}`; const order = docs.reduce((memo, item) => { const { data } = matter(readFileSync(resolve(COMPONENTS_DOCS_DIR, `${item}.mdx`), 'utf-8')); - if (data.category === category) { - memo++; - } - return memo; + return data.category === category ? memo + 1 : memo; }, 1); writeFileSync( resolve(COMPONENTS_DOCS_DIR, `${component}.mdx`), matter.stringify(`# ${label}`, { title, label, category, order }) ); + consola.success('generate successfully'); }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a5a94af9..bc8bb6b9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -319,6 +319,9 @@ importers: jiti: specifier: ^1.19.1 version: 1.20.0 + lodash.camelcase: + specifier: ^4.3.0 + version: 4.3.0 lodash.capitalize: specifier: ^4.2.1 version: 4.2.1 @@ -371,6 +374,9 @@ importers: '@types/inquirer': specifier: ^9.0.3 version: 9.0.3 + '@types/lodash.camelcase': + specifier: ^4.3.9 + version: 4.3.9 '@types/lodash.capitalize': specifier: ^4.2.7 version: 4.2.7 @@ -3373,6 +3379,12 @@ packages: '@types/node': 20.7.0 dev: true + /@types/lodash.camelcase@4.3.9: + resolution: {integrity: sha512-ys9/hGBfsKxzmFI8hckII40V0ASQ83UM2pxfQRghHAwekhH4/jWtjz/3/9YDy7ZpUd/H0k2STSqmPR28dnj7Zg==} + dependencies: + '@types/lodash': 4.14.199 + dev: true + /@types/lodash.capitalize@4.2.7: resolution: {integrity: sha512-NKtwU9vJFCx7Q6RYMAKQS0Vo2QUF81tyjvfYnhMxw8+ZMj8R4iv2zmLq5ARy28dGXuK0MqqWg45zGRuTnsnFag==} dependencies: