diff options
Diffstat (limited to 'build/tasks')
-rw-r--r-- | build/tasks/build.js | 70 | ||||
-rw-r--r-- | build/tasks/dist.js | 2 | ||||
-rw-r--r-- | build/tasks/node_smoke_tests.js | 118 |
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" + } ) ] ); } |