[英]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.