mirror of
https://github.com/Lydanne/spaceflow.git
synced 2026-03-09 18:52:24 +08:00
refactor: 将 .spaceflow 配置迁移到根目录 .spaceflowrc,统一使用 workspace: 协议管理依赖
- 删除 .spaceflow/spaceflow.json,将完整配置合并到根目录 .spaceflowrc - .spaceflow/package.json 依赖从 link: 协议改为 workspace: 协议 - .spaceflowrc 中 dependencies 配置同步改为 workspace: 协议 - pnpm-workspace.yaml 新增 .spaceflow 到 workspace 包列表 - install.service.ts 新增 workspace: 协议支持,跳过 workspace 依赖的构建步骤 - source
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "spaceflow-local",
|
||||
"name": "spaceflow",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@spaceflow/scripts": "link:../extensions/scripts",
|
||||
"@spaceflow/shell": "link:../extensions/shell",
|
||||
"@spaceflow/core": "link:../packages/core",
|
||||
"@spaceflow/publish": "link:../extensions/publish",
|
||||
"@spaceflow/review": "link:../extensions/review"
|
||||
"@spaceflow/core": "workspace:*",
|
||||
"@spaceflow/scripts": "workspace:*",
|
||||
"@spaceflow/shell": "workspace:*",
|
||||
"@spaceflow/publish": "workspace:*",
|
||||
"@spaceflow/review": "workspace:*"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
{
|
||||
"$schema": "./config-schema.json",
|
||||
"gitProvider": {
|
||||
"provider": "github",
|
||||
"serverUrl": "https://api.github.com"
|
||||
},
|
||||
"review": {
|
||||
"references": ["./references"],
|
||||
"includes": ["*/**/*.ts", "!*/**/*.spec.*", "!*/**/*.config.*"],
|
||||
"generateDescription": true,
|
||||
"autoUpdatePrTitle": true,
|
||||
"lineComments": true,
|
||||
"verifyFixes": true,
|
||||
"analyzeDeletions": false,
|
||||
"deletionAnalysisMode": "open-code",
|
||||
"concurrency": 1,
|
||||
"retries": 3,
|
||||
"retryDelay": 1000
|
||||
},
|
||||
"dependencies": {
|
||||
"@spaceflow/shell": "link:./extensions/shell",
|
||||
"@spaceflow/scripts": "link:./extensions/scripts",
|
||||
"@spaceflow/review": "link:./extensions/review",
|
||||
"@spaceflow/publish": "link:./extensions/publish"
|
||||
},
|
||||
"support": ["claudeCode"],
|
||||
"publish": {
|
||||
"monorepo": { "enabled": true, "propagateDeps": true },
|
||||
"changelog": {
|
||||
"preset": {
|
||||
"type": [
|
||||
{ "type": "feat", "section": "新特性" },
|
||||
{ "type": "fix", "section": "修复BUG" },
|
||||
{ "type": "perf", "section": "性能优化" },
|
||||
{ "type": "refactor", "section": "代码重构" },
|
||||
{ "type": "docs", "section": "文档更新" },
|
||||
{ "type": "style", "section": "代码格式" },
|
||||
{ "type": "test", "section": "测试用例" },
|
||||
{ "type": "chore", "section": "其他修改" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"npm": {
|
||||
"publish": true,
|
||||
"packageManager": "pnpm",
|
||||
"tag": "latest",
|
||||
"ignoreVersion": true,
|
||||
"versionArgs": ["--workspaces false"]
|
||||
},
|
||||
"git": {
|
||||
"lockBranch": false,
|
||||
"pushWhitelistUsernames": ["github-actions[bot]"]
|
||||
}
|
||||
}
|
||||
}
|
||||
53
.spaceflowrc
53
.spaceflowrc
@@ -1,4 +1,55 @@
|
||||
{
|
||||
"$schema": ".spaceflow/config-schema.json",
|
||||
"support": ["claudeCode", "windsurf"]
|
||||
"gitProvider": {
|
||||
"provider": "github",
|
||||
"serverUrl": "https://api.github.com"
|
||||
},
|
||||
"review": {
|
||||
"references": ["./references"],
|
||||
"includes": ["*/**/*.ts", "!*/**/*.spec.*", "!*/**/*.config.*"],
|
||||
"generateDescription": true,
|
||||
"autoUpdatePrTitle": true,
|
||||
"lineComments": true,
|
||||
"verifyFixes": true,
|
||||
"analyzeDeletions": false,
|
||||
"deletionAnalysisMode": "open-code",
|
||||
"concurrency": 1,
|
||||
"retries": 3,
|
||||
"retryDelay": 1000
|
||||
},
|
||||
"dependencies": {
|
||||
"@spaceflow/shell": "workspace:*",
|
||||
"@spaceflow/scripts": "workspace:*",
|
||||
"@spaceflow/review": "workspace:*",
|
||||
"@spaceflow/publish": "workspace:*"
|
||||
},
|
||||
"support": ["claudeCode"],
|
||||
"publish": {
|
||||
"monorepo": { "enabled": true, "propagateDeps": true },
|
||||
"changelog": {
|
||||
"preset": {
|
||||
"type": [
|
||||
{ "type": "feat", "section": "新特性" },
|
||||
{ "type": "fix", "section": "修复BUG" },
|
||||
{ "type": "perf", "section": "性能优化" },
|
||||
{ "type": "refactor", "section": "代码重构" },
|
||||
{ "type": "docs", "section": "文档更新" },
|
||||
{ "type": "style", "section": "代码格式" },
|
||||
{ "type": "test", "section": "测试用例" },
|
||||
{ "type": "chore", "section": "其他修改" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"npm": {
|
||||
"publish": true,
|
||||
"packageManager": "pnpm",
|
||||
"tag": "latest",
|
||||
"ignoreVersion": true,
|
||||
"versionArgs": ["--workspaces false"]
|
||||
},
|
||||
"git": {
|
||||
"lockBranch": false,
|
||||
"pushWhitelistUsernames": ["github-actions[bot]"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -659,7 +659,9 @@ export class InstallService {
|
||||
const sourceType = getSourceType(source);
|
||||
|
||||
// 获取安装后的路径
|
||||
const packageName = await this.getPackageNameFromSource(source, sourceType, spaceflowDir);
|
||||
const packageName = source.startsWith("workspace:")
|
||||
? name
|
||||
: await this.getPackageNameFromSource(source, sourceType, spaceflowDir);
|
||||
const depPath = join(spaceflowDir, "node_modules", packageName);
|
||||
|
||||
if (!existsSync(depPath)) {
|
||||
@@ -685,8 +687,8 @@ export class InstallService {
|
||||
});
|
||||
}
|
||||
|
||||
// 对于本地路径的 Extension,需要构建
|
||||
if (sourceType === "local") {
|
||||
// 对于本地路径的 Extension,需要构建(workspace: 类型不需要,已在 workspace 中构建)
|
||||
if (sourceType === "local" && !source.startsWith("workspace:")) {
|
||||
const normalizedSource = normalizeSource(source);
|
||||
const sourcePath = resolve(cwd, normalizedSource);
|
||||
await this.ensureDependenciesAndBuild(sourcePath, name, verbose);
|
||||
@@ -719,24 +721,30 @@ export class InstallService {
|
||||
}
|
||||
|
||||
let updated = false;
|
||||
for (const [, config] of Object.entries(dependencies)) {
|
||||
for (const [name, config] of Object.entries(dependencies)) {
|
||||
const { source, ref } = this.parseExtensionConfig(config);
|
||||
const sourceType = getSourceType(source);
|
||||
|
||||
let packageSpec: string;
|
||||
if (sourceType === "local") {
|
||||
let packageName: string;
|
||||
|
||||
if (source.startsWith("workspace:")) {
|
||||
// workspace 协议:直接透传
|
||||
packageName = name;
|
||||
packageSpec = source;
|
||||
} else if (sourceType === "local") {
|
||||
const normalizedSource = normalizeSource(source);
|
||||
const relativePath = join("..", normalizedSource);
|
||||
packageSpec = `link:${relativePath}`;
|
||||
packageName = await this.getPackageNameFromSource(source, sourceType, spaceflowDir);
|
||||
} else if (sourceType === "git") {
|
||||
packageSpec = source.startsWith("git+") ? source : buildGitPackageSpec(source, ref);
|
||||
packageName = await this.getPackageNameFromSource(source, sourceType, spaceflowDir);
|
||||
} else {
|
||||
packageSpec = source;
|
||||
packageName = await this.getPackageNameFromSource(source, sourceType, spaceflowDir);
|
||||
}
|
||||
|
||||
// 获取包名
|
||||
const packageName = await this.getPackageNameFromSource(source, sourceType, spaceflowDir);
|
||||
|
||||
if (pkg.dependencies[packageName] !== packageSpec) {
|
||||
pkg.dependencies[packageName] = packageSpec;
|
||||
updated = true;
|
||||
|
||||
@@ -22,6 +22,7 @@ export function isGitUrl(source: string): boolean {
|
||||
*/
|
||||
export function isLocalPath(source: string): boolean {
|
||||
return (
|
||||
source.startsWith("workspace:") ||
|
||||
source.startsWith("link:") ||
|
||||
source.startsWith("./") ||
|
||||
source.startsWith("../") ||
|
||||
|
||||
46
pnpm-lock.yaml
generated
46
pnpm-lock.yaml
generated
@@ -81,6 +81,24 @@ importers:
|
||||
specifier: 'catalog:'
|
||||
version: 5.9.3
|
||||
|
||||
.spaceflow:
|
||||
dependencies:
|
||||
'@spaceflow/core':
|
||||
specifier: workspace:*
|
||||
version: link:../packages/core
|
||||
'@spaceflow/publish':
|
||||
specifier: workspace:*
|
||||
version: link:../extensions/publish
|
||||
'@spaceflow/review':
|
||||
specifier: workspace:*
|
||||
version: link:../extensions/review
|
||||
'@spaceflow/scripts':
|
||||
specifier: workspace:*
|
||||
version: link:../extensions/scripts
|
||||
'@spaceflow/shell':
|
||||
specifier: workspace:*
|
||||
version: link:../extensions/shell
|
||||
|
||||
actions:
|
||||
dependencies:
|
||||
'@actions/cache':
|
||||
@@ -208,7 +226,7 @@ importers:
|
||||
version: 1.26.0(zod@4.3.6)
|
||||
'@rspack/cli':
|
||||
specifier: ^1.7.4
|
||||
version: 1.7.4(@rspack/core@1.7.4)(@types/express@4.17.25)(webpack@5.103.0(@swc/core@1.15.3))
|
||||
version: 1.7.4(@rspack/core@1.7.4)(webpack@5.103.0(@swc/core@1.15.3))
|
||||
'@rspack/core':
|
||||
specifier: ^1.7.4
|
||||
version: 1.7.4
|
||||
@@ -6150,11 +6168,11 @@ snapshots:
|
||||
'@rspack/binding-win32-ia32-msvc': 1.7.4
|
||||
'@rspack/binding-win32-x64-msvc': 1.7.4
|
||||
|
||||
'@rspack/cli@1.7.4(@rspack/core@1.7.4)(@types/express@4.17.25)(webpack@5.103.0(@swc/core@1.15.3))':
|
||||
'@rspack/cli@1.7.4(@rspack/core@1.7.4)(@types/express@5.0.5)(webpack@5.103.0(@swc/core@1.15.3))':
|
||||
dependencies:
|
||||
'@discoveryjs/json-ext': 0.5.7
|
||||
'@rspack/core': 1.7.4
|
||||
'@rspack/dev-server': 1.1.5(@rspack/core@1.7.4)(@types/express@4.17.25)(webpack@5.103.0(@swc/core@1.15.3))
|
||||
'@rspack/dev-server': 1.1.5(@rspack/core@1.7.4)(@types/express@5.0.5)(webpack@5.103.0(@swc/core@1.15.3))
|
||||
exit-hook: 4.0.0
|
||||
webpack-bundle-analyzer: 4.10.2
|
||||
transitivePeerDependencies:
|
||||
@@ -6166,11 +6184,11 @@ snapshots:
|
||||
- webpack
|
||||
- webpack-cli
|
||||
|
||||
'@rspack/cli@1.7.4(@rspack/core@1.7.4)(@types/express@5.0.5)(webpack@5.103.0(@swc/core@1.15.3))':
|
||||
'@rspack/cli@1.7.4(@rspack/core@1.7.4)(webpack@5.103.0(@swc/core@1.15.3))':
|
||||
dependencies:
|
||||
'@discoveryjs/json-ext': 0.5.7
|
||||
'@rspack/core': 1.7.4
|
||||
'@rspack/dev-server': 1.1.5(@rspack/core@1.7.4)(@types/express@5.0.5)(webpack@5.103.0(@swc/core@1.15.3))
|
||||
'@rspack/dev-server': 1.1.5(@rspack/core@1.7.4)(webpack@5.103.0(@swc/core@1.15.3))
|
||||
exit-hook: 4.0.0
|
||||
webpack-bundle-analyzer: 4.10.2
|
||||
transitivePeerDependencies:
|
||||
@@ -6188,11 +6206,11 @@ snapshots:
|
||||
'@rspack/binding': 1.7.4
|
||||
'@rspack/lite-tapable': 1.1.0
|
||||
|
||||
'@rspack/dev-server@1.1.5(@rspack/core@1.7.4)(@types/express@4.17.25)(webpack@5.103.0(@swc/core@1.15.3))':
|
||||
'@rspack/dev-server@1.1.5(@rspack/core@1.7.4)(@types/express@5.0.5)(webpack@5.103.0(@swc/core@1.15.3))':
|
||||
dependencies:
|
||||
'@rspack/core': 1.7.4
|
||||
chokidar: 3.6.0
|
||||
http-proxy-middleware: 2.0.9(@types/express@4.17.25)
|
||||
http-proxy-middleware: 2.0.9(@types/express@5.0.5)
|
||||
p-retry: 6.2.1
|
||||
webpack-dev-server: 5.2.2(webpack@5.103.0(@swc/core@1.15.3))
|
||||
ws: 8.18.3
|
||||
@@ -6205,11 +6223,11 @@ snapshots:
|
||||
- webpack
|
||||
- webpack-cli
|
||||
|
||||
'@rspack/dev-server@1.1.5(@rspack/core@1.7.4)(@types/express@5.0.5)(webpack@5.103.0(@swc/core@1.15.3))':
|
||||
'@rspack/dev-server@1.1.5(@rspack/core@1.7.4)(webpack@5.103.0(@swc/core@1.15.3))':
|
||||
dependencies:
|
||||
'@rspack/core': 1.7.4
|
||||
chokidar: 3.6.0
|
||||
http-proxy-middleware: 2.0.9(@types/express@5.0.5)
|
||||
http-proxy-middleware: 2.0.9
|
||||
p-retry: 6.2.1
|
||||
webpack-dev-server: 5.2.2(webpack@5.103.0(@swc/core@1.15.3))
|
||||
ws: 8.18.3
|
||||
@@ -8011,6 +8029,16 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
http-proxy-middleware@2.0.9:
|
||||
dependencies:
|
||||
'@types/http-proxy': 1.17.17
|
||||
http-proxy: 1.18.1
|
||||
is-glob: 4.0.3
|
||||
is-plain-obj: 3.0.0
|
||||
micromatch: 4.0.8
|
||||
transitivePeerDependencies:
|
||||
- debug
|
||||
|
||||
http-proxy-middleware@2.0.9(@types/express@4.17.25):
|
||||
dependencies:
|
||||
'@types/http-proxy': 1.17.17
|
||||
|
||||
@@ -3,6 +3,7 @@ packages:
|
||||
- extensions/*
|
||||
- actions
|
||||
- docs
|
||||
- .spaceflow
|
||||
|
||||
catalogs:
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user