@@ -129,13 +129,13 @@ export function resolveWorkPath(relativePath?: string, ctx?: ResolvedContext): s
129129
130130 // 2. 如果有 Proxy 注入的 projectPath
131131 if ( ctx ?. projectPath ) {
132- // 如果 projectPath 是绝对路径,直接使用
133- // 如果是相对路径,拼接到 WORKSPACE_ROOT
134- if ( path . isAbsolute ( ctx . projectPath ) ) {
135- basePath = ctx . projectPath ;
136- } else {
137- basePath = path . join ( WORKSPACE_ROOT , ctx . projectPath ) ;
138- }
132+ // 设计: projectPath 总是相对于 WORKSPACE_ROOT
133+ // 即使以 '/' 开头也视为相对路径(去掉开头的 '/')
134+ // 例如:"/a51c239e.../workspace" -> "a51c239e.../workspace"
135+ const normalizedProjectPath = ctx . projectPath . startsWith ( '/' )
136+ ? ctx . projectPath . slice ( 1 )
137+ : ctx . projectPath ;
138+ basePath = path . join ( WORKSPACE_ROOT , normalizedProjectPath ) ;
139139 }
140140
141141 // 3. 拼接用户传入的相对路径
@@ -255,11 +255,12 @@ export function resolvePathSafe(
255255 // 1. 计算基础路径
256256 let basePath = WORKSPACE_ROOT ;
257257 if ( ctx ?. projectPath ) {
258- if ( path . isAbsolute ( ctx . projectPath ) ) {
259- basePath = ctx . projectPath ;
260- } else {
261- basePath = path . join ( WORKSPACE_ROOT , ctx . projectPath ) ;
262- }
258+ // 设计:projectPath 总是相对于 WORKSPACE_ROOT
259+ // 即使以 '/' 开头也视为相对路径(去掉开头的 '/')
260+ const normalizedProjectPath = ctx . projectPath . startsWith ( '/' )
261+ ? ctx . projectPath . slice ( 1 )
262+ : ctx . projectPath ;
263+ basePath = path . join ( WORKSPACE_ROOT , normalizedProjectPath ) ;
263264 }
264265
265266 // 2. 处理空字符串或未传的情况
0 commit comments