mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
2bdecf8b7b
Updated tasks include: - lint - npmcopy - build, minify, and process for distribution. - new custom build command using yargs - compare size of minified/gzip built files - pretest scripts, including qunit-fixture, babel transpilation, and npmcopy - node smoke tests - promises aplus tests - new watch task using `rollup.watch` directly Also: - upgraded husky and added the new lint command - updated lint config to use new "flat" config format. See https://eslint.org/docs/latest/use/configure/configuration-files-new - Temporarily disabled one lint rule until flat config is supported by eslint-plugin-import. See https://github.com/import-js/eslint-plugin-import/issues/2556 - committed package-lock.json - updated all test scripts to use the new build - added an express test server that uses middleware-mockserver (this can be used to run tests without karma) - build-all-variants is now build:all Close gh-5318
68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
"use strict";
|
|
|
|
const swc = require( "@swc/core" );
|
|
const fs = require( "fs" );
|
|
const path = require( "path" );
|
|
const processForDist = require( "./dist" );
|
|
const getTimestamp = require( "./lib/getTimestamp" );
|
|
|
|
const rjs = /\.js$/;
|
|
|
|
module.exports = async function minify( { filename, dir, esm } ) {
|
|
const contents = await fs.promises.readFile( path.join( dir, filename ), "utf8" );
|
|
const version = /jQuery JavaScript Library ([^\n]+)/.exec( contents )[ 1 ];
|
|
|
|
const { code, map: incompleteMap } = await swc.minify(
|
|
contents,
|
|
{
|
|
compress: {
|
|
ecma: esm ? 2015 : 5,
|
|
hoist_funs: false,
|
|
loops: false
|
|
},
|
|
format: {
|
|
ecma: esm ? 2015 : 5,
|
|
asciiOnly: true,
|
|
comments: false,
|
|
preamble: `/*! jQuery ${version}` +
|
|
" | (c) OpenJS Foundation and other contributors" +
|
|
" | jquery.org/license */\n"
|
|
},
|
|
mangle: true,
|
|
inlineSourcesContent: false,
|
|
sourceMap: true
|
|
}
|
|
);
|
|
|
|
const minFilename = filename.replace( rjs, ".min.js" );
|
|
const mapFilename = filename.replace( rjs, ".min.map" );
|
|
|
|
// The map's `files` & `sources` property are set incorrectly, fix
|
|
// them via overrides from the task config.
|
|
// See https://github.com/swc-project/swc/issues/7588#issuecomment-1624345254
|
|
const map = JSON.stringify( {
|
|
...JSON.parse( incompleteMap ),
|
|
file: minFilename,
|
|
sources: [ filename ]
|
|
} );
|
|
|
|
await Promise.all( [
|
|
fs.promises.writeFile(
|
|
path.join( dir, minFilename ),
|
|
code
|
|
),
|
|
fs.promises.writeFile(
|
|
path.join( dir, mapFilename ),
|
|
map
|
|
)
|
|
] );
|
|
|
|
// Always process files for dist
|
|
// Doing it here avoids extra file reads
|
|
processForDist( contents, filename );
|
|
processForDist( code, minFilename );
|
|
processForDist( map, mapFilename );
|
|
|
|
console.log( `[${getTimestamp()}] ${minFilename} ${version} with ${mapFilename} created.` );
|
|
};
|