VS Code扩展如何通过命令面板打开自身仓库内README.md的markdown预览
问题原因
你代码中使用的相对路径是基于VS Code当前激活的工作区根目录解析的,无法定位到扩展自身目录下的文件,所以会触发报错。
解决方法
可以通过context.extensionUri获取扩展根目录的绝对路径,再拼接对应文件路径即可。如果要直接打开markdown预览,不需要先打开文本编辑器,直接调用VS Code内置的markdown预览命令即可。
完整实现代码
const vscode = require('vscode'); context.subscriptions.push( vscode.commands.registerCommand('new-extension.showReadMe', async () => { // 拼接扩展根目录下README.md的绝对路径 const readmeUri = vscode.Uri.joinPath(context.extensionUri, 'README.md'); // 直接打开markdown预览(符合你的需求) await vscode.commands.executeCommand('markdown.showPreview', readmeUri); // 若需要打开文本编辑模式的README,用下面两行替换上面的预览命令即可 // const docs = await vscode.workspace.openTextDocument(readmeUri); // await vscode.window.showTextDocument(docs); }) );
注意事项
- 确保扩展打包时包含根目录的
README.md文件,可在package.json的files字段中添加对应文件声明,避免打包时被忽略。 context.extensionUri是VS Code扩展API提供的标准扩展根目录定位方式,兼容本地开发和发布后安装的场景。
内容的提问来源于stack exchange,提问作者Rick
相关产品推荐
相关产品推荐

