Fix for #54085 npmScript explorer doesn´t show scripts with same name in multi root setup

This commit is contained in:
Erich Gamma 2018-07-17 08:53:03 +02:00
parent 2ee64bb0ad
commit 9a924f71f4
2 changed files with 7 additions and 8 deletions

View file

@ -358,7 +358,6 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
private buildTaskTree(tasks: Task[]): Folder[] | PackageJSON[] | NoScripts[] {
let folders: Map<String, Folder> = new Map();
let packages: Map<String, PackageJSON> = new Map();
let scripts: Map<String, NpmScript> = new Map();
let folder = null;
let packageJson = null;
@ -380,11 +379,8 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
packages.set(fullPath, packageJson);
}
let fullScriptPath = path.join(packageJson.path, each.name);
if (!scripts.get(fullScriptPath)) {
let script = new NpmScript(this.extensionContext, packageJson, each);
packageJson.addScript(script);
scripts.set(fullScriptPath, script);
}
let script = new NpmScript(this.extensionContext, packageJson, each);
packageJson.addScript(script);
}
});
if (folders.size === 1) {

View file

@ -100,6 +100,7 @@ async function detectNpmScripts(): Promise<Task[]> {
let emptyTasks: Task[] = [];
let allTasks: Task[] = [];
let visitedPackageJsonFiles: Set<string> = new Set();
let folders = workspace.workspaceFolders;
if (!folders) {
@ -112,8 +113,10 @@ async function detectNpmScripts(): Promise<Task[]> {
let relativePattern = new RelativePattern(folder, '**/package.json');
let paths = await workspace.findFiles(relativePattern, '**/node_modules/**');
for (let j = 0; j < paths.length; j++) {
if (!isExcluded(folder, paths[j])) {
let tasks = await provideNpmScriptsForFolder(paths[j]);
let path = paths[j];
if (!isExcluded(folder, path) && !visitedPackageJsonFiles.has(path.fsPath)) {
let tasks = await provideNpmScriptsForFolder(path);
visitedPackageJsonFiles.add(path.fsPath);
allTasks.push(...tasks);
}
}