mirror of
https://github.com/Microsoft/vscode
synced 2024-08-27 21:09:43 +00:00
honor the package manager when launching for debugging
This commit is contained in:
parent
2b73118942
commit
2599d9526b
|
@ -14,7 +14,7 @@ const localize = nls.loadMessageBundle();
|
|||
|
||||
import { addJSONProviders } from './features/jsonContributions';
|
||||
import { NpmScriptsTreeDataProvider } from './npmView';
|
||||
import { NpmTaskDefinition, getScripts } from './tasks';
|
||||
import { NpmTaskDefinition, getScripts, getPackageManager } from './tasks';
|
||||
|
||||
type AutoDetect = 'on' | 'off';
|
||||
let taskProvider: vscode.Disposable | undefined;
|
||||
|
@ -168,7 +168,7 @@ function createTask(script: string, cmd: string, folder: vscode.WorkspaceFolder,
|
|||
}
|
||||
|
||||
function getCommandLine(folder: vscode.WorkspaceFolder, cmd: string): string {
|
||||
let packageManager = vscode.workspace.getConfiguration('npm', folder.uri).get<string>('packageManager', 'npm');
|
||||
let packageManager = getPackageManager(folder);
|
||||
if (vscode.workspace.getConfiguration('npm', folder.uri).get<boolean>('runSilent')) {
|
||||
return `${packageManager} --silent ${cmd}`;
|
||||
}
|
||||
|
|
|
@ -10,15 +10,17 @@ import {
|
|||
TextDocument, ThemeIcon, TreeDataProvider, TreeItem, TreeItemCollapsibleState, Uri,
|
||||
WorkspaceFolder, commands, debug, window, workspace
|
||||
} from 'vscode';
|
||||
import { NpmTaskDefinition, getPackageJsonUriFromTask, getScripts, isWorkspaceFolder } from './tasks';
|
||||
import { NpmTaskDefinition, getPackageJsonUriFromTask, getScripts, isWorkspaceFolder, getPackageManager } from './tasks';
|
||||
|
||||
class Folder extends TreeItem {
|
||||
packages: PackageJSON[] = [];
|
||||
workspaceFolder: WorkspaceFolder;
|
||||
|
||||
constructor(folder: WorkspaceFolder) {
|
||||
super(folder.name, TreeItemCollapsibleState.Collapsed);
|
||||
super(folder.name, TreeItemCollapsibleState.Expanded);
|
||||
this.contextValue = 'folder';
|
||||
this.resourceUri = folder.uri;
|
||||
this.workspaceFolder = folder;
|
||||
this.iconPath = ThemeIcon.Folder;
|
||||
}
|
||||
|
||||
|
@ -42,7 +44,7 @@ class PackageJSON extends TreeItem {
|
|||
}
|
||||
|
||||
constructor(folder: Folder, relativePath: string) {
|
||||
super(PackageJSON.getLabel(folder.label!, relativePath), TreeItemCollapsibleState.Collapsed);
|
||||
super(PackageJSON.getLabel(folder.label!, relativePath), TreeItemCollapsibleState.Expanded);
|
||||
this.folder = folder;
|
||||
this.path = relativePath;
|
||||
this.contextValue = 'packageJSON';
|
||||
|
@ -74,6 +76,10 @@ class NpmScript extends TreeItem {
|
|||
arguments: [this]
|
||||
};
|
||||
}
|
||||
|
||||
getFolder(): WorkspaceFolder {
|
||||
return this.package.folder.workspaceFolder;
|
||||
}
|
||||
}
|
||||
|
||||
export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
|
||||
|
@ -140,14 +146,16 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
|
|||
// debugArgs = ['--', '--nolazy', `--inspect-brk=${port}`];
|
||||
// }
|
||||
if (!port) {
|
||||
window.showErrorMessage(`Could not launch for debugging, the script does not define --inspect-brk=port.`);
|
||||
window.showErrorMessage(`Could not launch for debugging, the script needs to include the node debug options: --inspect-brk=port.`);
|
||||
return;
|
||||
}
|
||||
|
||||
let packageManager = getPackageManager(script.getFolder());
|
||||
const config: DebugConfiguration = {
|
||||
type: 'node',
|
||||
request: 'launch',
|
||||
name: `Debug ${task.name}`,
|
||||
runtimeExecutable: 'npm',
|
||||
runtimeExecutable: packageManager,
|
||||
runtimeArgs: [
|
||||
'run-script',
|
||||
task.name,
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
'use strict';
|
||||
|
||||
import { TaskDefinition, Task, WorkspaceFolder, Uri } from 'vscode';
|
||||
import { TaskDefinition, Task, WorkspaceFolder, Uri, workspace } from 'vscode';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
|
||||
|
@ -17,6 +17,10 @@ export function isWorkspaceFolder(value: any): value is WorkspaceFolder {
|
|||
return value && typeof value !== 'number';
|
||||
}
|
||||
|
||||
export function getPackageManager(folder: WorkspaceFolder): string {
|
||||
return workspace.getConfiguration('npm', folder.uri).get<string>('packageManager', 'npm');
|
||||
}
|
||||
|
||||
export function getPackageJsonUriFromTask(task: Task): Uri | null {
|
||||
if (isWorkspaceFolder(task.scope)) {
|
||||
if (task.definition.path) {
|
||||
|
|
Loading…
Reference in a new issue