feng3d-cli 0.0.5 → 0.0.6
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 +54 -50
- package/bin/cli.js +2 -79
- package/dist/index.js +222 -480
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +224 -480
- package/dist/index.umd.cjs.map +1 -1
- package/lib/commands/create.d.ts.map +1 -1
- package/lib/commands/update.d.ts +2 -20
- package/lib/commands/update.d.ts.map +1 -1
- package/lib/index.d.ts +0 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/templates.d.ts +9 -7
- package/lib/templates.d.ts.map +1 -1
- package/lib/versions.d.ts +5 -19
- package/lib/versions.d.ts.map +1 -1
- package/package.json +5 -9
- package/templates/.github/workflows/pages.yml +11 -41
- package/templates/.github/workflows/pull-request.yml +3 -3
- package/templates/.github/workflows/upload-oss.yml +100 -0
- package/templates/.husky/pre-commit +32 -1
- package/templates/gitignore +0 -13
- package/templates/package.json +71 -0
- package/templates/scripts/postdocs.js +46 -0
- package/templates/src/index.ts +6 -0
- package/templates/vite.config.js +1 -0
- package/lib/commands/oss.d.ts +0 -11
- package/lib/commands/oss.d.ts.map +0 -1
- package/lib/types/config.d.ts +0 -113
- package/lib/types/config.d.ts.map +0 -1
- package/schemas/feng3d.schema.json +0 -196
- package/templates/feng3d.json +0 -43
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# 上传文档到 OSS
|
|
2
|
+
# 在 npm 发布成功后自动执行,也可手动触发
|
|
3
|
+
name: Upload to OSS
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
# npm 发布成功后自动触发
|
|
7
|
+
workflow_run:
|
|
8
|
+
workflows: ["Publish to NPM"]
|
|
9
|
+
types:
|
|
10
|
+
- completed
|
|
11
|
+
|
|
12
|
+
# 支持手动触发
|
|
13
|
+
workflow_dispatch:
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
upload:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
# 仅在 publish 成功后执行,或手动触发时执行
|
|
19
|
+
if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
|
|
20
|
+
steps:
|
|
21
|
+
- name: Checkout
|
|
22
|
+
uses: actions/checkout@v4
|
|
23
|
+
|
|
24
|
+
- name: Setup Node.js
|
|
25
|
+
uses: actions/setup-node@v4
|
|
26
|
+
with:
|
|
27
|
+
node-version: '20'
|
|
28
|
+
|
|
29
|
+
- name: Install dependencies
|
|
30
|
+
run: npm install
|
|
31
|
+
|
|
32
|
+
- name: Build docs
|
|
33
|
+
run: npm run docs
|
|
34
|
+
|
|
35
|
+
- name: Check OSS config
|
|
36
|
+
id: check_oss
|
|
37
|
+
run: |
|
|
38
|
+
if [ -z "${{ secrets.OSS_ACCESS_KEY_ID }}" ]; then
|
|
39
|
+
echo "OSS 未配置,跳过上传"
|
|
40
|
+
echo "skip=true" >> $GITHUB_OUTPUT
|
|
41
|
+
else
|
|
42
|
+
echo "skip=false" >> $GITHUB_OUTPUT
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
- name: Upload to OSS
|
|
46
|
+
if: steps.check_oss.outputs.skip != 'true'
|
|
47
|
+
env:
|
|
48
|
+
OSS_REGION: ${{ secrets.OSS_REGION }}
|
|
49
|
+
OSS_ACCESS_KEY_ID: ${{ secrets.OSS_ACCESS_KEY_ID }}
|
|
50
|
+
OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }}
|
|
51
|
+
OSS_BUCKET: ${{ secrets.OSS_BUCKET }}
|
|
52
|
+
run: |
|
|
53
|
+
# 检查 public 目录是否存在
|
|
54
|
+
if [ ! -d "public" ]; then
|
|
55
|
+
echo "public 目录不存在,跳过 OSS 上传"
|
|
56
|
+
exit 0
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# 获取仓库名作为 OSS 目录
|
|
60
|
+
REPO_NAME=$(node -p "require('./package.json').name.replace(/^@[^/]+\//, '')")
|
|
61
|
+
echo "上传目录: $REPO_NAME"
|
|
62
|
+
|
|
63
|
+
# 安装 ali-oss
|
|
64
|
+
npm install ali-oss --no-save
|
|
65
|
+
|
|
66
|
+
# 执行上传
|
|
67
|
+
node -e "
|
|
68
|
+
const OSS = require('ali-oss');
|
|
69
|
+
const fs = require('fs');
|
|
70
|
+
const path = require('path');
|
|
71
|
+
|
|
72
|
+
const client = new OSS({
|
|
73
|
+
region: process.env.OSS_REGION,
|
|
74
|
+
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
|
|
75
|
+
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
|
|
76
|
+
bucket: process.env.OSS_BUCKET,
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
const localDir = 'public';
|
|
80
|
+
const ossDir = '$REPO_NAME';
|
|
81
|
+
|
|
82
|
+
async function uploadDir(dir, ossPath) {
|
|
83
|
+
const items = fs.readdirSync(dir);
|
|
84
|
+
for (const item of items) {
|
|
85
|
+
const localPath = path.join(dir, item);
|
|
86
|
+
const remotePath = ossPath + '/' + item;
|
|
87
|
+
if (fs.statSync(localPath).isDirectory()) {
|
|
88
|
+
await uploadDir(localPath, remotePath);
|
|
89
|
+
} else {
|
|
90
|
+
await client.put(remotePath, localPath);
|
|
91
|
+
console.log('上传: ' + remotePath);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
uploadDir(localDir, ossDir)
|
|
97
|
+
.then(() => console.log('OSS 上传完成'))
|
|
98
|
+
.catch(err => { console.error('OSS 上传失败:', err); process.exit(1); });
|
|
99
|
+
"
|
|
100
|
+
|
|
@@ -1,2 +1,33 @@
|
|
|
1
|
-
|
|
1
|
+
#!/bin/sh
|
|
2
2
|
|
|
3
|
+
echo ""
|
|
4
|
+
echo "🔍 [1/2] 检查代码规范..."
|
|
5
|
+
echo ""
|
|
6
|
+
|
|
7
|
+
if ! npx lint-staged --allow-empty; then
|
|
8
|
+
echo ""
|
|
9
|
+
echo "❌ 代码规范检查失败!"
|
|
10
|
+
echo ""
|
|
11
|
+
echo "请修复以上 ESLint 错误后再提交。"
|
|
12
|
+
echo "提示: 运行 'npm run lintfix' 可自动修复部分问题。"
|
|
13
|
+
echo ""
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
echo ""
|
|
18
|
+
echo "🧪 [2/2] 运行单元测试..."
|
|
19
|
+
echo ""
|
|
20
|
+
|
|
21
|
+
if ! npm test; then
|
|
22
|
+
echo ""
|
|
23
|
+
echo "❌ 单元测试失败!"
|
|
24
|
+
echo ""
|
|
25
|
+
echo "请修复测试错误后再提交。"
|
|
26
|
+
echo "提示: 运行 'npm test' 查看详细错误信息。"
|
|
27
|
+
echo ""
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
echo ""
|
|
32
|
+
echo "✅ 所有检查通过,准备提交!"
|
|
33
|
+
echo ""
|
package/templates/gitignore
CHANGED
|
@@ -11,16 +11,3 @@ test_dist
|
|
|
11
11
|
# 测试覆盖率
|
|
12
12
|
coverage
|
|
13
13
|
|
|
14
|
-
# 以下文件可由 feng3d-cli 自动生成,无需提交
|
|
15
|
-
# 运行 `feng3d-cli update` 可重新生成
|
|
16
|
-
feng3d.json
|
|
17
|
-
.cursorrules
|
|
18
|
-
eslint.config.js
|
|
19
|
-
typedoc.json
|
|
20
|
-
test/_.test.ts
|
|
21
|
-
.husky/pre-commit
|
|
22
|
-
.vscode/settings.json
|
|
23
|
-
tsconfig.json
|
|
24
|
-
vite.config.js
|
|
25
|
-
scripts/prepublish.js
|
|
26
|
-
scripts/postpublish.js
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{name}}",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "",
|
|
5
|
+
"homepage": "https://feng3d.com/{{repoName}}/",
|
|
6
|
+
"author": "feng",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"main": "./src/index.ts",
|
|
10
|
+
"types": "./src/index.ts",
|
|
11
|
+
"module": "./src/index.ts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./src/index.ts",
|
|
15
|
+
"import": "./src/index.ts",
|
|
16
|
+
"require": "./src/index.ts"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"examples:dev": "cd examples && npm run dev",
|
|
21
|
+
"postdocs": "node scripts/postdocs.js && cd examples && vite build --outDir ../public",
|
|
22
|
+
"clean": "rimraf lib dist public",
|
|
23
|
+
"build": "vite build && tsc",
|
|
24
|
+
"watch": "concurrently \"vite build --watch\" \"tsc -w\" \"vitest\"",
|
|
25
|
+
"test": "vitest run",
|
|
26
|
+
"lint": "eslint . --ext .js,.ts --max-warnings 0",
|
|
27
|
+
"lintfix": "npm run lint -- --fix",
|
|
28
|
+
"docs": "typedoc",
|
|
29
|
+
"prepublishOnly": "node scripts/prepublish.js",
|
|
30
|
+
"release": "npm run clean && npm run lint && npm test && npm run build && npm run docs && npm publish",
|
|
31
|
+
"postpublish": "node scripts/postpublish.js",
|
|
32
|
+
"prepare": "husky"
|
|
33
|
+
},
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "https://github.com/feng3d-labs/{{repoName}}.git"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
41
|
+
"files": [
|
|
42
|
+
"dist/",
|
|
43
|
+
"lib",
|
|
44
|
+
"src"
|
|
45
|
+
],
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@eslint/js": "^9.0.0",
|
|
48
|
+
"@typescript-eslint/eslint-plugin": "8.32.1",
|
|
49
|
+
"@typescript-eslint/parser": "8.32.1",
|
|
50
|
+
"concurrently": "^9.1.2",
|
|
51
|
+
"cross-env": "7.0.3",
|
|
52
|
+
"eslint": "9.26.0",
|
|
53
|
+
"globals": "^14.0.0",
|
|
54
|
+
"husky": "^9.1.7",
|
|
55
|
+
"lint-staged": "^15.2.10",
|
|
56
|
+
"rimraf": "6.0.1",
|
|
57
|
+
"tslib": "^2.8.1",
|
|
58
|
+
"typedoc": "^0.28.4",
|
|
59
|
+
"typescript": "5.8.3",
|
|
60
|
+
"typescript-eslint": "^8.32.1",
|
|
61
|
+
"vite": "^6.3.5",
|
|
62
|
+
"vitest": "^3.1.3"
|
|
63
|
+
},
|
|
64
|
+
"dependencies": {},
|
|
65
|
+
"lint-staged": {
|
|
66
|
+
"*.{js,ts}": [
|
|
67
|
+
"eslint --fix --max-warnings 0"
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* postdocs 脚本
|
|
3
|
+
*
|
|
4
|
+
* 将 typedoc 生成的文档从 public 移动到 public/doc 目录
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { existsSync, mkdirSync, cpSync, rmSync } from 'fs';
|
|
8
|
+
import { resolve, dirname } from 'path';
|
|
9
|
+
import { fileURLToPath } from 'url';
|
|
10
|
+
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = dirname(__filename);
|
|
13
|
+
const rootDir = resolve(__dirname, '..');
|
|
14
|
+
|
|
15
|
+
const publicDir = resolve(rootDir, 'public');
|
|
16
|
+
const tempDir = resolve(rootDir, 'public_temp');
|
|
17
|
+
const docDir = resolve(rootDir, 'public/doc');
|
|
18
|
+
|
|
19
|
+
// 1. 复制 public 到 public_temp
|
|
20
|
+
if (existsSync(publicDir))
|
|
21
|
+
{
|
|
22
|
+
// 先删除临时目录(如果存在)
|
|
23
|
+
if (existsSync(tempDir))
|
|
24
|
+
{
|
|
25
|
+
rmSync(tempDir, { recursive: true, force: true });
|
|
26
|
+
}
|
|
27
|
+
// 复制 public 到 public_temp
|
|
28
|
+
cpSync(publicDir, tempDir, { recursive: true });
|
|
29
|
+
// 删除原 public 目录
|
|
30
|
+
rmSync(publicDir, { recursive: true, force: true });
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// 2. 创建新的 public 目录
|
|
34
|
+
mkdirSync(publicDir, { recursive: true });
|
|
35
|
+
|
|
36
|
+
// 3. 将 public_temp 移动到 public/doc
|
|
37
|
+
if (existsSync(tempDir))
|
|
38
|
+
{
|
|
39
|
+
// 复制 public_temp 到 public/doc
|
|
40
|
+
cpSync(tempDir, docDir, { recursive: true });
|
|
41
|
+
// 删除 public_temp
|
|
42
|
+
rmSync(tempDir, { recursive: true, force: true });
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
console.log('文档已移动到 public/doc 目录');
|
|
46
|
+
|
package/templates/vite.config.js
CHANGED
package/lib/commands/oss.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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,CAsC1F"}
|
package/lib/types/config.d.ts
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* feng3d 项目配置类型定义
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* ESLint 配置选项
|
|
6
|
-
*/
|
|
7
|
-
export interface EslintConfig {
|
|
8
|
-
/** 是否启用 ESLint */
|
|
9
|
-
enabled?: boolean;
|
|
10
|
-
/** 额外需要忽略的目录 */
|
|
11
|
-
ignores?: string[];
|
|
12
|
-
/** 额外的规则覆盖 */
|
|
13
|
-
rules?: Record<string, unknown>;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Vitest 配置选项
|
|
17
|
-
*/
|
|
18
|
-
export interface VitestConfig {
|
|
19
|
-
/** 是否启用 vitest */
|
|
20
|
-
enabled?: boolean;
|
|
21
|
-
/** 测试超时时间(0 表示无限制) */
|
|
22
|
-
testTimeout?: number;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* TypeDoc 配置选项
|
|
26
|
-
*/
|
|
27
|
-
export interface TypedocConfig {
|
|
28
|
-
/** 是否启用 typedoc */
|
|
29
|
-
enabled?: boolean;
|
|
30
|
-
/** 输出目录 */
|
|
31
|
-
outDir?: string;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* OSS 上传配置
|
|
35
|
-
*/
|
|
36
|
-
export interface OssConfig {
|
|
37
|
-
/** 本地目录 */
|
|
38
|
-
localDir?: string;
|
|
39
|
-
/** OSS 目录(默认使用 package.json 的 name) */
|
|
40
|
-
ossDir?: string;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* 项目模板选项
|
|
44
|
-
*/
|
|
45
|
-
export interface TemplatesConfig {
|
|
46
|
-
/** 是否创建示例目录 */
|
|
47
|
-
examples?: boolean;
|
|
48
|
-
/** 是否创建测试目录 */
|
|
49
|
-
test?: boolean;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* 更新配置选项
|
|
53
|
-
*/
|
|
54
|
-
export interface UpdateConfig {
|
|
55
|
-
/** 是否更新 feng3d.json 配置 */
|
|
56
|
-
config?: boolean;
|
|
57
|
-
/** 是否更新 ESLint 配置 */
|
|
58
|
-
eslint?: boolean;
|
|
59
|
-
/** 是否更新 .gitignore */
|
|
60
|
-
gitignore?: boolean;
|
|
61
|
-
/** 是否更新 .cursorrules */
|
|
62
|
-
cursorrules?: boolean;
|
|
63
|
-
/** 是否更新 npm publish workflow */
|
|
64
|
-
publish?: boolean;
|
|
65
|
-
/** 是否更新 GitHub Pages workflow */
|
|
66
|
-
pages?: boolean;
|
|
67
|
-
/** 是否更新 Pull Request CI workflow */
|
|
68
|
-
pullRequest?: boolean;
|
|
69
|
-
/** 是否更新 typedoc.json */
|
|
70
|
-
typedoc?: boolean;
|
|
71
|
-
/** 是否更新 test/_.test.ts */
|
|
72
|
-
test?: boolean;
|
|
73
|
-
/** 是否更新依赖版本 */
|
|
74
|
-
deps?: boolean;
|
|
75
|
-
/** 是否更新 husky pre-commit hook */
|
|
76
|
-
husky?: boolean;
|
|
77
|
-
/** 是否更新 LICENSE 文件 */
|
|
78
|
-
license?: boolean;
|
|
79
|
-
/** 是否更新 .vscode/settings.json */
|
|
80
|
-
vscode?: boolean;
|
|
81
|
-
/** 是否更新 tsconfig.json */
|
|
82
|
-
tsconfig?: boolean;
|
|
83
|
-
/** 是否更新 vite.config.js */
|
|
84
|
-
vite?: boolean;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* feng3d 项目配置
|
|
88
|
-
*/
|
|
89
|
-
export interface Feng3dConfig {
|
|
90
|
-
/** 项目名称 */
|
|
91
|
-
name?: string;
|
|
92
|
-
/** ESLint 配置 */
|
|
93
|
-
eslint?: EslintConfig;
|
|
94
|
-
/** Vitest 配置 */
|
|
95
|
-
vitest?: VitestConfig;
|
|
96
|
-
/** TypeDoc 配置 */
|
|
97
|
-
typedoc?: TypedocConfig;
|
|
98
|
-
/** OSS 配置 */
|
|
99
|
-
oss?: OssConfig;
|
|
100
|
-
/** 模板配置 */
|
|
101
|
-
templates?: TemplatesConfig;
|
|
102
|
-
/** 更新配置(指定 feng3d-cli update 时默认更新哪些项目) */
|
|
103
|
-
update?: UpdateConfig;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* 默认更新配置(全部启用)
|
|
107
|
-
*/
|
|
108
|
-
export declare const DEFAULT_UPDATE_CONFIG: UpdateConfig;
|
|
109
|
-
/**
|
|
110
|
-
* 默认配置
|
|
111
|
-
*/
|
|
112
|
-
export declare const DEFAULT_CONFIG: Feng3dConfig;
|
|
113
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,kBAAkB;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,kBAAkB;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,mBAAmB;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,eAAe;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wBAAwB;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oCAAoC;IACpC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wBAAwB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,eAAe;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sBAAsB;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,gBAAgB;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,iBAAiB;IACjB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,aAAa;IACb,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,WAAW;IACX,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,2CAA2C;IAC3C,MAAM,CAAC,EAAE,YAAY,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAgBnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,YAuB5B,CAAC"}
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "feng3d.schema.json",
|
|
4
|
-
"title": "feng3d 项目配置",
|
|
5
|
-
"description": "feng3d 项目配置文件,用于自定义项目规范和 CLI 行为",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"properties": {
|
|
8
|
-
"$schema": {
|
|
9
|
-
"type": "string",
|
|
10
|
-
"description": "JSON Schema 引用"
|
|
11
|
-
},
|
|
12
|
-
"name": {
|
|
13
|
-
"type": "string",
|
|
14
|
-
"description": "项目名称"
|
|
15
|
-
},
|
|
16
|
-
"eslint": {
|
|
17
|
-
"type": "object",
|
|
18
|
-
"description": "ESLint 配置选项",
|
|
19
|
-
"properties": {
|
|
20
|
-
"enabled": {
|
|
21
|
-
"type": "boolean",
|
|
22
|
-
"description": "是否启用 ESLint",
|
|
23
|
-
"default": true
|
|
24
|
-
},
|
|
25
|
-
"ignores": {
|
|
26
|
-
"type": "array",
|
|
27
|
-
"items": {
|
|
28
|
-
"type": "string"
|
|
29
|
-
},
|
|
30
|
-
"description": "额外需要忽略的目录",
|
|
31
|
-
"default": []
|
|
32
|
-
},
|
|
33
|
-
"rules": {
|
|
34
|
-
"type": "object",
|
|
35
|
-
"description": "额外的规则覆盖",
|
|
36
|
-
"additionalProperties": true,
|
|
37
|
-
"default": {}
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
"additionalProperties": false
|
|
41
|
-
},
|
|
42
|
-
"vitest": {
|
|
43
|
-
"type": "object",
|
|
44
|
-
"description": "Vitest 测试配置选项",
|
|
45
|
-
"properties": {
|
|
46
|
-
"enabled": {
|
|
47
|
-
"type": "boolean",
|
|
48
|
-
"description": "是否启用 vitest",
|
|
49
|
-
"default": true
|
|
50
|
-
},
|
|
51
|
-
"testTimeout": {
|
|
52
|
-
"type": "number",
|
|
53
|
-
"description": "测试超时时间(毫秒,0 表示无限制)",
|
|
54
|
-
"default": 0,
|
|
55
|
-
"minimum": 0
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
"additionalProperties": false
|
|
59
|
-
},
|
|
60
|
-
"typedoc": {
|
|
61
|
-
"type": "object",
|
|
62
|
-
"description": "TypeDoc 文档配置选项",
|
|
63
|
-
"properties": {
|
|
64
|
-
"enabled": {
|
|
65
|
-
"type": "boolean",
|
|
66
|
-
"description": "是否启用 typedoc",
|
|
67
|
-
"default": true
|
|
68
|
-
},
|
|
69
|
-
"outDir": {
|
|
70
|
-
"type": "string",
|
|
71
|
-
"description": "文档输出目录",
|
|
72
|
-
"default": "public/docs"
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
"additionalProperties": false
|
|
76
|
-
},
|
|
77
|
-
"oss": {
|
|
78
|
-
"type": "object",
|
|
79
|
-
"description": "OSS 上传配置",
|
|
80
|
-
"properties": {
|
|
81
|
-
"localDir": {
|
|
82
|
-
"type": "string",
|
|
83
|
-
"description": "本地目录",
|
|
84
|
-
"default": "./public"
|
|
85
|
-
},
|
|
86
|
-
"ossDir": {
|
|
87
|
-
"type": "string",
|
|
88
|
-
"description": "OSS 目录(默认使用 package.json 的 name)",
|
|
89
|
-
"default": ""
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
"additionalProperties": false
|
|
93
|
-
},
|
|
94
|
-
"templates": {
|
|
95
|
-
"type": "object",
|
|
96
|
-
"description": "项目模板选项",
|
|
97
|
-
"properties": {
|
|
98
|
-
"examples": {
|
|
99
|
-
"type": "boolean",
|
|
100
|
-
"description": "是否创建示例目录",
|
|
101
|
-
"default": true
|
|
102
|
-
},
|
|
103
|
-
"test": {
|
|
104
|
-
"type": "boolean",
|
|
105
|
-
"description": "是否创建测试目录",
|
|
106
|
-
"default": true
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
"additionalProperties": false
|
|
110
|
-
},
|
|
111
|
-
"update": {
|
|
112
|
-
"type": "object",
|
|
113
|
-
"description": "更新配置(指定 feng3d-cli update 时默认更新哪些项目)",
|
|
114
|
-
"properties": {
|
|
115
|
-
"config": {
|
|
116
|
-
"type": "boolean",
|
|
117
|
-
"description": "是否更新 feng3d.json 配置",
|
|
118
|
-
"default": true
|
|
119
|
-
},
|
|
120
|
-
"eslint": {
|
|
121
|
-
"type": "boolean",
|
|
122
|
-
"description": "是否更新 ESLint 配置",
|
|
123
|
-
"default": true
|
|
124
|
-
},
|
|
125
|
-
"gitignore": {
|
|
126
|
-
"type": "boolean",
|
|
127
|
-
"description": "是否更新 .gitignore",
|
|
128
|
-
"default": true
|
|
129
|
-
},
|
|
130
|
-
"cursorrules": {
|
|
131
|
-
"type": "boolean",
|
|
132
|
-
"description": "是否更新 .cursorrules",
|
|
133
|
-
"default": true
|
|
134
|
-
},
|
|
135
|
-
"publish": {
|
|
136
|
-
"type": "boolean",
|
|
137
|
-
"description": "是否更新 npm publish workflow",
|
|
138
|
-
"default": true
|
|
139
|
-
},
|
|
140
|
-
"pages": {
|
|
141
|
-
"type": "boolean",
|
|
142
|
-
"description": "是否更新 GitHub Pages workflow",
|
|
143
|
-
"default": true
|
|
144
|
-
},
|
|
145
|
-
"pullRequest": {
|
|
146
|
-
"type": "boolean",
|
|
147
|
-
"description": "是否更新 Pull Request CI workflow",
|
|
148
|
-
"default": true
|
|
149
|
-
},
|
|
150
|
-
"typedoc": {
|
|
151
|
-
"type": "boolean",
|
|
152
|
-
"description": "是否更新 typedoc.json",
|
|
153
|
-
"default": true
|
|
154
|
-
},
|
|
155
|
-
"test": {
|
|
156
|
-
"type": "boolean",
|
|
157
|
-
"description": "是否更新 test/_.test.ts",
|
|
158
|
-
"default": true
|
|
159
|
-
},
|
|
160
|
-
"deps": {
|
|
161
|
-
"type": "boolean",
|
|
162
|
-
"description": "是否更新依赖版本",
|
|
163
|
-
"default": true
|
|
164
|
-
},
|
|
165
|
-
"husky": {
|
|
166
|
-
"type": "boolean",
|
|
167
|
-
"description": "是否更新 husky pre-commit hook",
|
|
168
|
-
"default": true
|
|
169
|
-
},
|
|
170
|
-
"license": {
|
|
171
|
-
"type": "boolean",
|
|
172
|
-
"description": "是否更新 LICENSE 文件",
|
|
173
|
-
"default": true
|
|
174
|
-
},
|
|
175
|
-
"vscode": {
|
|
176
|
-
"type": "boolean",
|
|
177
|
-
"description": "是否更新 .vscode/settings.json",
|
|
178
|
-
"default": true
|
|
179
|
-
},
|
|
180
|
-
"tsconfig": {
|
|
181
|
-
"type": "boolean",
|
|
182
|
-
"description": "是否更新 tsconfig.json",
|
|
183
|
-
"default": true
|
|
184
|
-
},
|
|
185
|
-
"vite": {
|
|
186
|
-
"type": "boolean",
|
|
187
|
-
"description": "是否更新 vite.config.js",
|
|
188
|
-
"default": true
|
|
189
|
-
}
|
|
190
|
-
},
|
|
191
|
-
"additionalProperties": false
|
|
192
|
-
}
|
|
193
|
-
},
|
|
194
|
-
"additionalProperties": false
|
|
195
|
-
}
|
|
196
|
-
|
package/templates/feng3d.json
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "./node_modules/feng3d-cli/schemas/feng3d.schema.json",
|
|
3
|
-
"name": "{{name}}",
|
|
4
|
-
"eslint": {
|
|
5
|
-
"enabled": true,
|
|
6
|
-
"ignores": [],
|
|
7
|
-
"rules": {}
|
|
8
|
-
},
|
|
9
|
-
"vitest": {
|
|
10
|
-
"enabled": true,
|
|
11
|
-
"testTimeout": 0
|
|
12
|
-
},
|
|
13
|
-
"typedoc": {
|
|
14
|
-
"enabled": true,
|
|
15
|
-
"outDir": "public"
|
|
16
|
-
},
|
|
17
|
-
"oss": {
|
|
18
|
-
"localDir": "./public",
|
|
19
|
-
"ossDir": ""
|
|
20
|
-
},
|
|
21
|
-
"templates": {
|
|
22
|
-
"examples": true,
|
|
23
|
-
"test": true
|
|
24
|
-
},
|
|
25
|
-
"update": {
|
|
26
|
-
"config": true,
|
|
27
|
-
"eslint": true,
|
|
28
|
-
"gitignore": true,
|
|
29
|
-
"cursorrules": true,
|
|
30
|
-
"publish": true,
|
|
31
|
-
"pages": true,
|
|
32
|
-
"pullRequest": true,
|
|
33
|
-
"typedoc": true,
|
|
34
|
-
"test": true,
|
|
35
|
-
"deps": true,
|
|
36
|
-
"husky": true,
|
|
37
|
-
"license": true,
|
|
38
|
-
"vscode": true,
|
|
39
|
-
"tsconfig": true,
|
|
40
|
-
"vite": true
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|