我有一个使用 npm 工作区的 typescript monorepo 设置,我希望能够将子路径导入到任何单独的 typescript 文件中 @package/shared并@package/client同时@package/server跳过src文件夹。一种解决方案是简单地删除src文件夹并将每个子文件夹向上移动到层次结构,但这感觉像是一种黑客解决方案。我尝试在导出中使用通配符(例如"./*": "./src/*","./": "./src/*.ts"),但它们要么不起作用,要么只部分起作用(moduleResolution 设置为"NodeNext")
例如,具有以下 monorepo 文件夹结构
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 packages/\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 shared/\n \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src/\n \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.ts\n \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 types/\n \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.ts\n \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo-type.ts\n \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bar-type.ts\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 constants/\n \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.ts\n \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo-const.ts\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bar-const.ts\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 client/\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ...\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 …Run Code Online (Sandbox Code Playgroud) 注意:这是一篇“分享您的知识 - 问答风格”的帖子。我可能投了反对票,因为有人误解了这篇文章的上下文:(
Blazor WASM 可以很容易地比 Blazor 服务器端更受青睐,而且在开发方面没有缺点。目前,Blazor WASM 不支持功能齐全的调试体验,并且启动速度非常慢。与 Blazor 服务器端相比,这会大大减慢开发速度。虽然老实说,我个人认为调试体验比缓慢启动更能减慢开发速度。
注意:我在其中包含了“建议”一词,因为我不确定此解决方案可能导致的缺点,因此请随时对我的答案发表评论。
解决方案是简单地创建一个额外的 Blazor 服务器端项目,然后将 Blazor WASM 项目引用到 Blazor 服务器端项目。然后,对 Blazor 服务器端的Startup和 进行一些调整,_Host.cshtml以正确使用 Blazor WASM razor 文件和 wwwroot 文件。有关此解决方案的分步说明,请参阅下面我提出的答案。
简单来说,此解决方案只是添加和配置 Blazor 服务器端项目,而不会对 Blazor WASM 项目进行任何更改和任何重要的代码重复。