33 * Copyright (c) Microsoft Corporation. All rights reserved.
44 * Licensed under the MIT License. See License.txt in the project root for license information.
55 *--------------------------------------------------------------------------------------------*/
6+ var __assign = ( this && this . __assign ) || Object . assign || function ( t ) {
7+ for ( var s , i = 1 , n = arguments . length ; i < n ; i ++ ) {
8+ s = arguments [ i ] ;
9+ for ( var p in s ) if ( Object . prototype . hasOwnProperty . call ( s , p ) )
10+ t [ p ] = s [ p ] ;
11+ }
12+ return t ;
13+ } ;
614Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
715var es = require ( "event-stream" ) ;
816var assign = require ( "object-assign" ) ;
@@ -14,14 +22,15 @@ var rename = require('gulp-rename');
1422var util = require ( 'gulp-util' ) ;
1523var buffer = require ( 'gulp-buffer' ) ;
1624var json = require ( 'gulp-json-editor' ) ;
25+ var webpack = require ( 'webpack' ) ;
26+ var webpackGulp = require ( 'webpack-stream' ) ;
1727var fs = require ( "fs" ) ;
1828var path = require ( "path" ) ;
1929var vsce = require ( "vsce" ) ;
2030var File = require ( "vinyl" ) ;
21- function fromLocal ( extensionPath ) {
31+ function fromLocal ( extensionPath , sourceMappingURLBase ) {
2232 var result = es . through ( ) ;
23- vsce . listFiles ( { cwd : extensionPath , packageManager : vsce . PackageManager . Yarn } )
24- . then ( function ( fileNames ) {
33+ vsce . listFiles ( { cwd : extensionPath , packageManager : vsce . PackageManager . Yarn } ) . then ( function ( fileNames ) {
2534 var files = fileNames
2635 . map ( function ( fileName ) { return path . join ( extensionPath , fileName ) ; } )
2736 . map ( function ( filePath ) { return new File ( {
@@ -30,9 +39,58 @@ function fromLocal(extensionPath) {
3039 base : extensionPath ,
3140 contents : fs . createReadStream ( filePath )
3241 } ) ; } ) ;
33- es . readArray ( files ) . pipe ( result ) ;
34- } )
35- . catch ( function ( err ) { return result . emit ( 'error' , err ) ; } ) ;
42+ var filesStream = es . readArray ( files ) ;
43+ // check for a webpack configuration file, then invoke webpack
44+ // and merge its output with the files stream. also rewrite the package.json
45+ // file to a new entry point
46+ if ( fs . existsSync ( path . join ( extensionPath , 'extension.webpack.config.js' ) ) ) {
47+ var packageJsonFilter = filter ( 'package.json' , { restore : true } ) ;
48+ var patchFilesStream = filesStream
49+ . pipe ( packageJsonFilter )
50+ . pipe ( buffer ( ) )
51+ . pipe ( json ( function ( data ) {
52+ // hardcoded entry point directory!
53+ data . main = data . main . replace ( '/out/' , / d i s t / ) ;
54+ return data ;
55+ } ) )
56+ . pipe ( packageJsonFilter . restore ) ;
57+ var webpackConfig = __assign ( { } , require ( path . join ( extensionPath , 'extension.webpack.config.js' ) ) , { mode : 'production' , stats : 'errors-only' } ) ;
58+ var webpackStream = webpackGulp ( webpackConfig , webpack )
59+ . pipe ( es . through ( function ( data ) {
60+ data . stat = data . stat || { } ;
61+ data . base = extensionPath ;
62+ this . emit ( 'data' , data ) ;
63+ } ) )
64+ . pipe ( es . through ( function ( data ) {
65+ // source map handling:
66+ // * rewrite sourceMappingURL
67+ // * save to disk so that upload-task picks this up
68+ if ( sourceMappingURLBase ) {
69+ var contents = data . contents . toString ( 'utf8' ) ;
70+ data . contents = Buffer . from ( contents . replace ( / \n \/ \/ # s o u r c e M a p p i n g U R L = ( .* ) $ / gm, function ( _m , g1 ) {
71+ return "\n//# sourceMappingURL=" + sourceMappingURLBase + "/extensions/" + path . basename ( extensionPath ) + "/dist/" + g1 ;
72+ } ) , 'utf8' ) ;
73+ if ( / \. j s \. m a p $ / . test ( data . path ) ) {
74+ if ( ! fs . existsSync ( path . dirname ( data . path ) ) ) {
75+ fs . mkdirSync ( path . dirname ( data . path ) ) ;
76+ }
77+ fs . writeFileSync ( data . path , data . contents ) ;
78+ }
79+ }
80+ this . emit ( 'data' , data ) ;
81+ } ) ) ;
82+ es . merge ( webpackStream , patchFilesStream )
83+ // .pipe(es.through(function (data) {
84+ // // debug
85+ // console.log('out', data.path, data.contents.length);
86+ // this.emit('data', data);
87+ // }))
88+ . pipe ( result ) ;
89+ }
90+ else {
91+ filesStream . pipe ( result ) ;
92+ }
93+ } ) . catch ( function ( err ) { return result . emit ( 'error' , err ) ; } ) ;
3694 return result ;
3795}
3896exports . fromLocal = fromLocal ;
0 commit comments