我们可以停止发送typescriptServices.js吗?

lg40wkob  于 2022-10-29  发布在  TypeScript
关注(0)|答案(4)|浏览(139)

typescriptServices.js是提供语言服务的全局文件;然而,应注意:
1.我相信大多数相同的功能都导出到typescript.jstsserverlibrary.js中,只是在CommonJS中。
1.无论如何,大多数语言服务消费者现在只是在使用tsserver。
是否需要继续将此文件发送到npm?
也许这些查询可以给予我们了解谁在使用它

qzwqbdag

qzwqbdag1#

我相信大多数相同的功能都导出到了typescript.js和tsserverlibrary.js中,只是在CommonJS中。
这两个文件是相同的,除了它们指向不同的源Map(它们是相同的,但在不同的路径,所以仍然是冗余的)。现在,我们利用它是一个单一的文件这一事实,通过名称空间合并来动态选择通过module.exportshttps://github.com/microsoft/TypeScript/blob/main/src/services/exportAsModule.ts)或全局(https://github.com/microsoft/TypeScript/blob/main/src/services/globalThisShim.ts)导出。
当前使用typescriptServices.js的任何人都应该能够使用typescript.js,并且不会看到任何更改。
然而,在模块后,这两个链接的文件可能不会工作,尽管我可以将它们推到顶级文件中。

20jt8wwn

20jt8wwn2#

这两个文件完全相同
FWIW,我很久以前就注意到了这一点,并感到非常困惑。我最终决定typescript.js一定是API消费者的“规范”文件,并使用了它,而包含不同名称的重复文件要么是意外,或者节点包的一些内部实现细节,并远离它。我从来没有猜到typescriptServices.js是注定要成为规范的一个!

ljsrvy3e

ljsrvy3e3#

回顾Gulpfile,它似乎已经这样至少6年了。
我认为我们完全可以删除这个文件,并告诉人们使用typescript.js,因为它们是相同的,虽然如果我们认为这是一个突破性的变化,那么可能要等到5.0,在这种情况下,它有点没有实际意义,因为我真的希望在那个版本中将TS转换为模块。这些文件除了导出行之外都是相同的,这意味着我可以(暂时)完全忽略TS的模块版本。
要澄清“有点无意义”,只有当我们不捆绑。我们仍然可能!

aiazj4mn

aiazj4mn4#

因为我已经在我的模块分支上删除了typescriptServices(使构建更简单),所以继续进行。
我做了一些研究,看起来typescriptServices是VS Code和monaco使用的主文件。后者很有趣,因为看起来他们使用了AMD Package 器(同样的事情也反映在我们的repo中技术上损坏且未使用的createPlaygroundBuild脚本中),所以如果旧的路径不存在,他们可能需要一些逻辑来选择正确的路径。
我们的API测试还假设类型来自typescriptServices,通过一种黑客的方式获取,但是我已经不得不为模块分支重做了。

相关问题