mirror of
https://github.com/jquery/jquery.git
synced 2026-01-09 14:18:03 -05:00
Build: Switch form Terser to SWC for JS minification (#5286)
Also, as part of this, fix the `file` & `sources` properties of the source map file. Fixes gh-5285 Closes gh-5286 Ref gh-5258
This commit is contained in:
committed by
GitHub
parent
198b41c8c2
commit
e24218758b
@@ -339,6 +339,6 @@ module.exports = function( grunt ) {
|
||||
"";
|
||||
|
||||
grunt.log.writeln( "Creating custom build...\n" );
|
||||
grunt.task.run( [ "build:*:*" + ( modules ? ":" + modules : "" ), "terser", "dist" ] );
|
||||
grunt.task.run( [ "build:*:*" + ( modules ? ":" + modules : "" ), "minify", "dist" ] );
|
||||
} );
|
||||
};
|
||||
|
||||
56
build/tasks/minify.js
Normal file
56
build/tasks/minify.js
Normal file
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* Minify JavaScript using SWC.
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
module.exports = ( grunt ) => {
|
||||
const swc = require( "@swc/core" );
|
||||
|
||||
grunt.registerMultiTask(
|
||||
"minify",
|
||||
"Minify JavaScript using SWC",
|
||||
async function() {
|
||||
const done = this.async();
|
||||
const options = this.options();
|
||||
const sourceMapFilename = options.sourceMap && options.sourceMap.filename;
|
||||
const sourceMapOverrides = options.sourceMap && options.sourceMap.overrides || {};
|
||||
|
||||
await Promise.all( this.files.map( async( { src, dest } ) => {
|
||||
if ( src.length !== 1 ) {
|
||||
grunt.fatal( "The minify task requires a single source per destination" );
|
||||
}
|
||||
|
||||
const { code, map: incompleteMap } = await swc.minify(
|
||||
grunt.file.read( src[ 0 ] ),
|
||||
{
|
||||
...options.swc,
|
||||
inlineSourcesContent: false,
|
||||
sourceMap: sourceMapFilename ?
|
||||
{
|
||||
filename: sourceMapFilename
|
||||
} :
|
||||
false
|
||||
}
|
||||
);
|
||||
|
||||
grunt.file.write( dest, code );
|
||||
|
||||
if ( sourceMapFilename ) {
|
||||
|
||||
// Apply map overrides if needed. See the task config description
|
||||
// for more details.
|
||||
const mapObject = {
|
||||
...JSON.parse( incompleteMap ),
|
||||
...sourceMapOverrides
|
||||
};
|
||||
const map = JSON.stringify( mapObject );
|
||||
|
||||
grunt.file.write( sourceMapFilename, map );
|
||||
}
|
||||
} ) );
|
||||
|
||||
done();
|
||||
}
|
||||
);
|
||||
};
|
||||
@@ -3,7 +3,7 @@
|
||||
var fs = require( "fs" );
|
||||
|
||||
module.exports = function( grunt ) {
|
||||
var config = grunt.config( "terser.all.files" );
|
||||
var config = grunt.config( "minify.all.files" );
|
||||
grunt.registerTask( "remove_map_comment", function() {
|
||||
var minLoc = grunt.config.process( Object.keys( config )[ 0 ] );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user