@4399ywkf/cli 0.0.8 → 0.0.10

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/README.md CHANGED
@@ -1,28 +1,180 @@
1
- # 学习搭建cli脚手架
1
+ # YWKF CLI
2
2
 
3
- ## 安装
3
+ 🚀 运维开发部脚手架工具 - 快速创建现代化前端项目
4
+
5
+ ## ✨ 特性
6
+
7
+ - 🏗️ **多架构支持** - 微前端架构和独立应用架构
8
+ - ⚡ **多种构建工具** - 支持 Webpack 和 Vite
9
+ - 🎯 **智能模板选择** - 根据架构和工具类型智能推荐模板
10
+ - 🛠️ **自动化配置** - Webpack 子应用自动配置环境变量
11
+ - 🎨 **美观界面** - 彩色输出和进度指示器
12
+ - 📦 **开箱即用** - 内置最佳实践和常用配置
13
+
14
+ ## 📦 安装
15
+
16
+ ### 全局安装(推荐)
4
17
 
5
- ### 全局安装
6
18
  ```bash
7
19
  pnpm install -g @4399ywkf/cli
8
20
  ```
9
21
 
10
- ### 使用
11
- 创建模版
22
+ ### 使用 npx(无需安装)
23
+
24
+ ```bash
25
+ npx @4399ywkf/cli create <项目名称>
26
+ ```
27
+
28
+ ## 🎯 使用方法
29
+
30
+ ### 基本用法
31
+
32
+ ```bash
33
+ # 交互式创建项目
34
+ ywkf-cli create my-project
35
+
36
+ # 指定模板创建项目
37
+ ywkf-cli create my-project -t webpack-mainApplicate_demo
38
+ ```
39
+
40
+ ### 命令参数
41
+
42
+ ```bash
43
+ ywkf-cli create [项目名称] [选项]
44
+ ```
45
+
46
+ **选项:**
47
+
48
+ - `-t, --template <模板名称>` - 指定要使用的模板
49
+ - `-h, --help` - 显示帮助信息
50
+ - `-V, --version` - 显示版本号
51
+
52
+ ## 🏗️ 支持的架构
53
+
54
+ ### 微前端架构
55
+
56
+ 适用于大型应用的微前端解决方案,支持主应用和子应用:
57
+
58
+ #### Webpack 模板
59
+
60
+ - **主应用**: `webpack-mainApplicate_demo` - 微前端主应用模板
61
+ - **子应用**: `webpack-subApplicate_demo` - 微前端子应用模板
62
+
63
+ #### Vite 模板
64
+
65
+ - **主应用**: `vite-mainApplicate_demo` - 基于 Vite 的微前端主应用
66
+ - **子应用**: `vite-subApplicate_demo` - 基于 Vite 的微前端子应用
67
+
68
+ ### 独立应用架构
69
+
70
+ 适用于中小型项目的单体应用:
71
+
72
+ #### Next.js 模板
73
+
74
+ - **Next.js**: `next-demo` - React 全栈框架模板
75
+
76
+ ## 📋 使用示例
77
+
78
+ ### 创建微前端主应用
79
+
80
+ ```bash
81
+ # 使用 Webpack
82
+ ywkf-cli create main-app -t webpack-mainApplicate_demo
83
+
84
+ # 使用 Vite
85
+ ywkf-cli create main-app -t vite-mainApplicate_demo
86
+ ```
87
+
88
+ ### 创建微前端子应用
89
+
12
90
  ```bash
13
- @4399ywkf/cli create <name> [-t|--template]
91
+ # 使用 Webpack
92
+ ywkf-cli create sub-app -t webpack-subApplicate_demo
93
+
94
+ # 使用 Vite
95
+ ywkf-cli create sub-app -t vite-subApplicate_demo
14
96
  ```
15
- 示例
97
+
98
+ ### 创建独立应用
99
+
16
100
  ```bash
17
- @4399ywkf/cli create hello-cli -t dumi2-demo
101
+ # Next.js 应用
102
+ ywkf-cli create my-nextjs-app -t next-demo
18
103
  ```
19
104
 
