回应https://github.com/sveltejs/language-tools/issues/726#issuecomment -773096834,特别是:
编写自定义解析器对于这样的功能来说听起来工作量太大。
我认为由于 Svelte 编译器的限制,还有其他问题被阻止或忽略了。 在sveltejs/language-tools
包中也有与 Svelte 编译器对抗的技巧和变通方法。
您认为创建一个包装问题来识别可以改进工具的问题会有所帮助吗? 类似于https://github.com/sveltejs/svelte/issues/820或https://github.com/sveltejs/language-tools/issues/83。 人们可以在可能的情况下做出零碎的贡献,或者如果出现 Svelte 4 大修情况,则会考虑此类问题。
不知道我们是否需要一个大线程。 大多数可以追溯到几个根本原因。 我可以想到使用 svelte 编译器有两个主要限制:
请参阅https://github.com/sveltejs/svelte/issues/4818。
在编辑过程中,代码无效的可能性非常高。 但是 svelte 编译器旨在抛出语法错误以警告用户。 因此,当出现语法错误时,依赖于 svelte 编译器的功能将不起作用。
我们确实考虑过为编辑器编写一个专用的解析器,但这似乎是太多的工作和维护负担。 所以这不是一个优先事项,但我不会说它永远不会发生。
见https://github.com/sveltejs/language-tools/issues/339
Typescript 的语言服务大多是同步的,所以我们不能在 svetle2tsx 之前进行预处理。 这也是 eslint-plugin-svelte3 的一大障碍。 也许svelte.preprocessSync
可能会有所帮助。
我同意@jasonlyu123在那里的观点,以至于我将它们添加到 #83 并相应地更新了标题。 这现在应该很好地概述了今天可能发生的事情,仍然缺少什么以及一般限制是什么。
最有用的评论
不知道我们是否需要一个大线程。 大多数可以追溯到几个根本原因。 我可以想到使用 svelte 编译器有两个主要限制:
编译器不是为编辑器设计的。
请参阅https://github.com/sveltejs/svelte/issues/4818。
在编辑过程中,代码无效的可能性非常高。 但是 svelte 编译器旨在抛出语法错误以警告用户。 因此,当出现语法错误时,依赖于 svelte 编译器的功能将不起作用。
我们确实考虑过为编辑器编写一个专用的解析器,但这似乎是太多的工作和维护负担。 所以这不是一个优先事项,但我不会说它永远不会发生。
预处理是异步的。
见https://github.com/sveltejs/language-tools/issues/339
Typescript 的语言服务大多是同步的,所以我们不能在 svetle2tsx 之前进行预处理。 这也是 eslint-plugin-svelte3 的一大障碍。 也许
svelte.preprocessSync
可能会有所帮助。