feng3d-cli 0.0.1
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 +148 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +98 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/create.d.ts +13 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +118 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/oss.d.ts +11 -0
- package/dist/commands/oss.d.ts.map +1 -0
- package/dist/commands/oss.js +107 -0
- package/dist/commands/oss.js.map +1 -0
- package/dist/commands/update.d.ts +20 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +172 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/eslint.d.ts +236 -0
- package/dist/eslint.d.ts.map +1 -0
- package/dist/eslint.js +119 -0
- package/dist/eslint.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/templates.d.ts +44 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +146 -0
- package/dist/templates.js.map +1 -0
- package/dist/versions.d.ts +29 -0
- package/dist/versions.d.ts.map +1 -0
- package/dist/versions.js +54 -0
- package/dist/versions.js.map +1 -0
- package/package.json +68 -0
- package/templates/.cursorrules +79 -0
package/README.md
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# feng3d-cli
|
|
2
|
+
|
|
3
|
+
feng3d 命令行工具,包含项目规范、配置模板、OSS 上传等功能。
|
|
4
|
+
|
|
5
|
+
## 功能特性
|
|
6
|
+
|
|
7
|
+
- 📋 统一的代码规范(ESLint 配置)
|
|
8
|
+
- 📦 统一的依赖版本管理
|
|
9
|
+
- 🛠️ CLI 工具支持创建和更新项目
|
|
10
|
+
- 📝 项目模板(.gitignore, .cursorrules, tsconfig.json 等)
|
|
11
|
+
- 📤 阿里云 OSS 文件上传
|
|
12
|
+
|
|
13
|
+
## 安装
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g feng3d-cli
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
或作为开发依赖:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install -D feng3d-cli
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## CLI 使用
|
|
26
|
+
|
|
27
|
+
### 创建新项目
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
feng3d-cli create my-project
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
选项:
|
|
34
|
+
- `-d, --directory <dir>` - 项目目录(默认:当前目录)
|
|
35
|
+
- `--no-examples` - 不创建示例目录
|
|
36
|
+
- `--no-vitest` - 不包含 vitest 测试配置
|
|
37
|
+
|
|
38
|
+
### 更新现有项目
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
feng3d-cli update
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
选项:
|
|
45
|
+
- `-d, --directory <dir>` - 项目目录(默认:当前目录)
|
|
46
|
+
- `--eslint` - 仅更新 ESLint 配置
|
|
47
|
+
- `--gitignore` - 仅更新 .gitignore
|
|
48
|
+
- `--cursorrules` - 仅更新 .cursorrules
|
|
49
|
+
- `--deps` - 仅更新依赖版本
|
|
50
|
+
- `--all` - 更新所有配置
|
|
51
|
+
|
|
52
|
+
### 上传到阿里云 OSS
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
feng3d-cli oss_upload_dir # 上传 ./public 目录
|
|
56
|
+
feng3d-cli oss_upload_dir -l ./dist # 指定本地目录
|
|
57
|
+
feng3d-cli oss_upload_dir -l ./public -o my-project # 指定 OSS 目录
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
选项:
|
|
61
|
+
- `-l, --local_dir <dir>` - 本地目录(默认:./public)
|
|
62
|
+
- `-o, --oss_dir <dir>` - OSS 目录(默认:从 package.json 的 name 获取)
|
|
63
|
+
|
|
64
|
+
> 注意:需要在 `C:/Users/Administrator/oss_config.json` 配置 OSS 访问密钥
|
|
65
|
+
|
|
66
|
+
## 编程使用
|
|
67
|
+
|
|
68
|
+
### 获取统一版本
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
import { VERSIONS, getDevDependencies } from 'feng3d-cli';
|
|
72
|
+
|
|
73
|
+
// 获取特定依赖版本
|
|
74
|
+
console.log(VERSIONS.typescript); // '5.8.3'
|
|
75
|
+
console.log(VERSIONS.vitest); // '^3.1.3'
|
|
76
|
+
|
|
77
|
+
// 获取完整的 devDependencies
|
|
78
|
+
const deps = getDevDependencies({
|
|
79
|
+
includeVitest: true,
|
|
80
|
+
includeCoverage: true,
|
|
81
|
+
includeTypedoc: true,
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 使用 ESLint 配置
|
|
86
|
+
|
|
87
|
+
在项目的 `eslint.config.js` 中:
|
|
88
|
+
|
|
89
|
+
```javascript
|
|
90
|
+
import { eslintRules } from 'feng3d-cli/eslint';
|
|
91
|
+
|
|
92
|
+
export default [
|
|
93
|
+
// ... 其他配置
|
|
94
|
+
{
|
|
95
|
+
rules: eslintRules,
|
|
96
|
+
},
|
|
97
|
+
];
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 使用模板
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
import {
|
|
104
|
+
gitignoreTemplate,
|
|
105
|
+
cursorrrulesTemplate,
|
|
106
|
+
tsconfigTemplate,
|
|
107
|
+
createTypedocConfig,
|
|
108
|
+
} from 'feng3d-cli';
|
|
109
|
+
|
|
110
|
+
// 创建 typedoc 配置
|
|
111
|
+
const config = createTypedocConfig({
|
|
112
|
+
name: '@feng3d/my-package',
|
|
113
|
+
repoName: 'my-package',
|
|
114
|
+
});
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## 统一版本
|
|
118
|
+
|
|
119
|
+
| 依赖 | 版本 |
|
|
120
|
+
|------|------|
|
|
121
|
+
| TypeScript | 5.8.3 |
|
|
122
|
+
| ESLint | 9.26.0 |
|
|
123
|
+
| Vitest | ^3.1.3 |
|
|
124
|
+
| Vite | ^6.3.5 |
|
|
125
|
+
| TypeDoc | ^0.28.4 |
|
|
126
|
+
|
|
127
|
+
## 代码规范
|
|
128
|
+
|
|
129
|
+
### 缩进
|
|
130
|
+
- 使用 4 空格缩进
|
|
131
|
+
|
|
132
|
+
### 引号
|
|
133
|
+
- 使用单引号
|
|
134
|
+
|
|
135
|
+
### 命名规范
|
|
136
|
+
- 变量和函数:camelCase
|
|
137
|
+
- 类和接口:PascalCase
|
|
138
|
+
- 常量:UPPER_SNAKE_CASE
|
|
139
|
+
|
|
140
|
+
### Git 提交规范
|
|
141
|
+
- 使用简体中文
|
|
142
|
+
- 遵循 Conventional Commits 格式
|
|
143
|
+
- 类型:feat, fix, refactor, perf, style, docs, test, chore, build, ci
|
|
144
|
+
|
|
145
|
+
## 许可证
|
|
146
|
+
|
|
147
|
+
MIT
|
|
148
|
+
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* feng3d-cli
|
|
4
|
+
* feng3d 命令行工具,包含项目规范、OSS 上传等功能
|
|
5
|
+
*/
|
|
6
|
+
import fs from 'fs';
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { createProject } from './commands/create.js';
|
|
10
|
+
import { updateProject } from './commands/update.js';
|
|
11
|
+
import { ossUploadDir } from './commands/oss.js';
|
|
12
|
+
const program = new Command();
|
|
13
|
+
program
|
|
14
|
+
.name('feng3d-cli')
|
|
15
|
+
.description('feng3d 命令行工具')
|
|
16
|
+
.version('0.0.1');
|
|
17
|
+
program
|
|
18
|
+
.command('create <name>')
|
|
19
|
+
.description('创建符合 feng3d 规范的新项目')
|
|
20
|
+
.option('-d, --directory <dir>', '项目目录', '.')
|
|
21
|
+
.option('--no-examples', '不创建示例目录')
|
|
22
|
+
.option('--no-vitest', '不包含 vitest 测试配置')
|
|
23
|
+
.action(async (name, options) => {
|
|
24
|
+
console.log(chalk.blue(`\n🚀 创建项目: ${name}\n`));
|
|
25
|
+
try {
|
|
26
|
+
await createProject(name, options);
|
|
27
|
+
console.log(chalk.green(`\n✅ 项目 ${name} 创建成功!\n`));
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error(chalk.red(`\n❌ 创建失败: ${error}\n`));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
program
|
|
35
|
+
.command('update')
|
|
36
|
+
.description('更新当前项目的规范配置')
|
|
37
|
+
.option('-d, --directory <dir>', '项目目录', '.')
|
|
38
|
+
.option('--eslint', '仅更新 ESLint 配置')
|
|
39
|
+
.option('--gitignore', '仅更新 .gitignore')
|
|
40
|
+
.option('--cursorrules', '仅更新 .cursorrules')
|
|
41
|
+
.option('--deps', '仅更新依赖版本')
|
|
42
|
+
.option('--all', '更新所有配置')
|
|
43
|
+
.action(async (options) => {
|
|
44
|
+
console.log(chalk.blue('\n🔄 更新项目规范配置\n'));
|
|
45
|
+
try {
|
|
46
|
+
await updateProject(options);
|
|
47
|
+
console.log(chalk.green('\n✅ 规范配置更新成功!\n'));
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.error(chalk.red(`\n❌ 更新失败: ${error}\n`));
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
program
|
|
55
|
+
.command('check')
|
|
56
|
+
.description('检查当前项目是否符合 feng3d 规范')
|
|
57
|
+
.option('-d, --directory <dir>', '项目目录', '.')
|
|
58
|
+
.action(async () => {
|
|
59
|
+
console.log(chalk.blue('\n🔍 检查项目规范\n'));
|
|
60
|
+
// TODO: 实现规范检查
|
|
61
|
+
console.log(chalk.yellow('暂未实现'));
|
|
62
|
+
});
|
|
63
|
+
program
|
|
64
|
+
.command('oss_upload_dir')
|
|
65
|
+
.description('上传文件夹到阿里云 OSS')
|
|
66
|
+
.option('-l, --local_dir <string>', '本地目录', './public')
|
|
67
|
+
.option('-o, --oss_dir <string>', 'OSS 目录', '')
|
|
68
|
+
.action(async (options) => {
|
|
69
|
+
const localDir = options.local_dir;
|
|
70
|
+
let ossDir = options.oss_dir;
|
|
71
|
+
if (!fs.existsSync(localDir)) {
|
|
72
|
+
console.log(chalk.red(`\n❌ 本地目录 ${localDir} 不存在!\n`));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (!ossDir) {
|
|
76
|
+
// 获取当前目录下 package.json 的 name 字段
|
|
77
|
+
try {
|
|
78
|
+
const packageJson = fs.readFileSync('package.json', 'utf-8');
|
|
79
|
+
const packageJsonObj = JSON.parse(packageJson);
|
|
80
|
+
ossDir = packageJsonObj.name.split('/').pop();
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
console.log(chalk.red('\n❌ 无法读取 package.json 获取项目名称\n'));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
console.log(chalk.blue(`\n📤 上传文件夹到阿里云 OSS: ${localDir} -> ${ossDir}\n`));
|
|
88
|
+
try {
|
|
89
|
+
await ossUploadDir(localDir, ossDir);
|
|
90
|
+
console.log(chalk.green('\n✅ 上传完成!\n'));
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
console.error(chalk.red(`\n❌ 上传失败: ${error}\n`));
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
program.parse();
|
|
98
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 创建新项目命令
|
|
3
|
+
*/
|
|
4
|
+
export interface CreateOptions {
|
|
5
|
+
directory: string;
|
|
6
|
+
examples?: boolean;
|
|
7
|
+
vitest?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 创建符合 feng3d 规范的新项目
|
|
11
|
+
*/
|
|
12
|
+
export declare function createProject(name: string, options: CreateOptions): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAsEvF"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 创建新项目命令
|
|
3
|
+
*/
|
|
4
|
+
import fs from 'fs-extra';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { getDevDependencies } from '../versions.js';
|
|
8
|
+
import { gitignoreTemplate, cursorrrulesTemplate, tsconfigTemplate, vitestConfigTemplate, createTypedocConfig, } from '../templates.js';
|
|
9
|
+
import { createEslintConfigFile } from './update.js';
|
|
10
|
+
/**
|
|
11
|
+
* 创建符合 feng3d 规范的新项目
|
|
12
|
+
*/
|
|
13
|
+
export async function createProject(name, options) {
|
|
14
|
+
const projectDir = path.join(options.directory, name);
|
|
15
|
+
// 检查目录是否已存在
|
|
16
|
+
if (await fs.pathExists(projectDir)) {
|
|
17
|
+
throw new Error(`目录 ${projectDir} 已存在`);
|
|
18
|
+
}
|
|
19
|
+
// 创建项目目录
|
|
20
|
+
await fs.ensureDir(projectDir);
|
|
21
|
+
await fs.ensureDir(path.join(projectDir, 'src'));
|
|
22
|
+
console.log(chalk.gray(` 创建目录: ${projectDir}`));
|
|
23
|
+
// 创建 package.json
|
|
24
|
+
const packageJson = createPackageJson(name, options);
|
|
25
|
+
await fs.writeJson(path.join(projectDir, 'package.json'), packageJson, { spaces: 4 });
|
|
26
|
+
console.log(chalk.gray(' 创建: package.json'));
|
|
27
|
+
// 创建 tsconfig.json
|
|
28
|
+
await fs.writeJson(path.join(projectDir, 'tsconfig.json'), tsconfigTemplate, { spaces: 4 });
|
|
29
|
+
console.log(chalk.gray(' 创建: tsconfig.json'));
|
|
30
|
+
// 创建 .gitignore
|
|
31
|
+
await fs.writeFile(path.join(projectDir, '.gitignore'), gitignoreTemplate);
|
|
32
|
+
console.log(chalk.gray(' 创建: .gitignore'));
|
|
33
|
+
// 创建 .cursorrules
|
|
34
|
+
await fs.writeFile(path.join(projectDir, '.cursorrules'), cursorrrulesTemplate);
|
|
35
|
+
console.log(chalk.gray(' 创建: .cursorrules'));
|
|
36
|
+
// 创建 eslint.config.js
|
|
37
|
+
await createEslintConfigFile(projectDir);
|
|
38
|
+
console.log(chalk.gray(' 创建: eslint.config.js'));
|
|
39
|
+
// 创建 vitest.config.ts
|
|
40
|
+
if (options.vitest !== false) {
|
|
41
|
+
await fs.writeFile(path.join(projectDir, 'vitest.config.ts'), vitestConfigTemplate);
|
|
42
|
+
console.log(chalk.gray(' 创建: vitest.config.ts'));
|
|
43
|
+
}
|
|
44
|
+
// 创建 typedoc.json
|
|
45
|
+
const typedocConfig = createTypedocConfig({ name: `@feng3d/${name}`, repoName: name });
|
|
46
|
+
await fs.writeJson(path.join(projectDir, 'typedoc.json'), typedocConfig, { spaces: 4 });
|
|
47
|
+
console.log(chalk.gray(' 创建: typedoc.json'));
|
|
48
|
+
// 创建 src/index.ts
|
|
49
|
+
await fs.writeFile(path.join(projectDir, 'src/index.ts'), `/**\n * @feng3d/${name}\n */\n\nexport {};\n`);
|
|
50
|
+
console.log(chalk.gray(' 创建: src/index.ts'));
|
|
51
|
+
// 创建 README.md
|
|
52
|
+
await fs.writeFile(path.join(projectDir, 'README.md'), `# @feng3d/${name}\n`);
|
|
53
|
+
console.log(chalk.gray(' 创建: README.md'));
|
|
54
|
+
// 创建示例目录
|
|
55
|
+
if (options.examples !== false) {
|
|
56
|
+
await fs.ensureDir(path.join(projectDir, 'examples'));
|
|
57
|
+
console.log(chalk.gray(' 创建: examples/'));
|
|
58
|
+
}
|
|
59
|
+
// 创建测试目录
|
|
60
|
+
if (options.vitest !== false) {
|
|
61
|
+
await fs.ensureDir(path.join(projectDir, 'test'));
|
|
62
|
+
console.log(chalk.gray(' 创建: test/'));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 创建 package.json 内容
|
|
67
|
+
*/
|
|
68
|
+
function createPackageJson(name, options) {
|
|
69
|
+
const scripts = {
|
|
70
|
+
dev: 'cd examples && npm run dev',
|
|
71
|
+
clean: 'rimraf "{lib,dist,public}"',
|
|
72
|
+
build: 'vite build',
|
|
73
|
+
types: 'tsc',
|
|
74
|
+
watch: 'tsc -w',
|
|
75
|
+
lint: 'eslint . --ext .js,.ts --max-warnings 0',
|
|
76
|
+
lintfix: 'npm run lint -- --fix',
|
|
77
|
+
docs: 'typedoc',
|
|
78
|
+
release: 'npm run clean && npm run lint && npm run build && npm run docs && npm run types && npm publish',
|
|
79
|
+
prepublishOnly: 'node scripts/prepublish.js',
|
|
80
|
+
postpublish: 'node scripts/postpublish.js',
|
|
81
|
+
};
|
|
82
|
+
if (options.vitest !== false) {
|
|
83
|
+
scripts.test = 'vitest run';
|
|
84
|
+
scripts['test:watch'] = 'vitest';
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
name: `@feng3d/${name}`,
|
|
88
|
+
version: '0.0.1',
|
|
89
|
+
description: '',
|
|
90
|
+
homepage: `https://feng3d.com/${name}/`,
|
|
91
|
+
author: 'feng',
|
|
92
|
+
type: 'module',
|
|
93
|
+
main: './src/index.ts',
|
|
94
|
+
types: './src/index.ts',
|
|
95
|
+
module: './src/index.ts',
|
|
96
|
+
exports: {
|
|
97
|
+
'.': {
|
|
98
|
+
types: './src/index.ts',
|
|
99
|
+
import: './src/index.ts',
|
|
100
|
+
require: './src/index.ts',
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
scripts,
|
|
104
|
+
repository: {
|
|
105
|
+
type: 'git',
|
|
106
|
+
url: `https://github.com/feng3d-labs/${name}.git`,
|
|
107
|
+
},
|
|
108
|
+
publishConfig: {
|
|
109
|
+
access: 'public',
|
|
110
|
+
},
|
|
111
|
+
files: ['src', 'dist', 'lib'],
|
|
112
|
+
devDependencies: getDevDependencies({
|
|
113
|
+
includeVitest: options.vitest !== false,
|
|
114
|
+
includeTypedoc: true,
|
|
115
|
+
}),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OSS 上传命令
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* 将本地目录中的所有文件上传到指定的 OSS 目录中。
|
|
6
|
+
*
|
|
7
|
+
* @param localDirPath - 本地目录的路径,包含需要上传的文件。
|
|
8
|
+
* @param ossDirPath - OSS 目录的路径,文件将被上传到此目录。
|
|
9
|
+
*/
|
|
10
|
+
export declare function ossUploadDir(localDirPath: string, ossDirPath: string): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=oss.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oss.d.ts","sourceRoot":"","sources":["../../src/commands/oss.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B1F"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OSS 上传命令
|
|
3
|
+
*/
|
|
4
|
+
import OSS from 'ali-oss';
|
|
5
|
+
import fs from 'fs';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
// 定义 JSON 配置文件的路径
|
|
8
|
+
const configPath = 'C:/Users/Administrator/oss_config.json';
|
|
9
|
+
/**
|
|
10
|
+
* 将本地目录中的所有文件上传到指定的 OSS 目录中。
|
|
11
|
+
*
|
|
12
|
+
* @param localDirPath - 本地目录的路径,包含需要上传的文件。
|
|
13
|
+
* @param ossDirPath - OSS 目录的路径,文件将被上传到此目录。
|
|
14
|
+
*/
|
|
15
|
+
export async function ossUploadDir(localDirPath, ossDirPath) {
|
|
16
|
+
// 读取配置文件以获取 OSS 相关的配置信息
|
|
17
|
+
const config = readConfig(configPath);
|
|
18
|
+
if (!config) {
|
|
19
|
+
console.error('无法读取配置文件');
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// 根据配置初始化 OSS 客户端
|
|
23
|
+
const client = initializeOSS(config);
|
|
24
|
+
// 收集本地目录中所有需要上传的文件,并计算它们在 OSS 中的目标路径
|
|
25
|
+
const { files, failedFiles } = collectFiles(localDirPath, ossDirPath);
|
|
26
|
+
console.log(`总文件数: ${files.length}`);
|
|
27
|
+
// 执行文件上传操作,并统计成功和失败的文件数量
|
|
28
|
+
const { successCount, failureCount } = await uploadFiles(files, client, failedFiles);
|
|
29
|
+
console.log(`上传完成: 成功 ${successCount} 个, 失败 ${failureCount} 个`);
|
|
30
|
+
if (failureCount > 0) {
|
|
31
|
+
console.log('上传失败的文件列表:');
|
|
32
|
+
failedFiles.forEach((file) => console.log(file));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 读取并解析 JSON 配置文件
|
|
37
|
+
*/
|
|
38
|
+
function readConfig(filePath) {
|
|
39
|
+
try {
|
|
40
|
+
// 读取文件内容
|
|
41
|
+
const fileContent = fs.readFileSync(filePath, 'utf8');
|
|
42
|
+
// 解析 JSON 内容
|
|
43
|
+
const config = JSON.parse(fileContent);
|
|
44
|
+
return config;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error('读取或解析配置文件时出错:', error);
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 初始化 OSS 客户端
|
|
53
|
+
*/
|
|
54
|
+
function initializeOSS(config) {
|
|
55
|
+
return new OSS({
|
|
56
|
+
region: config.region,
|
|
57
|
+
accessKeyId: config.accessKeyId,
|
|
58
|
+
accessKeySecret: config.accessKeySecret,
|
|
59
|
+
bucket: config.bucket,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 计算文件夹中所有需要上传的文件以及需要上传的地址
|
|
64
|
+
*/
|
|
65
|
+
function collectFiles(dirPath, ossDirPath) {
|
|
66
|
+
const files = [];
|
|
67
|
+
const failedFiles = [];
|
|
68
|
+
function traverseDirectory(currentDirPath, currentOssPath) {
|
|
69
|
+
const items = fs.readdirSync(currentDirPath);
|
|
70
|
+
for (const item of items) {
|
|
71
|
+
const localFilePath = path.join(currentDirPath, item);
|
|
72
|
+
const ossFilePath = `${currentOssPath}/${item}`;
|
|
73
|
+
if (fs.statSync(localFilePath).isDirectory()) {
|
|
74
|
+
traverseDirectory(localFilePath, ossFilePath);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
files.push({ localFilePath, ossFilePath });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
traverseDirectory(dirPath, ossDirPath);
|
|
82
|
+
return { files, failedFiles };
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 执行上传一系列文件
|
|
86
|
+
*/
|
|
87
|
+
async function uploadFiles(files, client, failedFiles) {
|
|
88
|
+
let successCount = 0;
|
|
89
|
+
let failureCount = 0;
|
|
90
|
+
let uploadedCount = 0;
|
|
91
|
+
for (const { localFilePath, ossFilePath } of files) {
|
|
92
|
+
try {
|
|
93
|
+
// 上传文件
|
|
94
|
+
await client.put(ossFilePath, localFilePath);
|
|
95
|
+
successCount++;
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
console.error(`文件上传失败: ${localFilePath}`, e);
|
|
99
|
+
failedFiles.push(localFilePath);
|
|
100
|
+
failureCount++;
|
|
101
|
+
}
|
|
102
|
+
uploadedCount++;
|
|
103
|
+
console.log(`上传进度: ${uploadedCount}/${files.length}`);
|
|
104
|
+
}
|
|
105
|
+
return { successCount, failureCount, uploadedCount };
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=oss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oss.js","sourceRoot":"","sources":["../../src/commands/oss.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 更新项目规范命令
|
|
3
|
+
*/
|
|
4
|
+
export interface UpdateOptions {
|
|
5
|
+
directory: string;
|
|
6
|
+
eslint?: boolean;
|
|
7
|
+
gitignore?: boolean;
|
|
8
|
+
cursorrules?: boolean;
|
|
9
|
+
deps?: boolean;
|
|
10
|
+
all?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 更新项目的规范配置
|
|
14
|
+
*/
|
|
15
|
+
export declare function updateProject(options: UpdateOptions): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* 创建 ESLint 配置文件
|
|
18
|
+
*/
|
|
19
|
+
export declare function createEslintConfigFile(projectDir: string): Promise<void>;
|
|
20
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCzE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgH9E"}
|