From 8be4c0e4f89d6c8f780e5937a0534921d8c7815e Mon Sep 17 00:00:00 2001 From: Michał Gołębiowski-Owczarek Date: Mon, 10 Jul 2023 19:14:08 +0200 Subject: Build: Add `exports` to package.json, export slim & esm builds Summary of the changes: * define the `exports` field in `package.json`; `jQuery` & `$` are also exported as named exports in ESM builds now * declare `"type": "module"` globally except for the `build` folder * add the `--esm` option to `grunt custom`, generating jQuery as an ECMAScript module into the `dist-module` folder * expand `node_smoke_tests` to test the slim & ESM builds and their various combinations; also, test both jQuery loaded via a path to the file as well as from module specifiers that should be parsed via the `exports` feature * add details about ESM usage to the release package README * run `compare_size` on all built minified files; don't run it anymore on unminified files where they don't provide lots of value * remove the remove_map_comment task; SWC doesn't insert the `//# sourceMappingURL=` pragma by default so there's nothing to strip Fixes gh-4592 Closes gh-5255 --- README.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index cab646fcd..8d9ff0a93 100644 --- a/README.md +++ b/README.md @@ -111,7 +111,7 @@ The build process shows a message for each dependent module it excludes or inclu ##### AMD name -As an option, you can set the module name for jQuery's AMD definition. By default, it is set to "jquery", which plays nicely with plugins and third-party libraries, but there may be cases where you'd like to change this. Simply set the `"amd"` option: +As an option, you can set the module name for jQuery's AMD definition. By default, it is set to "jquery", which plays nicely with plugins and third-party libraries, but there may be cases where you'd like to change this. Simply pass it to the `--amd` parameter: ```bash grunt custom --amd="custom-name" @@ -123,6 +123,30 @@ Or, to define anonymously, set the name to an empty string. grunt custom --amd="" ``` +##### File name + +The default name for the built jQuery file is `jquery.js`; it is placed under the `dist/` directory. It's possible to change the file name using the `--filename` parameter: + +```bash +grunt custom:slim --filename="jquery.slim.js" +``` + +This would create a slim version of jQuery and place it under `dist/jquery.slim.js`. In fact, this is exactly the command we use to generate the slim jQuery during the release process. + +##### ECMAScript Module (ESM) mode + +By default, jQuery generates a regular script JavaScript file. You can also generate an ECMAScript module exporting `jQuery` as the default export using the `--esm` parameter: + +```bash +grunt custom --esm +``` + +The default is `script` but you can also pass it explicitly via `--no-esm`: + +```bash +grunt custom --no-esm +``` + #### Custom Build Examples To create a custom build, first check out the version: -- cgit v1.2.3