因此,我已经为VS Code(repo found here)的语言支持扩展工作了几天。我遇到了大量的错误(对于那些真正想要某些词突出显示的人来说,文档真的不是那么好)。现在主要的一个问题是main
文件的package.json
条目,我有很多问题但无法找到。
问题如下:
我从this知道main
指定了文件的目录。
那个文件做什么?
我已经浏览了几个不同的扩展程序来试图计算
它做了什么,但我注意到目录路径都开始了
使用"./out/......"
,即使没有调用目录
out
。 VS code documentation甚至有一个标有out
的目录。那么,out
是什么?
我使用了Yeoman扩展生成器,它没有包含main
文件或out
目录。扩展应该有吗?我搞砸了什么?
如果您有任何疑问,请告诉我。谢谢!
编辑:我忘了添加一个问题:
我关心main
的主要原因是我尝试使用activationEvents
字段而VS代码表示activationEvent
和main
必须指定。在这种情况下,main
需要实际做什么?
答案 0 :(得分:1)
main
没有指定目录,但是包含扩展代码的文件(至少是activate
函数等主要代码)。在某个地方你必须实现你可以通过activationEvents
激活的东西,对吧?也许你甚至可以指定一个文件夹,前提是你有一个index.js文件或一个用于解析文件名的本地package.json文件。我自己还没试过。使用文件名更容易。
您必须牢记这一点,以指定从已安装的扩展程序中看到的代码文件。当您有TS项目时,您的代码将在执行扩展之前被转换为JS。它不是强制性的,但这些转换文件的事实标准是out
文件夹(在package.json文件旁边)。此文件夹镜像源文件夹,但包含已转换的JS和地图文件。
输出文件夹在命令行中指定(例如,当您手动运行tsc时)或在tsconfig.json文件中指定(请参阅compilerOptions
- > outDir
)。
旁注:out文件夹并不真正需要前导./
,但在其他情况下(例如解析导入时)触发特殊处理,其中前导./
通过{{1}避免模块解析}}。因此,人们倾向于使用node_modules
代替./out
来保持一致性。
关于yeoman生成的文件:我暂时没有使用它,并认为它还会生成你的extension.ts文件(并将其作为package.json中的主文件输入)。如果这没有发生,你可能会遇到错误或做错了什么。无论如何,创建该文件并将其添加到out
条目只需几秒钟。