mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 09:08:48 +01:00
debt - use esbuild for CSS minification (#250820)
This commit is contained in:
+7
-10
@@ -50,7 +50,6 @@ const fs_1 = __importDefault(require("fs"));
|
||||
const pump_1 = __importDefault(require("pump"));
|
||||
const vinyl_1 = __importDefault(require("vinyl"));
|
||||
const bundle = __importStar(require("./bundle"));
|
||||
const postcss_1 = require("./postcss");
|
||||
const esbuild_1 = __importDefault(require("esbuild"));
|
||||
const gulp_sourcemaps_1 = __importDefault(require("gulp-sourcemaps"));
|
||||
const fancy_log_1 = __importDefault(require("fancy-log"));
|
||||
@@ -187,12 +186,10 @@ function bundleTask(opts) {
|
||||
function minifyTask(src, sourceMapBaseUrl) {
|
||||
const sourceMappingURL = sourceMapBaseUrl ? ((f) => `${sourceMapBaseUrl}/${f.relative}.map`) : undefined;
|
||||
return cb => {
|
||||
const cssnano = require('cssnano');
|
||||
const svgmin = require('gulp-svgmin');
|
||||
const jsFilter = (0, gulp_filter_1.default)('**/*.js', { restore: true });
|
||||
const cssFilter = (0, gulp_filter_1.default)('**/*.css', { restore: true });
|
||||
const esbuildFilter = (0, gulp_filter_1.default)('**/*.{js,css}', { restore: true });
|
||||
const svgFilter = (0, gulp_filter_1.default)('**/*.svg', { restore: true });
|
||||
(0, pump_1.default)(gulp_1.default.src([src + '/**', '!' + src + '/**/*.map']), jsFilter, gulp_sourcemaps_1.default.init({ loadMaps: true }), event_stream_1.default.map((f, cb) => {
|
||||
(0, pump_1.default)(gulp_1.default.src([src + '/**', '!' + src + '/**/*.map']), esbuildFilter, gulp_sourcemaps_1.default.init({ loadMaps: true }), event_stream_1.default.map((f, cb) => {
|
||||
esbuild_1.default.build({
|
||||
entryPoints: [f.path],
|
||||
minify: true,
|
||||
@@ -201,11 +198,11 @@ function minifyTask(src, sourceMapBaseUrl) {
|
||||
packages: 'external', // "external all the things", see https://esbuild.github.io/api/#packages
|
||||
platform: 'neutral', // makes esm
|
||||
target: ['es2022'],
|
||||
write: false
|
||||
write: false,
|
||||
}).then(res => {
|
||||
const jsFile = res.outputFiles.find(f => /\.js$/.test(f.path));
|
||||
const sourceMapFile = res.outputFiles.find(f => /\.js\.map$/.test(f.path));
|
||||
const contents = Buffer.from(jsFile.contents);
|
||||
const jsOrCSSFile = res.outputFiles.find(f => /\.(js|css)$/.test(f.path));
|
||||
const sourceMapFile = res.outputFiles.find(f => /\.(js|css)\.map$/.test(f.path));
|
||||
const contents = Buffer.from(jsOrCSSFile.contents);
|
||||
const unicodeMatch = contents.toString().match(/[^\x00-\xFF]+/g);
|
||||
if (unicodeMatch) {
|
||||
cb(new Error(`Found non-ascii character ${unicodeMatch[0]} in the minified output of ${f.path}. Non-ASCII characters in the output can cause performance problems when loading. Please review if you have introduced a regular expression that esbuild is not automatically converting and convert it to using unicode escape sequences.`));
|
||||
@@ -216,7 +213,7 @@ function minifyTask(src, sourceMapBaseUrl) {
|
||||
cb(undefined, f);
|
||||
}
|
||||
}, cb);
|
||||
}), jsFilter.restore, cssFilter, (0, postcss_1.gulpPostcss)([cssnano({ preset: 'default' })]), cssFilter.restore, svgFilter, svgmin(), svgFilter.restore, gulp_sourcemaps_1.default.write('./', {
|
||||
}), esbuildFilter.restore, svgFilter, svgmin(), svgFilter.restore, gulp_sourcemaps_1.default.write('./', {
|
||||
sourceMappingURL,
|
||||
sourceRoot: undefined,
|
||||
includeContent: true,
|
||||
|
||||
Reference in New Issue
Block a user