[英]How to get project folder path in visual studio code extension
我试图在 visual studio 代码扩展中获取项目文件夹路径,但很难找到答案。 我的代码不工作。 我不知道这可能与否。 我已经在谷歌上查过这个问题没有人回答。 任何人都知道这个请帮我找到答案。
扩展.js:
var vscode = require("vscode");
var path = require("path");
exports.activate = context => {
const findPath =
vscode.commands.registerCommand('extension.search', () => {
let findprojectfolderPath = vscode.workspace.uri.fsPath; // Not working
console.log(findprojectfolderPath);
});
}
如果打开文件夹,则可以获得workspace
变量。
let folderName = vscode.workspace.name; // get the open folder name
let folderPath = vscode.workspace.rootPath; // get the open folder path
我想更新 Pushprajsinh Chudasama 的答案,因为vscode.workspace.rootPath
现在已弃用。 它被vscode.workspace.workspaceFolders
取代,它返回一个WorkspaceFolders | undefined
数组WorkspaceFolders | undefined
WorkspaceFolders | undefined
。 要检索所有工作区文件夹的路径,您现在可以使用:
vscode.workspace.workspaceFolders?.map(folder => folder.uri.path)
如果你想找到当前用户打开的文件的路径,那么你需要这个
console.log(vscode.window.activeTextEditor.document.uri.fsPath);
阅读此文档以获取更多信息: https : //code.visualstudio.com/api/references/vscode-api#TextDocument
事实证明,不推荐使用vscode.workspace.rootPath
并且我在此答案中描述了迄今为止我找到的唯一解决方案
此函数获取当前打开的文件的工作区目录。 如果没有活动编辑器或文件不属于工作区,则返回undefined
。
import * as vscode from "vscode";
function getDocumentWorkspaceFolder(): string | undefined {
const fileName = vscode.window.activeTextEditor?.document.fileName;
return vscode.workspace.workspaceFolders
?.map((folder) => folder.uri.fsPath)
.filter((fsPath) => fileName?.startsWith(fsPath))[0];
}
您必须更改代码。 就像下面的例子。
vscode.commands.registerCommand('extension.search', (p: { fsPath: string }) => {
// p is an object whose path is fsPath.
console.log(p.fsPath);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.