20
- ### 不全局安装,借助npx
21
- 创建模版
105
+ ## ⚙️ 特殊功能
106
+
107
+ ### Webpack 子应用自动配置
108
+
109
+ 当创建 Webpack 子应用时,CLI 会自动帮你配置环境变量:
110
+
111
+ - **应用代码名称** (APP_NAME) - 应用的唯一标识符
112
+ - **应用名称** (APP_CNAME) - 应用的显示名称
113
+ - **Sentry 配置** - 错误监控配置
114
+ - **构建配置** - 输出路径和公共路径
115
+
116
+ ### 交互式选择流程
117
+
118
+ 1. 🏗️ **选择架构类型** - 微前端 or 独立应用
119
+ 2. 🔧 **选择构建工具** - Webpack or Vite
120
+ 3. 🎯 **选择应用类型** - 主应用 or 子应用
121
+ 4. 📋 **选择模板** - 根据前面的选择显示可用模板
122
+ 5. ⚙️ **配置环境** - 自动配置应用参数
123
+
124
+ ## 🚀 快速开始
125
+
126
+ 创建项目后,按照以下步骤启动开发:
127
+
22
128
  ```bash
23
- npx @4399ywkf/cli create <name> [-t|--template]
129
+ # 1. 进入项目目录
130
+ cd your-project-name
131
+
132
+ # 2. 切换到推荐的 Node.js 版本
133
+ nvm use
134
+
135
+ # 3. 安装依赖
136
+ pnpm install
137
+
138
+ # 4. 启动开发服务器
139
+ pnpm start
24
140
  ```
25
- 示例
141
+
142
+ ## 🛠️ 开发调试
143
+
144
+ 对于 CLI 工具的开发和调试,可以使用以下命令:
145
+
26
146
  ```bash
27
- npx @4399ywkf/cli create hello-cli -template dumi2-demo
147
+ # 开发模式运行
148
+ pnpm dev
149
+
150
+ # 调试模式
151
+ pnpm debug
152
+
153
+ # 调试创建命令
154
+ pnpm debug:create
155
+
156
+ # 调试帮助命令
157
+ pnpm debug:help
28
158
  ```
159
+
160
+ ## 📝 版本信息
161
+
162
+ 当前版本: `v0.0.8`
163
+
164
+ 查看版本信息:
165
+
166
+ ```bash
167
+ ywkf-cli --version
168
+ ```
169
+
170
+ ## 🤝 贡献
171
+
172
+ 欢迎提交 Issue 和 Pull Request 来帮助改进这个工具!
173
+
174
+ ## 📄 许可证
175
+
176
+ ISC License
177
+
178
+ ---
179
+
180
+ 🎉 **开始你的开发之旅吧!**
@@ -1,5 +1,13 @@
1
+ 'use strict';
2
+
3
+ var require$$0 = require('https');
4
+
5
+ function getDefaultExportFromCjs (x) {
6
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
7
+ }
8
+
1
9
  // bin/api.js
2
- const https = require('https')
10
+ const https = require$$0;
3
11
 
4
12
  /** 获取用户git仓库列表信息 */
5
13
  function getGitReposList(username) {
@@ -9,24 +17,28 @@ function getGitReposList(username) {
9
17
  'User-Agent': username
10
18
  }
11
19
  }, (res) => {
12
- let data = ''
20
+ let data = '';
13
21
  res.on('data', (chunk) => {
14
- data += chunk.toString()
15
- })
22
+ data += chunk.toString();
23
+ });
16
24
  res.on('end', () => {
17
- const list = JSON.parse(data)
25
+ const list = JSON.parse(data);
18
26
  resolve(list.map(item => ({ // 组合成模版所需要的name,value结构
19
27
  name: item.name,
20
28
  value: `https://github.com:${username}/${item.name}`
21
- })))
22
- })
29
+ })));
30
+ });
23
31
  res.on('error', (err) => {
24
- reject(err)
25
- })
26
- }).end()
32
+ reject(err);
33
+ });
34
+ }).end();
27
35
  })
28
36
  }
29
37
 
30
- module.exports = {
38
+ var api = {
31
39
  getGitReposList
32
- }
40
+ };
41
+
42
+ var api$1 = /*@__PURE__*/getDefaultExportFromCjs(api);
43
+
44
+ module.exports = api$1;
@@ -1,19 +1,34 @@
1
1
  #!/usr/bin/env node
