aboutsummaryrefslogtreecommitdiffstats
path: root/build/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'build/tasks')
-rw-r--r--build/tasks/build.js70
-rw-r--r--build/tasks/dist.js2
-rw-r--r--build/tasks/node_smoke_tests.js118
3 files changed, 167 insertions, 23 deletions
diff --git a/build/tasks/build.js b/build/tasks/build.js
index 1a0d7d75a..69a4de7c7 100644
--- a/build/tasks/build.js
+++ b/build/tasks/build.js
@@ -15,6 +15,7 @@ const excludedFromSlim = require( "./lib/slim-exclude" );
const rollupFileOverrides = require( "./lib/rollup-plugin-file-overrides" );
const pkg = require( "../../package.json" );
const isCleanWorkingDir = require( "./lib/isCleanWorkingDir" );
+const processForDist = require( "./dist" );
const minify = require( "./minify" );
const getTimestamp = require( "./lib/getTimestamp" );
const verifyNodeVersion = require( "./lib/verifyNodeVersion" );
@@ -71,8 +72,16 @@ async function readdirRecursive( dir, all = [] ) {
return all;
}
-async function getOutputRollupOptions( { esm = false } = {} ) {
- const wrapperFileName = `wrapper${esm ? "-esm" : ""}.js`;
+async function getOutputRollupOptions( {
+ esm = false,
+ factory = false
+} = {} ) {
+ const wrapperFileName = `wrapper${
+ factory ? "-factory" : ""
+ }${
+ esm ? "-esm" : ""
+ }.js`;
+
const wrapperSource = await read( wrapperFileName );
// Catch `// @CODE` and subsequent comment lines event if they don't start
@@ -163,6 +172,7 @@ async function build( {
filename = "jquery.js",
include = [],
esm = false,
+ factory = false,
slim = false,
version,
watch = false
@@ -275,7 +285,7 @@ async function build( {
plugins: [ rollupFileOverrides( fileOverrides ) ]
} );
- const outputOptions = await getOutputRollupOptions( { esm } );
+ const outputOptions = await getOutputRollupOptions( { esm, factory } );
if ( watch ) {
const watcher = rollup.watch( {
@@ -305,7 +315,11 @@ async function build( {
version
} );
- await minify( { dir, filename, esm } );
+ // Don't minify factory files; they are not meant
+ // for the browser anyway.
+ if ( !factory ) {
+ await minify( { dir, filename, esm } );
+ }
break;
}
} );
@@ -317,7 +331,22 @@ async function build( {
} = await bundle.generate( outputOptions );
await writeCompiled( { code, dir, filename, version } );
- await minify( { dir, filename, esm } );
+
+ // Don't minify factory files; they are not meant
+ // for the browser anyway.
+ if ( !factory ) {
+ await minify( { dir, filename, esm } );
+ } else {
+
+ // We normally process for dist during minification to save
+ // file reads. However, some files are not minified and then
+ // we need to do it separately.
+ const contents = await fs.promises.readFile(
+ path.join( dir, filename ),
+ "utf8"
+ );
+ processForDist( contents, filename );
+ }
}
}
@@ -339,6 +368,37 @@ async function buildDefaultFiles( { version, watch } = {} ) {
slim: true,
version,
watch
+ } ),
+
+ build( {
+ filename: "jquery.factory.js",
+ factory: true,
+ version,
+ watch
+ } ),
+ build( {
+ filename: "jquery.factory.slim.js",
+ slim: true,
+ factory: true,
+ version,
+ watch
+ } ),
+ build( {
+ dir: "dist-module",
+ filename: "jquery.factory.module.js",
+ esm: true,
+ factory: true,
+ version,
+ watch
+ } ),
+ build( {
+ dir: "dist-module",
+ filename: "jquery.factory.slim.module.js",
+ esm: true,
+ slim: true,
+ factory: true,
+ version,
+ watch
} )
] );
diff --git a/build/tasks/dist.js b/build/tasks/dist.js
index d6488aa1b..f15689e3d 100644
--- a/build/tasks/dist.js
+++ b/build/tasks/dist.js
@@ -1,7 +1,7 @@
"use strict";
// Process files for distribution.
-module.exports = async function processForDist( text, filename ) {
+module.exports = function processForDist( text, filename ) {
if ( !text ) {
throw new Error( "text required for processForDist" );
}
diff --git a/build/tasks/node_smoke_tests.js b/build/tasks/node_smoke_tests.js
index 5aa7660b0..433a005d5 100644
--- a/build/tasks/node_smoke_tests.js
+++ b/build/tasks/node_smoke_tests.js
@@ -5,7 +5,8 @@ const util = require( "util" );
const exec = util.promisify( require( "child_process" ).exec );
const verifyNodeVersion = require( "./lib/verifyNodeVersion" );
-const allowedModules = [ "commonjs", "module" ];
+const allowedLibraryTypes = [ "regular", "factory" ];
+const allowedSourceTypes = [ "commonjs", "module" ];
if ( !verifyNodeVersion() ) {
return;
@@ -17,33 +18,116 @@ if ( !verifyNodeVersion() ) {
// important so that the tests & the main process don't interfere with
// each other, e.g. so that they don't share the `require` cache.
-async function runTests( sourceType, module ) {
- if ( !allowedModules.includes( sourceType ) ) {
- throw new Error(
- `Usage: \`node_smoke_tests [${allowedModules.join( "|" )}]:JQUERY\``
- );
+async function runTests( { libraryType, sourceType, module } ) {
+ if ( !allowedLibraryTypes.includes( libraryType ) ||
+ !allowedSourceTypes.includes( sourceType ) ) {
+ throw new Error( `Incorrect libraryType or sourceType value; passed: ${
+ libraryType
+ } ${ sourceType } "${ module }"` );
}
- const dir = `./test/node_smoke_tests/${sourceType}`;
+ const dir = `./test/node_smoke_tests/${ sourceType }/${ libraryType }`;
const files = await fs.promises.readdir( dir, { withFileTypes: true } );
const testFiles = files.filter( ( testFilePath ) => testFilePath.isFile() );
+
+ if ( !testFiles.length ) {
+ throw new Error( `No test files found for ${
+ libraryType
+ } ${ sourceType } "${ module }"` );
+ }
+
await Promise.all(
testFiles.map( ( testFile ) =>
- exec( `node "${dir}/${testFile.name}" "${module}"` )
+ exec( `node "${ dir }/${ testFile.name }" "${ module }"` )
)
);
- console.log( `Node smoke tests passed for ${sourceType} "${module}".` );
+ console.log( `Node smoke tests passed for ${
+ libraryType
+ } ${ sourceType } "${ module }".` );
}
async function runDefaultTests() {
await Promise.all( [
- runTests( "commonjs", "jquery" ),
- runTests( "commonjs", "jquery/slim" ),
- runTests( "commonjs", "./dist/jquery.js" ),
- runTests( "commonjs", "./dist/jquery.slim.js" ),
- runTests( "module", "jquery" ),
- runTests( "module", "jquery/slim" ),
- runTests( "module", "./dist-module/jquery.module.js" ),
- runTests( "module", "./dist-module/jquery.slim.module.js" )
+ runTests( {
+ libraryType: "regular",
+ sourceType: "commonjs",
+ module: "jquery"
+ } ),
+ runTests( {
+ libraryType: "regular",
+ sourceType: "commonjs",
+ module: "jquery/slim"
+ } ),
+ runTests( {
+ libraryType: "regular",
+ sourceType: "commonjs",
+ module: "./dist/jquery.js"
+ } ),
+ runTests( {
+ libraryType: "regular",
+ sourceType: "commonjs",
+ module: "./dist/jquery.slim.js"
+ } ),
+ runTests( {
+ libraryType: "regular",
+ sourceType: "module",
+ module: "jquery"
+ } ),
+ runTests( {
+ libraryType: "regular",
+ sourceType: "module",
+ module: "jquery/slim"
+ } ),
+ runTests( {
+ libraryType: "regular",
+ sourceType: "module",
+ module: "./dist-module/jquery.module.js"
+ } ),
+ runTests( {
+ libraryType: "regular",
+ sourceType: "module",
+ module: "./dist-module/jquery.slim.module.js"
+ } ),
+
+ runTests( {
+ libraryType: "factory",
+ sourceType: "commonjs",
+ module: "jquery/factory"
+ } ),
+ runTests( {
+ libraryType: "factory",
+ sourceType: "commonjs",
+ module: "jquery/factory-slim"
+ } ),
+ runTests( {
+ libraryType: "factory",
+ sourceType: "commonjs",
+ module: "./dist/jquery.factory.js"
+ } ),
+ runTests( {
+ libraryType: "factory",
+ sourceType: "commonjs",
+ module: "./dist/jquery.factory.slim.js"
+ } ),
+ runTests( {
+ libraryType: "factory",
+ sourceType: "module",
+ module: "jquery/factory"
+ } ),
+ runTests( {
+ libraryType: "factory",
+ sourceType: "module",
+ module: "jquery/factory-slim"
+ } ),
+ runTests( {
+ libraryType: "factory",
+ sourceType: "module",
+ module: "./dist-module/jquery.factory.module.js"
+ } ),
+ runTests( {
+ libraryType: "factory",
+ sourceType: "module",
+ module: "./dist-module/jquery.factory.slim.module.js"
+ } )
] );
}