update esbuild

This commit is contained in:
João Moreno 2021-01-06 14:19:19 +01:00
parent aaa8fa92c6
commit 22b9a2b1e8
No known key found for this signature in database
GPG key ID: 896B853774D1A575
6 changed files with 46 additions and 132 deletions

View file

@ -9,7 +9,6 @@ const es = require("event-stream");
const gulp = require("gulp");
const concat = require("gulp-concat");
const filter = require("gulp-filter");
const flatmap = require("gulp-flatmap");
const fancyLog = require("fancy-log");
const ansiColors = require("ansi-colors");
const path = require("path");
@ -162,58 +161,31 @@ function optimizeTask(opts) {
};
}
exports.optimizeTask = optimizeTask;
// declare class FileWithCopyright extends VinylFile {
// public __hasOurCopyright: boolean;
// }
/**
* Wrap around uglify and allow the preserveComments function
* to have a file "context" to include our copyright only once per file.
*/
function uglifyWithCopyrights() {
const esbuild = require('gulp-esbuild');
// const preserveComments = (f: FileWithCopyright) => {
// return (_node: any, comment: { value: string; type: string; }) => {
// const text = comment.value;
// const type = comment.type;
// if (/@minifier_do_not_preserve/.test(text)) {
// return false;
// }
// const isOurCopyright = IS_OUR_COPYRIGHT_REGEXP.test(text);
// if (isOurCopyright) {
// if (f.__hasOurCopyright) {
// return false;
// }
// f.__hasOurCopyright = true;
// return true;
// }
// if ('comment2' === type) {
// // check for /*!. Note that text doesn't contain leading /*
// return (text.length > 0 && text[0] === '!') || /@preserve|license|@cc_on|copyright/i.test(text);
// } else if ('comment1' === type) {
// return /license|copyright/i.test(text);
// }
// return false;
// };
// };
const input = es.through();
const output = input
.pipe(flatmap((stream, f) => {
return stream.pipe(esbuild({
outfile: f.relative,
sourcemap: true,
minify: true,
}));
}));
return es.duplex(input, output);
}
function minifyTask(src, sourceMapBaseUrl) {
const esbuild = require('esbuild');
const sourceMappingURL = sourceMapBaseUrl ? ((f) => `${sourceMapBaseUrl}/${f.relative}.map`) : undefined;
return cb => {
const minifyCSS = require('gulp-cssnano');
const sourcemaps = require('gulp-sourcemaps');
const jsFilter = filter('**/*.js', { restore: true });
const cssFilter = filter('**/*.css', { restore: true });
pump(gulp.src([src + '/**', '!' + src + '/**/*.map']), jsFilter, sourcemaps.init({ loadMaps: true }), uglifyWithCopyrights(), jsFilter.restore, cssFilter, minifyCSS({ reduceIdents: false }), cssFilter.restore, sourcemaps.mapSources((sourcePath) => {
pump(gulp.src([src + '/**', '!' + src + '/**/*.map']), jsFilter, sourcemaps.init({ loadMaps: true }), es.map((f, cb) => {
esbuild.build({
entryPoints: [f.path],
minify: true,
sourcemap: 'external',
outdir: '.',
platform: 'node',
target: ['node12.18'],
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));
f.contents = Buffer.from(jsFile.contents);
f.sourceMap = JSON.parse(sourceMapFile.text);
cb(undefined, f);
}, cb);
}), jsFilter.restore, cssFilter, minifyCSS({ reduceIdents: false }), cssFilter.restore, sourcemaps.mapSources((sourcePath) => {
if (sourcePath === 'bootstrap-fork.js') {
return 'bootstrap-fork.orig.js';
}

View file

@ -9,7 +9,6 @@ import * as es from 'event-stream';
import * as gulp from 'gulp';
import * as concat from 'gulp-concat';
import * as filter from 'gulp-filter';
import * as flatmap from 'gulp-flatmap';
import * as fancyLog from 'fancy-log';
import * as ansiColors from 'ansi-colors';
import * as path from 'path';
@ -232,61 +231,8 @@ export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStr
};
}
// declare class FileWithCopyright extends VinylFile {
// public __hasOurCopyright: boolean;
// }
/**
* Wrap around uglify and allow the preserveComments function
* to have a file "context" to include our copyright only once per file.
*/
function uglifyWithCopyrights(): NodeJS.ReadWriteStream {
const esbuild = require('gulp-esbuild') as typeof import('gulp-esbuild');
// const preserveComments = (f: FileWithCopyright) => {
// return (_node: any, comment: { value: string; type: string; }) => {
// const text = comment.value;
// const type = comment.type;
// if (/@minifier_do_not_preserve/.test(text)) {
// return false;
// }
// const isOurCopyright = IS_OUR_COPYRIGHT_REGEXP.test(text);
// if (isOurCopyright) {
// if (f.__hasOurCopyright) {
// return false;
// }
// f.__hasOurCopyright = true;
// return true;
// }
// if ('comment2' === type) {
// // check for /*!. Note that text doesn't contain leading /*
// return (text.length > 0 && text[0] === '!') || /@preserve|license|@cc_on|copyright/i.test(text);
// } else if ('comment1' === type) {
// return /license|copyright/i.test(text);
// }
// return false;
// };
// };
const input = es.through();
const output = input
.pipe(flatmap((stream, f) => {
return stream.pipe(esbuild({
outfile: f.relative,
sourcemap: true,
minify: true,
platform: 'node',
target: ['node12.18']
}));
}));
return es.duplex(input, output);
}
export function minifyTask(src: string, sourceMapBaseUrl?: string): (cb: any) => void {
const esbuild = require('esbuild') as typeof import('esbuild');
const sourceMappingURL = sourceMapBaseUrl ? ((f: any) => `${sourceMapBaseUrl}/${f.relative}.map`) : undefined;
return cb => {
@ -300,7 +246,25 @@ export function minifyTask(src: string, sourceMapBaseUrl?: string): (cb: any) =>
gulp.src([src + '/**', '!' + src + '/**/*.map']),
jsFilter,
sourcemaps.init({ loadMaps: true }),
uglifyWithCopyrights(),
es.map((f: any, cb) => {
esbuild.build({
entryPoints: [f.path],
minify: true,
sourcemap: 'external',
outdir: '.',
platform: 'node',
target: ['node12.18'],
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))!;
f.contents = Buffer.from(jsFile.contents);
f.sourceMap = JSON.parse(sourceMapFile.text);
cb(undefined, f);
}, cb);
}),
jsFilter.restore,
cssFilter,
minifyCSS({ reduceIdents: false }),

View file

@ -34,9 +34,11 @@
"applicationinsights": "1.0.8",
"azure-storage": "^2.1.0",
"electron-osx-sign": "^0.4.16",
"esbuild": "^0.8.30",
"iconv-lite-umd": "0.6.8",
"jsonc-parser": "^2.3.0",
"mime": "^1.4.1",
"source-map": "0.6.1",
"typescript": "4.2.0-dev.20201207",
"vsce": "1.48.0"
},
@ -46,7 +48,5 @@
"postinstall": "npm run compile",
"npmCheckJs": "tsc --noEmit"
},
"dependencies": {
"source-map": "0.6.1"
}
"dependencies": {}
}

View file

@ -679,6 +679,11 @@ entities@^1.1.1, entities@~1.1.1:
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
esbuild@^0.8.30:
version "0.8.30"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.30.tgz#3d057ff9ffe6d5d30bccb0afe8cc92a2e69622d3"
integrity sha512-gCJQYUMO9QNrfpNOIiCnFoX41nWiPFCvURBQF+qWckyJ7gmw2xCShdKCXvS+RZcQ5krcxEOLIkzujqclePKhfw==
eslint-scope@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"

View file

@ -135,7 +135,6 @@
"gulp-buffer": "0.0.2",
"gulp-concat": "^2.6.1",
"gulp-cssnano": "^2.1.3",
"gulp-esbuild": "^0.3.12",
"gulp-eslint": "^5.0.0",
"gulp-filter": "^5.1.0",
"gulp-flatmap": "^1.0.2",

View file

@ -3194,11 +3194,6 @@ es6-weak-map@^2.0.1:
es6-iterator "^2.0.1"
es6-symbol "^3.1.1"
esbuild@^0.8.29:
version "0.8.29"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.29.tgz#cc20fb752e0905a3546d68ae1be58f9b97044c39"
integrity sha512-UDsEoeXuctVgG2hEts1Hwq2jYDGqV7nksEHEZaiCy2v+lXF5ButX4ErPAJAFi5ZNKKW+6Pom93pArV7hki6HnQ==
escalade@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.2.tgz#6a580d70edb87880f22b4c91d0d56078df6962c4"
@ -4583,15 +4578,6 @@ gulp-cssnano@^2.1.3:
plugin-error "^1.0.1"
vinyl-sourcemaps-apply "^0.2.1"
gulp-esbuild@^0.3.12:
version "0.3.12"
resolved "https://registry.yarnpkg.com/gulp-esbuild/-/gulp-esbuild-0.3.12.tgz#3b8b8e8110b445af76b3fb145fc208d86a6d0ef5"
integrity sha512-gUNMGMnfvF7tHvJilpXqH67phe25jVDnstqQQ69mS7DsPtI4LKPnF8y5o0rt56ww8+Pf9MmT+sKJfErqUGt+RA==
dependencies:
esbuild "^0.8.29"
plugin-error "^1.0.1"
vinyl "^2.2.1"
gulp-eslint@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/gulp-eslint/-/gulp-eslint-5.0.0.tgz#2a2684095f774b2cf79310262078c56cc7a12b52"
@ -10638,18 +10624,6 @@ vinyl@^2.0.2, vinyl@^2.2.0:
remove-trailing-separator "^1.0.1"
replace-ext "^1.0.0"
vinyl@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974"
integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==
dependencies:
clone "^2.1.1"
clone-buffer "^1.0.0"
clone-stats "^1.0.0"
cloneable-readable "^1.0.0"
remove-trailing-separator "^1.0.1"
replace-ext "^1.0.0"
vinyl@~2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.2.tgz#0a3713d8d4e9221c58f10ca16c0116c9e25eda7c"