From f37c2e51f36c8f8bab3879064a90e86a685feafc Mon Sep 17 00:00:00 2001 From: Michał Gołębiowski-Owczarek Date: Mon, 9 Dec 2019 20:00:44 +0100 Subject: Build: Auto-convert sources to AMD jQuery source has been migrated in gh-4541 from AMD to ES modules. To maintain support for consumers of our AMD modules, this commits adds a task transpiling the ES modules sources in `src/` to AMD in `amd/`. A "Load with AMD" checkbox was also restored to the QUnit setup. Note that, contrary to jQuery 3.x, AMD files need to be generated via `grunt amd` or `grunt` as sources are not authored in ECMAScript modules. To achieve a similar no-compile experience during jQuery 4.x testing, use the new "Load as modules" checkbox which works in all supported browsers except for IE & Edge (the legacy, EdgeHTML-based one). Ref gh-4541 Closes gh-4554 --- build/tasks/amd.js | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 build/tasks/amd.js (limited to 'build/tasks') diff --git a/build/tasks/amd.js b/build/tasks/amd.js new file mode 100644 index 000000000..617773ff2 --- /dev/null +++ b/build/tasks/amd.js @@ -0,0 +1,43 @@ +/** + * Compiles sources from ES Modules in `src/` to AMD in `amd/`. + */ + +"use strict"; + +module.exports = function( grunt ) { + const path = require( "path" ); + const rimraf = require( "rimraf" ); + const rollup = require( "rollup" ); + const srcFolder = path.resolve( __dirname, "..", "..", "src" ); + const amdFolder = path.resolve( srcFolder, "..", "amd" ); + const inputFileName = "jquery.js"; + + const inputRollupOptions = { + input: path.resolve( srcFolder, inputFileName ), + preserveModules: true + }; + + const outputRollupOptions = { + format: "amd", + dir: "amd" + }; + + grunt.registerTask( + "amd", + "Convert ES modules from `src/` to AMD modules in `amd/`", + async function() { + const done = this.async(); + + try { + grunt.verbose.writeln( "Removing the 'amd' directory..." ); + rimraf( amdFolder, async function() { + const bundle = await rollup.rollup( inputRollupOptions ); + await bundle.write( outputRollupOptions ); + grunt.log.ok( "Sources from 'src' converted to AMD in 'amd'." ); + done(); + } ); + } catch ( err ) { + done( err ); + } + } ); +}; -- cgit v1.2.3