2
- const program = require("commander");
3
- const inquirer = require("inquirer");
4
- const path = require("path");
5
- const ora = require("ora");
6
- const fs = require("fs-extra");
7
- const { exec } = require("child_process");
2
+ #!/usr/bin/env node
3
+ 'use strict';
4
+
5
+ var require$$0 = require('commander');
6
+ var require$$1 = require('inquirer');
7
+ var require$$2 = require('path');
8
+ var require$$3 = require('ora');
9
+ var require$$4 = require('fs-extra');
10
+ var require$$5 = require('child_process');
11
+ var require$$7 = require('chalk');
12
+ var require$$8 = require('boxen');
13
+ var require$$9 = require('figlet');
14
+ require('https');
15
+
16
+ var cli = {};
17
+
18
+ const program = require$$0;
19
+ const inquirer = require$$1;
20
+ const path = require$$2;
21
+ const ora = require$$3;
22
+ const fs = require$$4;
23
+ const { exec } = require$$5;
8
24
 
9
25
  // 美化输出相关
10
- const chalk = require("chalk");
11
- const boxen = require("boxen");
12
- const figlet = require("figlet");
13
-
14
- // const templates = require("./templates.js")
15
- const { getGitReposList } = require("./api.js");
16
- const package = require("../package.json");
26
+ const chalk = require$$7;
27
+ const boxen = require$$8;
28
+ const figlet = require$$9;
29
+ const pkgInfo = {
30
+ version: "0.0.10",
31
+ };
17
32
 
18
33
  // 美化输出函数
19
34
  function printBanner() {
@@ -26,7 +41,7 @@ function printBanner() {
26
41
  })
27
42
  )
28
43
  );
29
- console.log(chalk.gray(`版本: ${package.version}\n`));
44
+ console.log(chalk.gray(`版本: ${pkgInfo.version}\n`));
30
45
  }
31
46
 
32
47
  function printSuccess(message) {
@@ -257,49 +272,7 @@ program
257
272
  getRepoLoading.start();
258
273
 
259
274
  // 模拟异步获取模版数据
260
- const templates = {
261
- microFrontend: {
262
- webpack: {
263
- main: [
264
- {
265
- value:
266
- "https://ywgit.gz4399.com/ywkf/webpack-mainApplicate_demo.git",
267
- name: "webpack-mainApplicate_demo",
268
- },
269
- ],
270
- sub: [
271
- {
272
- value:
273
- "https://ywgit.gz4399.com/ywkf/webpack-subApplicate_demo.git",
274
- name: "webpack-subApplicate_demo",
275
- },
276
- ],
277
- },
278
- vite: {
279
- main: [
280
- {
281
- value:
282
- "https://ywgit.gz4399.com/ywkf/vite-mainApplicate_demo.git",
283
- name: "vite-mainApplicate_demo",
284
- },
285
- ],
286
- sub: [
287
- {
288
- value: "https://ywgit.gz4399.com/ywkf/vite-subApplicate_demo.git",
289
- name: "vite-subApplicate_demo",
290
- },
291
- ],
292
- },
293
- },
294
- standalone: {
295
- nextjs: [
296
- {
297
- value: "https://ywgit.gz4399.com/ywkf/next-dome.git",
298
- name: "next-demo",
299
- },
300
- ],
301
- },
302
- };
275
+ const templates = templates;
303
276
 
304
277
  getRepoLoading.succeed();
305
278
  printSuccess("模版列表获取成功!");
@@ -535,7 +508,7 @@ program
535
508
  });
536
509
 
537
510
  // 定义当前版本
