什么是"主要"在package.json中进行语言扩展

时间:2017-12-30 21:43:40

标签: visual-studio-code vscode-extensions

因此,我已经为VS Code(repo found here)的语言支持扩展工作了几天。我遇到了大量的错误(对于那些真正想要某些词突出显示的人来说,文档真的不是那么好)。现在主要的一个问题是main文件的package.json条目,我有很多问题但无法找到。

问题如下:

  1. 我从this知道main指定了文件的目录。 那个文件做什么?

  2. 我已经浏览了几个不同的扩展程序来试图计算 它做了什么,但我注意到目录路径都开始了 使用"./out/......",即使没有调用目录 outVS code documentation甚至有一个标有out的目录。那么,out是什么?

  3. 我使用了Yeoman扩展生成器,它没有包含main文件或out目录。扩展应该有吗?我搞砸了什么?

  4. 如果您有任何疑问,请告诉我。谢谢!

    编辑:我忘了添加一个问题:

    我关心main的主要原因是我尝试使用activationEvents字段而VS代码表示activationEventmain必须指定。在这种情况下,main需要实际做什么?

1 个答案:

答案 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条目只需几秒钟。