diff options
author | Michał Gołębiowski-Owczarek <m.goleb@gmail.com> | 2019-12-09 20:00:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-09 20:00:44 +0100 |
commit | f37c2e51f36c8f8bab3879064a90e86a685feafc (patch) | |
tree | b5a5c406a6550722af65ebf579f0a51d6d8c336e /build/tasks | |
parent | d5c505e35d8c74ce8e9d99731a1a7eab0e0d911c (diff) | |
download | jquery-f37c2e51f36c8f8bab3879064a90e86a685feafc.tar.gz jquery-f37c2e51f36c8f8bab3879064a90e86a685feafc.zip |
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
Diffstat (limited to 'build/tasks')
-rw-r--r-- | build/tasks/amd.js | 43 |
1 files changed, 43 insertions, 0 deletions
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 ); + } + } ); +}; |