mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-24 12:19:20 +00:00
invoke webpack when bundling extensions
This commit is contained in:
@@ -14,14 +14,15 @@ var rename = require('gulp-rename');
|
||||
var util = require('gulp-util');
|
||||
var buffer = require('gulp-buffer');
|
||||
var json = require('gulp-json-editor');
|
||||
var webpack = require('webpack');
|
||||
var webpackGulp = require('webpack-stream');
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
var vsce = require("vsce");
|
||||
var File = require("vinyl");
|
||||
function fromLocal(extensionPath) {
|
||||
var result = es.through();
|
||||
vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn })
|
||||
.then(function (fileNames) {
|
||||
vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn }).then(function (fileNames) {
|
||||
var files = fileNames
|
||||
.map(function (fileName) { return path.join(extensionPath, fileName); })
|
||||
.map(function (filePath) { return new File({
|
||||
@@ -30,9 +31,35 @@ function fromLocal(extensionPath) {
|
||||
base: extensionPath,
|
||||
contents: fs.createReadStream(filePath)
|
||||
}); });
|
||||
es.readArray(files).pipe(result);
|
||||
})
|
||||
.catch(function (err) { return result.emit('error', err); });
|
||||
var filesStream = es.readArray(files);
|
||||
// check for a webpack configuration file, then invoke webpack
|
||||
// and merge its output with the files stream. also rewrite the package.json
|
||||
// file to a new entry point
|
||||
if (fs.existsSync(path.join(extensionPath, 'extension.webpack.config.js'))) {
|
||||
var packageJsonFilter = filter('package.json', { restore: true });
|
||||
var patchFilesStream = filesStream
|
||||
.pipe(packageJsonFilter)
|
||||
.pipe(buffer())
|
||||
.pipe(json({ main: './dist/main.bundle' })) // hardcoded entry point!
|
||||
.pipe(packageJsonFilter.restore);
|
||||
var webpackConfig = require(path.join(extensionPath, 'extension.webpack.config.js'));
|
||||
var webpackStream = webpackGulp(webpackConfig, webpack)
|
||||
.pipe(es.through(function (data) {
|
||||
data.base = extensionPath;
|
||||
this.emit('data', data);
|
||||
}));
|
||||
es.merge(webpackStream, patchFilesStream)
|
||||
// .pipe(es.through(function (data) {
|
||||
// // debug
|
||||
// console.log('out', data.path, data.base, data.contents.length);
|
||||
// this.emit('data', data);
|
||||
// }))
|
||||
.pipe(result);
|
||||
}
|
||||
else {
|
||||
filesStream.pipe(result);
|
||||
}
|
||||
}).catch(function (err) { return result.emit('error', err); });
|
||||
return result;
|
||||
}
|
||||
exports.fromLocal = fromLocal;
|
||||
|
||||
Reference in New Issue
Block a user