@@ -15,6 +15,8 @@ const util = require('util');
1515const opn = require ( 'opn' ) ;
1616const minimist = require ( 'minimist' ) ;
1717
18+ const webpack = require ( "webpack" ) ;
19+
1820const APP_ROOT = path . dirname ( __dirname ) ;
1921const EXTENSIONS_ROOT = path . join ( APP_ROOT , 'extensions' ) ;
2022const WEB_MAIN = path . join ( APP_ROOT , 'src' , 'vs' , 'code' , 'browser' , 'workbench' , 'workbench-dev.html' ) ;
@@ -140,30 +142,42 @@ function handleStaticExtension(req, res, parsedUrl) {
140142 */
141143async function handleRoot ( req , res ) {
142144 const extensionFolders = await util . promisify ( fs . readdir ) ( EXTENSIONS_ROOT ) ;
143- const mapExtensionFolderToExtensionPackageJSON = new Map ( ) ;
145+
146+ const staticExtensions = [ ] ;
147+
148+ const webpackConfigs = [ ] ;
144149
145150 await Promise . all ( extensionFolders . map ( async extensionFolder => {
146151 try {
147152 const packageJSON = JSON . parse ( ( await util . promisify ( fs . readFile ) ( path . join ( EXTENSIONS_ROOT , extensionFolder , 'package.json' ) ) ) . toString ( ) ) ;
148- if ( packageJSON . main && packageJSON . name !== 'vscode-web-playground' ) {
153+ if ( packageJSON . main && ! packageJSON . browser ) {
149154 return ; // unsupported
150155 }
151- packageJSON . extensionKind = [ 'web' ] ; // enable for Web
156+ if ( packageJSON . browser ) {
157+ packageJSON . main = packageJSON . browser ;
158+ const webpackConfigPath = path . join ( EXTENSIONS_ROOT , extensionFolder , 'extension-browser.webpack.config.js' ) ;
159+ if ( ( await util . promisify ( fs . exists ) ( webpackConfigPath ) ) ) {
160+ webpackConfigs . push ( require ( webpackConfigPath ) ) ;
161+ packageJSON . main . replace ( '/out/' , '/dist/' ) ;
162+ }
163+ }
152164
153- mapExtensionFolderToExtensionPackageJSON . set ( extensionFolder , packageJSON ) ;
165+ packageJSON . extensionKind = [ 'web' ] ; // enable for Web
166+ staticExtensions . push ( {
167+ packageJSON,
168+ extensionLocation : { scheme : SCHEME , authority : AUTHORITY , path : `/static-extension/${ extensionFolder } ` }
169+ } ) ;
154170 } catch ( error ) {
155171 return null ;
156172 }
157173 } ) ) ;
158174
159- const staticExtensions = [ ] ;
160-
161- // Built in extensions
162- mapExtensionFolderToExtensionPackageJSON . forEach ( ( packageJSON , extensionFolder ) => {
163- staticExtensions . push ( {
164- packageJSON,
165- extensionLocation : { scheme : SCHEME , authority : AUTHORITY , path : `/static-extension/${ extensionFolder } ` }
166- } ) ;
175+ webpack ( webpackConfigs ) . watch ( { } , ( err , stats ) => {
176+ if ( err ) {
177+ console . log ( err ) ;
178+ } else {
179+ console . log ( stats . toString ( ) ) ;
180+ }
167181 } ) ;
168182
169183 const webConfiguration = escapeAttribute ( JSON . stringify ( { staticExtensions, folderUri : { scheme : 'memfs' , path : `/sample-folder` } } ) ) ;
0 commit comments