@@ -41,7 +41,7 @@ export function askForExtensionDisplayName(generator, extensionConfig) {
41
41
* @param {Object } extensionConfig
42
42
*/
43
43
export function askForExtensionId ( generator , extensionConfig ) {
44
- let extensionName = generator . options [ 'extensionId' ] ;
44
+ const extensionName = generator . options [ 'extensionId' ] ;
45
45
if ( extensionName ) {
46
46
extensionConfig . name = extensionName ;
47
47
return Promise . resolve ( ) ;
@@ -72,7 +72,7 @@ export function askForExtensionId(generator, extensionConfig) {
72
72
* @param {Object } extensionConfig
73
73
*/
74
74
export function askForExtensionDescription ( generator , extensionConfig ) {
75
- let extensionDescription = generator . options [ 'extensionDescription' ] ;
75
+ const extensionDescription = generator . options [ 'extensionDescription' ] ;
76
76
if ( extensionDescription ) {
77
77
extensionConfig . description = extensionDescription ;
78
78
return Promise . resolve ( ) ;
@@ -97,7 +97,7 @@ export function askForExtensionDescription(generator, extensionConfig) {
97
97
* @param {Object } extensionConfig
98
98
*/
99
99
export function askForGit ( generator , extensionConfig ) {
100
- let gitInit = generator . options [ 'gitInit' ] ;
100
+ const gitInit = generator . options [ 'gitInit' ] ;
101
101
if ( typeof gitInit === 'boolean' ) {
102
102
extensionConfig . gitInit = Boolean ( gitInit ) ;
103
103
return Promise . resolve ( ) ;
@@ -122,7 +122,7 @@ export function askForGit(generator, extensionConfig) {
122
122
* @param {Object } extensionConfig
123
123
*/
124
124
export function askForPackageManager ( generator , extensionConfig ) {
125
- let pkgManager = generator . options [ 'pkgManager' ] ;
125
+ const pkgManager = generator . options [ 'pkgManager' ] ;
126
126
if ( pkgManager === 'npm' || pkgManager === 'yarn' || pkgManager === 'pnpm' ) {
127
127
extensionConfig . pkgManager = pkgManager ;
128
128
return Promise . resolve ( ) ;
@@ -161,24 +161,41 @@ export function askForPackageManager(generator, extensionConfig) {
161
161
* @param {Generator } generator
162
162
* @param {Object } extensionConfig
163
163
*/
164
- export function askForWebpack ( generator , extensionConfig ) {
165
- let webpack = generator . options [ 'webpack' ] ;
166
- if ( typeof webpack === 'boolean' ) {
167
- extensionConfig . webpack = Boolean ( webpack ) ;
164
+ export function askForBundler ( generator , extensionConfig , allowNone = true , defaultBundler = 'none' ) {
165
+ const bundler = generator . options [ 'bundler' ] ;
166
+ if ( bundler === 'webpack' || bundler === 'esbuild' ) {
167
+ extensionConfig . bundler = bundler ;
168
+ return Promise . resolve ( ) ;
169
+ }
170
+ const webpack = generator . options [ 'webpack' ] ; // backwards compatibility
171
+ if ( typeof webpack === 'boolean' && webpack ) {
172
+ extensionConfig . bundler = 'webpack' ;
168
173
return Promise . resolve ( ) ;
169
174
}
170
-
171
175
if ( generator . options [ 'quick' ] ) {
172
- extensionConfig . webpack = false ;
176
+ extensionConfig . bundler = defaultBundler ;
173
177
return Promise . resolve ( ) ;
174
178
}
175
179
180
+ const choices = allowNone ? [ { name : 'none' , value : 'none' } ] : [ ] ;
181
+
176
182
return generator . prompt ( {
177
- type : 'confirm' ,
178
- name : 'webpack' ,
179
- message : 'Bundle the source code with webpack?' ,
180
- default : false
181
- } ) . then ( gitAnswer => {
182
- extensionConfig . webpack = gitAnswer . webpack ;
183
+ type : 'list' ,
184
+ default : defaultBundler ,
185
+ name : 'bundler' ,
186
+ message : 'Which bundler to use?' ,
187
+ choices : [
188
+ ...choices ,
189
+ {
190
+ name : 'webpack' ,
191
+ value : 'webpack'
192
+ } ,
193
+ {
194
+ name : 'esbuild' ,
195
+ value : 'esbuild'
196
+ }
197
+ ]
198
+ } ) . then ( bundlerAnswer => {
199
+ extensionConfig . bundler = bundlerAnswer . bundler ;
183
200
} ) ;
184
201
}
0 commit comments