1
1
import { exec } from 'node:child_process' ;
2
- import * as vscode from 'vscode' ;
3
- import { QuickPickItemKind } from 'vscode' ;
4
- import preferredPM from 'preferred-pm ' ;
2
+ import { workspace , commands , window , type ExtensionContext , QuickPickItemKind , env , Uri } from 'vscode' ;
3
+
4
+ import { detectPackageManager } from './detectPackageManager ' ;
5
5
import { DirectoryEntry } from './types' ;
6
6
import {
7
7
ENTRY_OPTION ,
@@ -14,15 +14,17 @@ import {
14
14
ValidKeyword
15
15
} from './utils' ;
16
16
17
- export async function activate ( context : vscode . ExtensionContext ) {
18
- const workspacePath = vscode . workspace . workspaceFolders ?. [ 0 ] . uri . fsPath ?? vscode . workspace . rootPath ;
19
- const manager = vscode . workspace . getConfiguration ( 'npm' ) . get < string > ( 'packageManager' , 'npm' ) ;
17
+ export async function activate ( context : ExtensionContext ) {
18
+ const workspacePath = workspace . workspaceFolders ?. [ 0 ] . uri . fsPath ?? workspace . rootPath ;
19
+ const manager = workspace . getConfiguration ( 'npm' ) . get < string > ( 'packageManager' , 'npm' ) ;
20
20
21
21
const shouldCheckPreferred = workspacePath && ( ! manager || manager === 'auto' ) ;
22
- const preferredManager = shouldCheckPreferred ? ( ( await preferredPM ( workspacePath ) ) ?. name ?? 'npm' ) : manager ;
22
+ const preferredManager = shouldCheckPreferred
23
+ ? ( ( await detectPackageManager ( { cwd : workspacePath } ) ) ?? 'npm' )
24
+ : manager ;
23
25
24
- const disposable = vscode . commands . registerCommand ( 'extension.showQuickPick' , async ( ) => {
25
- const packagesPick = vscode . window . createQuickPick < DirectoryEntry > ( ) ;
26
+ const disposable = commands . registerCommand ( 'extension.showQuickPick' , async ( ) => {
27
+ const packagesPick = window . createQuickPick < DirectoryEntry > ( ) ;
26
28
27
29
packagesPick . placeholder = STRINGS . PLACEHOLDER_BUSY ;
28
30
packagesPick . title = STRINGS . DEFAULT_TITLE ;
@@ -112,7 +114,7 @@ export async function activate(context: vscode.ExtensionContext) {
112
114
{ label : ENTRY_OPTION . GO_BACK }
113
115
] . filter ( ( option ) => ! ! option && typeof option === 'object' ) ;
114
116
115
- const optionPick = vscode . window . createQuickPick ( ) ;
117
+ const optionPick = window . createQuickPick ( ) ;
116
118
optionPick . title = `Actions for "${ selectedEntry . label } "` ;
117
119
optionPick . placeholder = 'Select an action' ;
118
120
optionPick . items = possibleActions ;
@@ -125,51 +127,51 @@ export async function activate(context: vscode.ExtensionContext) {
125
127
case ENTRY_OPTION . INSTALL : {
126
128
exec ( getCommandToRun ( selectedEntry , preferredManager ) , { cwd : workspacePath } , ( error , stout ) => {
127
129
if ( error ) {
128
- vscode . window . showErrorMessage (
130
+ window . showErrorMessage (
129
131
`An error occurred while trying to install the \`${ selectedEntry . npmPkg } \` package: ${ error . message } `
130
132
) ;
131
133
return ;
132
134
}
133
- vscode . window . showInformationMessage (
135
+ window . showInformationMessage (
134
136
`\`${ selectedEntry . npmPkg } \` package has been installed${ selectedEntry . dev ? ' as `devDependency`' : '' } in current workspace using \`${ preferredManager } \`: ${ stout } `
135
137
) ;
136
138
optionPick . hide ( ) ;
137
139
} ) ;
138
140
break ;
139
141
}
140
142
case ENTRY_OPTION . VISIT_HOMEPAGE : {
141
- vscode . env . openExternal ( vscode . Uri . parse ( selectedEntry . github . urls . homepage ! ) ) ;
143
+ env . openExternal ( Uri . parse ( selectedEntry . github . urls . homepage ! ) ) ;
142
144
break ;
143
145
}
144
146
case ENTRY_OPTION . VISIT_REPO : {
145
- vscode . env . openExternal ( vscode . Uri . parse ( selectedEntry . githubUrl ) ) ;
147
+ env . openExternal ( Uri . parse ( selectedEntry . githubUrl ) ) ;
146
148
break ;
147
149
}
148
150
case ENTRY_OPTION . VISIT_NPM : {
149
- vscode . env . openExternal ( vscode . Uri . parse ( `https://www.npmjs.com/package/${ selectedEntry . npmPkg } ` ) ) ;
151
+ env . openExternal ( Uri . parse ( `https://www.npmjs.com/package/${ selectedEntry . npmPkg } ` ) ) ;
150
152
break ;
151
153
}
152
154
case ENTRY_OPTION . VIEW_BUNDLEPHOBIA : {
153
- vscode . env . openExternal ( vscode . Uri . parse ( `https://bundlephobia.com/package/${ selectedEntry . npmPkg } ` ) ) ;
155
+ env . openExternal ( Uri . parse ( `https://bundlephobia.com/package/${ selectedEntry . npmPkg } ` ) ) ;
154
156
break ;
155
157
}
156
158
case ENTRY_OPTION . VIEW_LICENSE : {
157
- vscode . env . openExternal ( vscode . Uri . parse ( selectedEntry . github . license . url ) ) ;
159
+ env . openExternal ( Uri . parse ( selectedEntry . github . license . url ) ) ;
158
160
break ;
159
161
}
160
162
case ENTRY_OPTION . COPY_NAME : {
161
- vscode . env . clipboard . writeText ( selectedEntry . npmPkg ) ;
162
- vscode . window . showInformationMessage ( 'Package name copied to clipboard' ) ;
163
+ env . clipboard . writeText ( selectedEntry . npmPkg ) ;
164
+ window . showInformationMessage ( 'Package name copied to clipboard' ) ;
163
165
break ;
164
166
}
165
167
case ENTRY_OPTION . COPY_REPO_URL : {
166
- vscode . env . clipboard . writeText ( selectedEntry . githubUrl ) ;
167
- vscode . window . showInformationMessage ( 'Repository URL copied to clipboard' ) ;
168
+ env . clipboard . writeText ( selectedEntry . githubUrl ) ;
169
+ window . showInformationMessage ( 'Repository URL copied to clipboard' ) ;
168
170
break ;
169
171
}
170
172
case ENTRY_OPTION . COPY_NPM_URL : {
171
- vscode . env . clipboard . writeText ( `https://www.npmjs.com/package/${ selectedEntry . npmPkg } ` ) ;
172
- vscode . window . showInformationMessage ( 'npm registry URL copied to clipboard' ) ;
173
+ env . clipboard . writeText ( `https://www.npmjs.com/package/${ selectedEntry . npmPkg } ` ) ;
174
+ window . showInformationMessage ( 'npm registry URL copied to clipboard' ) ;
173
175
break ;
174
176
}
175
177
case ENTRY_OPTION . GO_BACK : {
0 commit comments