react-nest-cli 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "name": "react-nest-cli",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "一个脚手架工具,用于快速生成 react+nest 项目",
5
5
  "type": "module",
6
6
  "bin": {
7
- "react-nest": "./dist/index.js"
7
+ "react-nest": "./packages/cli/dist/index.js"
8
8
  },
9
- "main": "./dist/index.js",
9
+ "main": "./packages/cli/dist/index.js",
10
10
  "scripts": {
11
11
  "build": "tsup",
12
- "start": "ts-node ./packages/cli/src/index.ts"
12
+ "start": "ts-node ./packages/cli/src/index.ts",
13
+ "preview": "tsup && node ./packages/cli/dist/index.js"
13
14
  },
14
15
  "keywords": [
15
16
  "react",
@@ -34,7 +34,9 @@ var logInfo = () => {
34
34
  consola.start(picocolors.yellow(program.description()));
35
35
  consola.info(picocolors.yellow(program.version()));
36
36
  };
37
- var packageJson = JSON.parse(fsExtra.readFileSync(path.resolve(import.meta.dirname, "../../../package.json"), "utf-8"));
37
+ var packageJsonPath = path.resolve(import.meta.dirname, "../../../package.json");
38
+ var packageJson = JSON.parse(fsExtra.readFileSync(packageJsonPath, "utf-8"));
39
+ console.log(packageJsonPath, packageJson);
38
40
  program.version(packageJson.version, "-V, --version", "\u8F93\u51FA\u7248\u672C\u53F7").helpOption("-h, --help", "\u8F93\u51FA\u5E2E\u52A9\u4FE1\u606F").description(packageJson.description).action(logInfo);
39
41
  program.command("info").description("\u8F93\u51FA\u9879\u76EE\u4FE1\u606F").action(logInfo);
40
42
  program.command("init").description("\u521D\u59CB\u5316\u9879\u76EE").argument("[project-name]", "\u9879\u76EE\u540D\u79F0").option("--template <template-name>", "\u9879\u76EE\u6A21\u677F\u540D\u79F0").action(async (projectName, rest) => {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/configs/text.config.ts","../src/configs/prompts.config.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { program } from \"commander\";\nimport picocolors from \"picocolors\"; // 也可用chalk\nimport figlet from 'figlet';\nimport prompts from 'prompts'; // 也可用inquirer、手动readline等\nimport consola from \"consola\";\nimport ora from 'ora';\nimport { downloadTemplate } from 'giget';\nimport path from 'node:path';\nimport fsExtra from 'fs-extra';\nimport textConfig from './configs/text.config.ts';\nimport promptsConfig from \"./configs/prompts.config.ts\";\n\n\n// 输出项目信息\nconst logInfo = () => {\n console.info(picocolors.yellow(figlet.textSync('React Nest CLI', textConfig)))\n consola.start(picocolors.yellow(program.description()))\n consola.info(picocolors.yellow(program.version()))\n}\n\nconst packageJsonPath = path.resolve(import.meta.dirname, '../../../package.json');\nconst packageJson = JSON.parse(fsExtra.readFileSync(packageJsonPath, 'utf-8'));\n\nconsole.log(packageJsonPath, packageJson);\n\nprogram\n .version(packageJson.version, '-V, --version', '输出版本号')\n .helpOption('-h, --help', '输出帮助信息')\n // .help((str) => '帮助信息:\\n' + str)\n .description(packageJson.description)\n .action(logInfo);\n\n// 输出项目信息\nprogram\n .command('info')\n .description('输出项目信息')\n .action(logInfo);\n\n// 初始化项目\nprogram\n .command('init')\n .description('初始化项目')\n .argument('[project-name]', '项目名称')\n .option('--template <template-name>', '项目模板名称')\n .action(async (projectName, rest) => {\n let { template } = rest || {};\n // 如果projectName没有提供,让用户输入\n if (!projectName) {\n const response = await prompts({\n type: 'text',\n initial: 'my-project', // 默认值\n name: 'projectName',\n message: '请输入项目名称',\n // validate: value => value.length ? true : '请输入项目名称'\n });\n projectName = response.projectName;\n }\n\n // 如果template没有提供或者template不存在,让用户选择\n const noTemplate = (template && !promptsConfig.templates.find(item => item.value === template));\n if (!template || noTemplate) {\n if (noTemplate) {\n consola.error(`项目模板 ${template} 不存在, 请选择其他模板`);\n }\n const response = await prompts({\n type: 'select',\n name: 'template',\n message: '请选择项目模板',\n choices: promptsConfig.templates,\n initial: 0, // 默认选择第一个\n });\n template = response.template;\n }\n\n const tip = `初始化项目 ${projectName},模板 ${template}`;\n const spinner = ora({\n text: tip,\n color: 'blue',\n // spinner: 'growVertical',\n // isEnabled: false\n });\n spinner.start();\n\n const projectDir = path.resolve(import.meta.dirname, projectName);\n if (fsExtra.existsSync(projectDir)) {\n spinner.fail(`💥初始化失败: 项目目录 ${projectName} 已存在`);\n return;\n }\n\n const res = await downloadTemplate(`github:liaolonghui/react-nest-cli/packages/templates/${template}#main`, {\n dir: projectDir,\n });\n const { dir } = res;\n spinner.succeed(`项目初始化成功,项目目录:${dir}`);\n // console.log(res);\n\n });\n\n// 输出版本号\nprogram.command('version')\n .description('输出版本号')\n .action(() => {\n // 全局option -V, --version 已被注册,这里无需再注册version命令,只是为了演示\n consola.info(figlet.textSync(`version ==> ${program.version()}`, textConfig));\n });\n\nprogram.parse();","import type { FigletOptions } from \"figlet\";\n\nexport default {\n font: \"Ghost\",\n horizontalLayout: \"default\",\n verticalLayout: \"default\",\n width: 200,\n whitespaceBreak: true,\n} as FigletOptions","\n\nexport default {\n templates: [\n { title: 'React + Nest', value: 'react-nest', description: '这个模板包含了 React + Nest 项目的基本配置', disabled: false },\n { title: 'React + Nest + TypeScript', value: 'react-nest-ts', description: '这个模板包含了 React + Nest + TypeScript 项目的基本配置', disabled: false },\n ]\n}"],"mappings":"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","names":[]}
@@ -19,8 +19,10 @@ const logInfo = () => {
19
19
  consola.info(picocolors.yellow(program.version()))
20
20
  }
21
21
 
22
- const packageJson = JSON.parse(fsExtra.readFileSync(path.resolve(import.meta.dirname, '../../../package.json'), 'utf-8'));
22
+ const packageJsonPath = path.resolve(import.meta.dirname, '../../../package.json');
23
+ const packageJson = JSON.parse(fsExtra.readFileSync(packageJsonPath, 'utf-8'));
23
24
 
25
+ console.log(packageJsonPath, packageJson);
24
26
 
25
27
  program
26
28
  .version(packageJson.version, '-V, --version', '输出版本号')
package/tsup.config.ts CHANGED
@@ -3,6 +3,7 @@ import { defineConfig } from "tsup";
3
3
 
4
4
  export default defineConfig({
5
5
  entry: ['packages/cli/src/index.ts'],
6
+ outDir: 'packages/cli/dist',
6
7
  format: ['esm'],
7
8
  dts: true,
8
9
  sourcemap: true,
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../packages/cli/src/index.ts","../packages/cli/src/configs/text.config.ts","../packages/cli/src/configs/prompts.config.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { program } from \"commander\";\nimport picocolors from \"picocolors\"; // 也可用chalk\nimport figlet from 'figlet';\nimport prompts from 'prompts'; // 也可用inquirer、手动readline等\nimport consola from \"consola\";\nimport ora from 'ora';\nimport { downloadTemplate } from 'giget';\nimport path from 'node:path';\nimport fsExtra from 'fs-extra';\nimport textConfig from './configs/text.config.ts';\nimport promptsConfig from \"./configs/prompts.config.ts\";\n\n\n// 输出项目信息\nconst logInfo = () => {\n console.info(picocolors.yellow(figlet.textSync('React Nest CLI', textConfig)))\n consola.start(picocolors.yellow(program.description()))\n consola.info(picocolors.yellow(program.version()))\n}\n\nconst packageJson = JSON.parse(fsExtra.readFileSync(path.resolve(import.meta.dirname, '../../../package.json'), 'utf-8'));\n\n\nprogram\n .version(packageJson.version, '-V, --version', '输出版本号')\n .helpOption('-h, --help', '输出帮助信息')\n // .help((str) => '帮助信息:\\n' + str)\n .description(packageJson.description)\n .action(logInfo);\n\n// 输出项目信息\nprogram\n .command('info')\n .description('输出项目信息')\n .action(logInfo);\n\n// 初始化项目\nprogram\n .command('init')\n .description('初始化项目')\n .argument('[project-name]', '项目名称')\n .option('--template <template-name>', '项目模板名称')\n .action(async (projectName, rest) => {\n let { template } = rest || {};\n // 如果projectName没有提供,让用户输入\n if (!projectName) {\n const response = await prompts({\n type: 'text',\n initial: 'my-project', // 默认值\n name: 'projectName',\n message: '请输入项目名称',\n // validate: value => value.length ? true : '请输入项目名称'\n });\n projectName = response.projectName;\n }\n\n // 如果template没有提供或者template不存在,让用户选择\n const noTemplate = (template && !promptsConfig.templates.find(item => item.value === template));\n if (!template || noTemplate) {\n if (noTemplate) {\n consola.error(`项目模板 ${template} 不存在, 请选择其他模板`);\n }\n const response = await prompts({\n type: 'select',\n name: 'template',\n message: '请选择项目模板',\n choices: promptsConfig.templates,\n initial: 0, // 默认选择第一个\n });\n template = response.template;\n }\n\n const tip = `初始化项目 ${projectName},模板 ${template}`;\n const spinner = ora({\n text: tip,\n color: 'blue',\n // spinner: 'growVertical',\n // isEnabled: false\n });\n spinner.start();\n\n const projectDir = path.resolve(import.meta.dirname, projectName);\n if (fsExtra.existsSync(projectDir)) {\n spinner.fail(`💥初始化失败: 项目目录 ${projectName} 已存在`);\n return;\n }\n\n const res = await downloadTemplate(`github:liaolonghui/react-nest-cli/packages/templates/${template}#main`, {\n dir: projectDir,\n });\n const { dir } = res;\n spinner.succeed(`项目初始化成功,项目目录:${dir}`);\n // console.log(res);\n\n });\n\n// 输出版本号\nprogram.command('version')\n .description('输出版本号')\n .action(() => {\n // 全局option -V, --version 已被注册,这里无需再注册version命令,只是为了演示\n consola.info(figlet.textSync(`version ==> ${program.version()}`, textConfig));\n });\n\nprogram.parse();","import type { FigletOptions } from \"figlet\";\n\nexport default {\n font: \"Ghost\",\n horizontalLayout: \"default\",\n verticalLayout: \"default\",\n width: 200,\n whitespaceBreak: true,\n} as FigletOptions","\n\nexport default {\n templates: [\n { title: 'React + Nest', value: 'react-nest', description: '这个模板包含了 React + Nest 项目的基本配置', disabled: false },\n { title: 'React + Nest + TypeScript', value: 'react-nest-ts', description: '这个模板包含了 React + Nest + TypeScript 项目的基本配置', disabled: false },\n ]\n}"],"mappings":";;;AACA,SAAS,eAAe;AACxB,OAAO,gBAAgB;AACvB,OAAO,YAAY;AACnB,OAAO,aAAa;AACpB,OAAO,aAAa;AACpB,OAAO,SAAS;AAChB,SAAS,wBAAwB;AACjC,OAAO,UAAU;AACjB,OAAO,aAAa;;;ACPpB,IAAO,sBAAQ;AAAA,EACX,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,OAAO;AAAA,EACP,iBAAiB;AACrB;;;ACNA,IAAO,yBAAQ;AAAA,EACX,WAAW;AAAA,IACP,EAAE,OAAO,gBAAgB,OAAO,cAAc,aAAa,sGAAgC,UAAU,MAAM;AAAA,IAC3G,EAAE,OAAO,6BAA6B,OAAO,iBAAiB,aAAa,mHAA6C,UAAU,MAAM;AAAA,EAC5I;AACJ;;;AFQA,IAAM,UAAU,MAAM;AAClB,UAAQ,KAAK,WAAW,OAAO,OAAO,SAAS,kBAAkB,mBAAU,CAAC,CAAC;AAC7E,UAAQ,MAAM,WAAW,OAAO,QAAQ,YAAY,CAAC,CAAC;AACtD,UAAQ,KAAK,WAAW,OAAO,QAAQ,QAAQ,CAAC,CAAC;AACrD;AAEA,IAAM,cAAc,KAAK,MAAM,QAAQ,aAAa,KAAK,QAAQ,YAAY,SAAS,uBAAuB,GAAG,OAAO,CAAC;AAGxH,QACK,QAAQ,YAAY,SAAS,iBAAiB,gCAAO,EACrD,WAAW,cAAc,sCAAQ,EAEjC,YAAY,YAAY,WAAW,EACnC,OAAO,OAAO;AAGnB,QACK,QAAQ,MAAM,EACd,YAAY,sCAAQ,EACpB,OAAO,OAAO;AAGnB,QACK,QAAQ,MAAM,EACd,YAAY,gCAAO,EACnB,SAAS,kBAAkB,0BAAM,EACjC,OAAO,8BAA8B,sCAAQ,EAC7C,OAAO,OAAO,aAAa,SAAS;AACjC,MAAI,EAAE,SAAS,IAAI,QAAQ,CAAC;AAE5B,MAAI,CAAC,aAAa;AACd,UAAM,WAAW,MAAM,QAAQ;AAAA,MAC3B,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEb,CAAC;AACD,kBAAc,SAAS;AAAA,EAC3B;AAGA,QAAM,aAAc,YAAY,CAAC,uBAAc,UAAU,KAAK,UAAQ,KAAK,UAAU,QAAQ;AAC7F,MAAI,CAAC,YAAY,YAAY;AACzB,QAAI,YAAY;AACZ,cAAQ,MAAM,4BAAQ,QAAQ,iEAAe;AAAA,IACjD;AACA,UAAM,WAAW,MAAM,QAAQ;AAAA,MAC3B,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,uBAAc;AAAA,MACvB,SAAS;AAAA;AAAA,IACb,CAAC;AACD,eAAW,SAAS;AAAA,EACxB;AAEA,QAAM,MAAM,kCAAS,WAAW,sBAAO,QAAQ;AAC/C,QAAM,UAAU,IAAI;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAAA,EAGX,CAAC;AACD,UAAQ,MAAM;AAEd,QAAM,aAAa,KAAK,QAAQ,YAAY,SAAS,WAAW;AAChE,MAAI,QAAQ,WAAW,UAAU,GAAG;AAChC,YAAQ,KAAK,qEAAiB,WAAW,qBAAM;AAC/C;AAAA,EACJ;AAEA,QAAM,MAAM,MAAM,iBAAiB,wDAAwD,QAAQ,SAAS;AAAA,IACxG,KAAK;AAAA,EACT,CAAC;AACD,QAAM,EAAE,IAAI,IAAI;AAChB,UAAQ,QAAQ,iFAAgB,GAAG,EAAE;AAGzC,CAAC;AAGL,QAAQ,QAAQ,SAAS,EACpB,YAAY,gCAAO,EACnB,OAAO,MAAM;AAEV,UAAQ,KAAK,OAAO,SAAS,eAAe,QAAQ,QAAQ,CAAC,IAAI,mBAAU,CAAC;AAChF,CAAC;AAEL,QAAQ,MAAM;","names":[]}
File without changes