538
- program.version(`v${package.version}`);
511
+ program.version(`v${pkgInfo.version}`);
539
512
  program.on("--help", () => {
540
513
  printBanner();
541
514
  console.log(chalk.gray("使用示例:"));
@@ -549,3 +522,5 @@ program.on("--help", () => {
549
522
  });
550
523
 
551
524
  program.parse(process.argv);
525
+
526
+ module.exports = cli;
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./cli.js');
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ function getDefaultExportFromCjs (x) {
4
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
5
+ }
6
+
7
+ /** 暴露模版代码 */
8
+
9
+ var templates = {
10
+ microFrontend: {
11
+ webpack: {
12
+ main: [
13
+ {
14
+ value: "https://ywgit.gz4399.com/ywkf/webpack-mainApplicate_demo.git",
15
+ name: "webpack-mainApplicate_demo",
16
+ },
17
+ ],
18
+ sub: [
19
+ {
20
+ value: "https://ywgit.gz4399.com/ywkf/webpack-subApplicate_demo.git",
21
+ name: "webpack-subApplicate_demo",
22
+ },
23
+ ],
24
+ },
25
+ vite: {
26
+ main: [
27
+ {
28
+ value: "https://ywgit.gz4399.com/ywkf/vite-mainApplicate_demo.git",
29
+ name: "vite-mainApplicate_demo",
30
+ },
31
+ ],
32
+ sub: [
33
+ {
34
+ value: "https://ywgit.gz4399.com/ywkf/vite-subApplicate_demo.git",
35
+ name: "vite-subApplicate_demo",
36
+ },
37
+ ],
38
+ },
39
+ },
40
+ standalone: {
41
+ nextjs: [
42
+ {
43
+ value: "https://ywgit.gz4399.com/ywkf/next-dome.git",
44
+ name: "next-demo",
45
+ },
46
+ ],
47
+ },
48
+ };
49
+
50
+ var templates$1 = /*@__PURE__*/getDefaultExportFromCjs(templates);
51
+
52
+ module.exports = templates$1;
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@4399ywkf/cli",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "description": "运维开发部脚手架",
5
- "main": "index.js",
5
+ "type": "module",
6
+ "main": "dist/index.js",
6
7
  "bin": {
7
- "ywkf-cli": "./bin/cli.js"
8
+ "ywkf-cli": "./dist/cli.js"
8
9
  },
9
10
  "publishConfig": {
10
11
  "access": "public"
@@ -27,8 +28,16 @@
27
28
  "inquirer": "^8.2.5",
28
29
  "ora": "^5.4.1"
29
30
  },
31
+ "devDependencies": {
32
+ "@rollup/plugin-commonjs": "^25.0.8",
33
+ "@rollup/plugin-json": "^6.1.0",
34
+ "@rollup/plugin-node-resolve": "^15.3.1",
35
+ "@rollup/plugin-replace": "^5.0.7",
36
+ "rollup": "^4.46.3",
37
+ "rollup-plugin-copy": "^3.5.0"
38
+ },
30
39
  "files": [
31
- "bin"
40
+ "dist"
32
41
  ],
33
42
  "authors": [
34
43
  "ywjszx@4399.com"
@@ -40,7 +49,13 @@
40
49
  "debug:create": "node --inspect-brk bin/cli.js create test-project",
41
50
  "debug:create-with-template": "node --inspect-brk bin/cli.js create test-project -t webpack-mainApplicate_demo",
42
51
  "debug:help": "node --inspect-brk bin/cli.js --help",
52
+ "build": "rollup -c && node scripts/postbuild.js",
53
+ "build:watch": "rollup -c -w",
43
54
  "link": "npm link",
44
- "unlink": "npm unlink -g"
55
+ "unlink": "npm unlink -g",
56
+ "changeset": "changeset",
57
+ "changeset:version": "changeset version",
58
+ "changeset:publish": "changeset publish",
59
+ "release": "pnpm build && pnpm changeset && pnpm changeset:version && pnpm changeset:publish"
45
60
  }
46
61
  }
package/bin/templates.js DELETED
@@ -1,15 +0,0 @@
1
- /** 暴露模版代码 */
2
- module.exports = [
3
- {
4
- name: 'webpack5-react-ts',
5
- value: 'https://github.com:guojiongwei/webpack5-react-ts'
6
- },
7
- {
8
- name: 'react18-vite2-ts',
9
- value: 'https://github.com:guojiongwei/react18-vite2-ts'
10
- },
11
- {
12
- name: 'dumi2-demo',
13
- value: 'https://github.com:guojiongwei/dumi2-demo'
14
- }
15
- ]