mirror of
https://github.com/Microsoft/vscode
synced 2024-09-13 21:55:38 +00:00
only show the view when there are package.json files
This commit is contained in:
parent
7fc78e7b0c
commit
adfe96397b
|
@ -30,7 +30,8 @@
|
|||
"activationEvents": [
|
||||
"onCommand:workbench.action.tasks.runTask",
|
||||
"onLanguage:json",
|
||||
"onView:npm"
|
||||
"onView:npm",
|
||||
"workspaceContains:**/package.json"
|
||||
],
|
||||
"contributes": {
|
||||
"views": {
|
||||
|
@ -38,7 +39,7 @@
|
|||
{
|
||||
"id": "npm",
|
||||
"name": "%view.name%",
|
||||
"when": "config.npm.explorerVisible"
|
||||
"when": "hasNpmScripts"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -12,11 +12,11 @@ const localize = nls.loadMessageBundle();
|
|||
|
||||
import { addJSONProviders } from './features/jsonContributions';
|
||||
import { NpmScriptsTreeDataProvider } from './npmView';
|
||||
import { provideNpmScripts } from './tasks';
|
||||
import { provideNpmScripts, hasNpmScripts } from './tasks';
|
||||
|
||||
let taskProvider: vscode.Disposable | undefined;
|
||||
|
||||
export function activate(context: vscode.ExtensionContext): void {
|
||||
export async function activate(context: vscode.ExtensionContext): Promise<void> {
|
||||
|
||||
if (vscode.workspace.workspaceFolders) {
|
||||
let provider: vscode.TaskProvider = {
|
||||
|
@ -30,6 +30,10 @@ export function activate(context: vscode.ExtensionContext): void {
|
|||
taskProvider = vscode.workspace.registerTaskProvider('npm', provider);
|
||||
let treeDataProvider = vscode.window.registerTreeDataProvider('npm', new NpmScriptsTreeDataProvider(context, provider, localize));
|
||||
context.subscriptions.push(treeDataProvider);
|
||||
|
||||
if (await hasNpmScripts()) {
|
||||
vscode.commands.executeCommand('setContext', 'hasNpmScripts', true);
|
||||
}
|
||||
}
|
||||
|
||||
configureHttpRequest();
|
||||
|
|
|
@ -48,6 +48,28 @@ export function getPackageManager(folder: WorkspaceFolder): string {
|
|||
return workspace.getConfiguration('npm', folder.uri).get<string>('packageManager', 'npm');
|
||||
}
|
||||
|
||||
export async function hasNpmScripts(): Promise<boolean> {
|
||||
let folders = workspace.workspaceFolders;
|
||||
if (!folders) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
for (let i = 0; i < folders.length; i++) {
|
||||
let folder = folders[i];
|
||||
if (isEnabled(folder)) {
|
||||
let relativePattern = new RelativePattern(folder, '**/package.json');
|
||||
let paths = await workspace.findFiles(relativePattern, '**/node_modules/**');
|
||||
if (paths.length > 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
} catch (error) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
}
|
||||
|
||||
export async function provideNpmScripts(localize: any): Promise<Task[]> {
|
||||
let emptyTasks: Task[] = [];
|
||||
let allTasks: Task[] = [];
|
||||
|
|
Loading…
Reference in a new issue