Skip to content

fix: write create-project files inside the selected directory - #1

Open
tonycoder-hub wants to merge 2 commits into
nextfrom
cursor/fix-create-project-path-a37c
Open

tonycoder-hub wants to merge 2 commits into
nextfrom
cursor/fix-create-project-path-a37c

Conversation

@tonycoder-hub

Copy link
Copy Markdown
Owner

Summary

Fixes ohosvscode#219.

Create-project was compiling each template file's full fsPath with Handlebars, then using path.relative(templateRoot, compiledPath) to decide the output location.

That is not a Windows path bug. Handlebars treats \{{ as an escaped literal {{. On Windows the separator before {{moduleName}} is \, so:

...\templates\empty-ability\{{moduleName}}\Index.ets.hbs

compiles to:

...\templates\empty-ability{{moduleName}}\Index.ets.hbs

path.relative then yields ..\empty-ability{{moduleName}}\..., and path.resolve(savePath, that) writes a sibling of the directory the user selected. POSIX paths use /{{moduleName}}, so the same code works on macOS/Linux — which matches the maintainer note that this looked Windows-specific.

Fix

Compile only the path relative to the template root, after normalizing separators to /, then resolve that relative path against the chosen save directory. The module folder is now savePath/entry/... (or whatever moduleName is), not savePath/../empty-ability{{moduleName}}/....

Test

packages/vscode/test/project-template-path.test.ts covers POSIX and Windows-style template paths, and records the original Handlebars escape behavior.

Notes

Does not touch ohosvscode#265 or overlap with ohosvscode#308.

Open in Web Open in Cursor 

cursoragent and others added 2 commits August 17, 2026 20:25
Handlebars treats \{{ as an escaped literal, so compiling a Windows
fsPath turned empty-ability\{{moduleName}} into a sibling folder
named empty-ability{{moduleName}}. Compile the relative POSIX path
instead so the module lands inside the chosen save path.

Fixes ohosvscode#219

Co-authored-by: Tony Coder <407243179@qq.com>
The vite-plus test runner polyfills node:path without win32, so assert
the compiled relative path and the Handlebars \\{{ escape directly.

Co-authored-by: Tony Coder <407243179@qq.com>
@tonycoder-hub
tonycoder-hub marked this pull request as ready for review August 17, 2026 20:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]:指定路径创建新项目时entry文件命名异常且与根目录同级

2 participants