【问题标题】:How to open a local (inside the extension package) file in a vscode extension如何在 vscode 扩展中打开本地(扩展包内)文件
【发布时间】:2020-04-15 05:54:05
【问题描述】:
我正在创建一个 vscode 扩展。我想提供一个help 命令,当调用它时,它会打开一个由扩展提供的help.md 文件,因此我假设它是作为扩展包的一部分提供的。
myext/
├── .vscode/
├── test/
├── package.json
├── extension.js
├── help.md
如何获取扩展包内容的引用并在运行扩展的编辑器中打开文件help.md?
【问题讨论】:
标签:
javascript
visual-studio-code
vscode-extensions
【解决方案1】:
您可以使用扩展上下文获取扩展中任何文件的路径。这是我对要加载的文件使用in my extension 到determine the absoute path 的函数:
/**
* Returns the absolute path to a file located in our misc folder.
*
* @param file The base file name.
* @param context The context of this extension to get its path regardless where it is installed.
* @param webview When given format the path for use in this webview.
*/
public static getMiscPath(file: string, context: ExtensionContext, webView?: Webview): string {
if (webView) {
let uri = Uri.file(context.asAbsolutePath(path.join('misc', file)));
return webView.asWebviewUri(uri).toString();
}
return context.asAbsolutePath(path.join('misc', file));
}
此函数确定路径的 2 种不同变体:
- 没有 WebView 实例:只是磁盘上的绝对文件路径。
- 带有 WebView 实例:用于 HTML/CSS 的 Web URL。