mirror of
https://github.com/Microsoft/vscode
synced 2024-10-02 17:32:41 +00:00
add extensions-ci-pr
task which does a full build without mangling
This commit is contained in:
parent
ac7789cbab
commit
978bb08619
|
@ -238,12 +238,22 @@ const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimr
|
|||
const compileExtensionsBuildTask = task.define('compile-extensions-build', task.series(
|
||||
cleanExtensionsBuildTask,
|
||||
task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream(false).pipe(gulp.dest('.build'))),
|
||||
task.define('bundle-extensions-build', () => ext.packageLocalExtensionsStream(false).pipe(gulp.dest('.build'))),
|
||||
task.define('bundle-extensions-build', () => ext.packageLocalExtensionsStream(false, false).pipe(gulp.dest('.build'))),
|
||||
));
|
||||
|
||||
gulp.task(compileExtensionsBuildTask);
|
||||
gulp.task(task.define('extensions-ci', task.series(compileExtensionsBuildTask, compileExtensionMediaBuildTask)));
|
||||
|
||||
const compileExtensionsBuildPullRequestTask = task.define('compile-extensions-build-pr', task.series(
|
||||
cleanExtensionsBuildTask,
|
||||
task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream(false).pipe(gulp.dest('.build'))),
|
||||
task.define('bundle-extensions-build-pr', () => ext.packageLocalExtensionsStream(false, true).pipe(gulp.dest('.build'))),
|
||||
));
|
||||
|
||||
gulp.task(compileExtensionsBuildPullRequestTask);
|
||||
gulp.task(task.define('extensions-ci-pr', task.series(compileExtensionsBuildPullRequestTask, compileExtensionMediaBuildTask)));
|
||||
|
||||
|
||||
exports.compileExtensionsBuildTask = compileExtensionsBuildTask;
|
||||
|
||||
//#endregion
|
||||
|
|
|
@ -233,7 +233,7 @@ function packageTask(sourceFolderName, destinationFolderName) {
|
|||
|
||||
const compileWebExtensionsBuildTask = task.define('compile-web-extensions-build', task.series(
|
||||
task.define('clean-web-extensions-build', util.rimraf('.build/web/extensions')),
|
||||
task.define('bundle-web-extensions-build', () => extensions.packageLocalExtensionsStream(true).pipe(gulp.dest('.build/web'))),
|
||||
task.define('bundle-web-extensions-build', () => extensions.packageLocalExtensionsStream(true, false).pipe(gulp.dest('.build/web'))),
|
||||
task.define('bundle-marketplace-web-extensions-build', () => extensions.packageMarketplaceExtensionsStream(true).pipe(gulp.dest('.build/web'))),
|
||||
task.define('bundle-web-extension-media-build', () => extensions.buildExtensionMedia(false, '.build/web/extensions')),
|
||||
));
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -61,12 +61,12 @@ function updateExtensionPackageJSON(input: Stream, update: (data: any) => any):
|
|||
.pipe(packageJsonFilter.restore);
|
||||
}
|
||||
|
||||
function fromLocal(extensionPath: string, forWeb: boolean): Stream {
|
||||
function fromLocal(extensionPath: string, forWeb: boolean, disableMangle: boolean): Stream {
|
||||
const webpackConfigFileName = forWeb ? 'extension-browser.webpack.config.js' : 'extension.webpack.config.js';
|
||||
|
||||
const isWebPacked = fs.existsSync(path.join(extensionPath, webpackConfigFileName));
|
||||
let input = isWebPacked
|
||||
? fromLocalWebpack(extensionPath, webpackConfigFileName)
|
||||
? fromLocalWebpack(extensionPath, webpackConfigFileName, disableMangle)
|
||||
: fromLocalNormal(extensionPath);
|
||||
|
||||
if (isWebPacked) {
|
||||
|
@ -85,7 +85,7 @@ function fromLocal(extensionPath: string, forWeb: boolean): Stream {
|
|||
}
|
||||
|
||||
|
||||
function fromLocalWebpack(extensionPath: string, webpackConfigFileName: string): Stream {
|
||||
function fromLocalWebpack(extensionPath: string, webpackConfigFileName: string, disableMangle: boolean): Stream {
|
||||
const vsce = require('@vscode/vsce') as typeof import('@vscode/vsce');
|
||||
const webpack = require('webpack');
|
||||
const webpackGulp = require('webpack-stream');
|
||||
|
@ -141,6 +141,19 @@ function fromLocalWebpack(extensionPath: string, webpackConfigFileName: string):
|
|||
...config,
|
||||
...{ mode: 'production' }
|
||||
};
|
||||
if (disableMangle) {
|
||||
if (Array.isArray(config.module.rules)) {
|
||||
for (const rule of config.module.rules) {
|
||||
if (Array.isArray(rule.use)) {
|
||||
for (const use of rule.use) {
|
||||
if (String(use.loader).endsWith('mangle-loader.js')) {
|
||||
use.options.disabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const relativeOutputPath = path.relative(extensionPath, webpackConfig.output.path);
|
||||
|
||||
return webpackGulp(webpackConfig, webpack, webpackDone)
|
||||
|
@ -318,7 +331,7 @@ function isWebExtension(manifest: IExtensionManifest): boolean {
|
|||
return true;
|
||||
}
|
||||
|
||||
export function packageLocalExtensionsStream(forWeb: boolean): Stream {
|
||||
export function packageLocalExtensionsStream(forWeb: boolean, disableMangle: boolean): Stream {
|
||||
const localExtensionsDescriptions = (
|
||||
(<string[]>glob.sync('extensions/*/package.json'))
|
||||
.map(manifestPath => {
|
||||
|
@ -334,7 +347,7 @@ export function packageLocalExtensionsStream(forWeb: boolean): Stream {
|
|||
const localExtensionsStream = minifyExtensionResources(
|
||||
es.merge(
|
||||
...localExtensionsDescriptions.map(extension => {
|
||||
return fromLocal(extension.path, forWeb)
|
||||
return fromLocal(extension.path, forWeb, disableMangle)
|
||||
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
||||
})
|
||||
)
|
||||
|
|
|
@ -41,6 +41,11 @@ module.exports = async function (source, sourceMap, meta) {
|
|||
// Only enable mangling in production builds
|
||||
return source;
|
||||
}
|
||||
const options = this.getOptions();
|
||||
if (options.disabled) {
|
||||
// Dynamically disabled
|
||||
return source;
|
||||
}
|
||||
|
||||
if (source !== fs.readFileSync(this.resourcePath).toString()) {
|
||||
// File content has changed by previous webpack steps.
|
||||
|
@ -48,7 +53,6 @@ module.exports = async function (source, sourceMap, meta) {
|
|||
return source;
|
||||
}
|
||||
|
||||
const options = this.getOptions();
|
||||
const callback = this.async();
|
||||
|
||||
const fileContentsMap = getMangledFileContents(options.configFile);
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
"core-ci": "node --max_old_space_size=8095 ./node_modules/gulp/bin/gulp.js core-ci",
|
||||
"core-ci-pr": "node --max_old_space_size=4095 ./node_modules/gulp/bin/gulp.js core-ci-pr",
|
||||
"extensions-ci": "node --max_old_space_size=4095 ./node_modules/gulp/bin/gulp.js extensions-ci",
|
||||
"extensions-ci-pr": "node --max_old_space_size=4095 ./node_modules/gulp/bin/gulp.js extensions-ci-pr",
|
||||
"perf": "node scripts/code-perf.js"
|
||||
},
|
||||
"dependencies": {
|
||||
|
|
Loading…
Reference in a new issue