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 --- dist-module/.eslintrc.json | 45 ++++++++++++++++++++++++++ dist-module/jquery.node-module-wrapper.js | 4 +++ dist-module/jquery.node-module-wrapper.slim.js | 4 +++ dist-module/package.json | 3 ++ 4 files changed, 56 insertions(+) create mode 100644 dist-module/.eslintrc.json create mode 100644 dist-module/jquery.node-module-wrapper.js create mode 100644 dist-module/jquery.node-module-wrapper.slim.js create mode 100644 dist-module/package.json (limited to 'dist-module') diff --git a/dist-module/.eslintrc.json b/dist-module/.eslintrc.json new file mode 100644 index 000000000..33335abd8 --- /dev/null +++ b/dist-module/.eslintrc.json @@ -0,0 +1,45 @@ +{ + "root": true, + + "parserOptions": { + "ecmaVersion": 2015, + "sourceType": "module" + }, + + "globals": { + "define": false, + "Symbol": false + }, + + "overrides": [ + { + "files": "jquery{,.slim}.module.min.js", + + "parserOptions": { + "ecmaVersion": 2015, + "sourceType": "module" + } + }, + + { + "files": "jquery{,.slim}.module.js", + "extends": "../.eslintrc-browser.json", + + "parserOptions": { + "ecmaVersion": 2015, + "sourceType": "module" + }, + + "rules": { + + // That is okay for the built version + "no-multiple-empty-lines": "off", + + // When custom compilation is used, the version string + // can get large. Accept that in the built version. + "max-len": "off", + "one-var": "off" + } + } + ] +} diff --git a/dist-module/jquery.node-module-wrapper.js b/dist-module/jquery.node-module-wrapper.js new file mode 100644 index 000000000..bda9eb3d7 --- /dev/null +++ b/dist-module/jquery.node-module-wrapper.js @@ -0,0 +1,4 @@ +import jQuery from "../dist/jquery.js"; +const $ = jQuery; +export { jQuery, $ }; +export default jQuery; diff --git a/dist-module/jquery.node-module-wrapper.slim.js b/dist-module/jquery.node-module-wrapper.slim.js new file mode 100644 index 000000000..900f32fc2 --- /dev/null +++ b/dist-module/jquery.node-module-wrapper.slim.js @@ -0,0 +1,4 @@ +import jQuery from "../dist/jquery.slim.js"; +const $ = jQuery; +export { jQuery, $ }; +export default jQuery; diff --git a/dist-module/package.json b/dist-module/package.json new file mode 100644 index 000000000..3dbc1ca59 --- /dev/null +++ b/dist-module/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} -- cgit v1.2.3