mirror of
https://github.com/jquery/jquery.git
synced 2024-12-09 08:04:24 +00:00
2646a8b07f
*Authors* - Checking and updating authors has been migrated to a custom script in the repo *Changelog* - changelogplease is no longer maintained - generate changelog in markdown for GitHub releases - generate changelog in HTML for blog posts - generate contributors list in HTML for blog posts *dist* - clone dist repo, copy files, and commit/push - commit tag with dist files on main branch; remove dist files from main branch after release *cdn* - clone cdn repo, copy files, and commit/push - create versioned and unversioned copies in cdn/ - generate md5 sums and archives for Google and MSFT *build* - implement reproducible builds and verify release builds * uses the last modified date for the latest commit * See https://reproducible-builds.org/ - the verify workflow also ensures all files were properly published to the CDN and npm *docs* - the new release workflow is documented at build/release/README.md *misc* - now that we don't need the jquery-release script and now that we no longer need to build on Node 10, we can use ESM in all files in the build folder - move dist wrappers to "wrappers" folders for easy removal of all built files - limit certain workflows to the main repo (not forks) - version in package.json has been set to beta.1 so that the next release will be beta.2 - release-it added the `preReleaseBase` option and we now always set it to `1` in the npm script. This is a noop for stable releases. Fixes jquery/jquery-release#114 Closes gh-5512
69 lines
1.7 KiB
JavaScript
69 lines
1.7 KiB
JavaScript
import fs from "node:fs/promises";
|
|
import path from "node:path";
|
|
import swc from "@swc/core";
|
|
import processForDist from "./dist.js";
|
|
import getTimestamp from "./lib/getTimestamp.js";
|
|
|
|
const rjs = /\.js$/;
|
|
|
|
export default async function minify( { filename, dir, esm } ) {
|
|
const contents = await fs.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"
|
|
},
|
|
inlineSourcesContent: false,
|
|
mangle: true,
|
|
module: esm,
|
|
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.writeFile(
|
|
path.join( dir, minFilename ),
|
|
code
|
|
),
|
|
fs.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.` );
|
|
}
|