aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2023-07-10 19:14:08 +0200
committerGitHub <noreply@github.com>2023-07-10 19:14:08 +0200
commit8be4c0e4f89d6c8f780e5937a0534921d8c7815e (patch)
tree55d87bcc040dfea54ec5c77ba86d942aa9526916 /src
parent65b85031fb5688361c077bc04e641e4b502671e1 (diff)
downloadjquery-8be4c0e4f89d6c8f780e5937a0534921d8c7815e.tar.gz
jquery-8be4c0e4f89d6c8f780e5937a0534921d8c7815e.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/.eslintrc.json24
-rw-r--r--src/wrapper-esm.js41
-rw-r--r--src/wrapper.js1
3 files changed, 66 insertions, 0 deletions
diff --git a/src/.eslintrc.json b/src/.eslintrc.json
index f1b596dff..c2b08fb93 100644
--- a/src/.eslintrc.json
+++ b/src/.eslintrc.json
@@ -58,6 +58,30 @@
},
{
+ "files": "wrapper-esm.js",
+ "parserOptions": {
+ "ecmaVersion": 2015,
+ "sourceType": "module"
+ },
+ "globals": {
+ "jQuery": false
+ },
+ "rules": {
+ "no-unused-vars": "off",
+ "indent": [ "error", "tab", {
+ // Unlike other codes, "wrapper.js" is implemented in UMD.
+ // So it required a specific exception for jQuery's UMD
+ // Code Style. This makes that indentation check is not
+ // performed for 1 depth of outer FunctionExpressions
+ "ignoredNodes": [
+ "Program > FunctionDeclaration > *"
+ ]
+ } ],
+ "import/no-unused-modules": "off"
+ }
+ },
+
+ {
"files": "exports/amd.js",
"globals": {
"define": false
diff --git a/src/wrapper-esm.js b/src/wrapper-esm.js
new file mode 100644
index 000000000..00ff2995c
--- /dev/null
+++ b/src/wrapper-esm.js
@@ -0,0 +1,41 @@
+/*!
+ * jQuery JavaScript Library v@VERSION
+ * https://jquery.com/
+ *
+ * Copyright OpenJS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: @DATE
+ */
+// For ECMAScript module environments where a proper `window`
+// is present, execute the factory and get jQuery.
+// For environments that do not have a `window` with a `document`
+// (such as Node.js), expose a factory as module.exports.
+// This accentuates the need for the creation of a real `window`.
+// e.g. var jQuery = require("jquery")(window);
+// See ticket trac-14549 for more info.
+var jQueryOrJQueryFactory = typeof window !== "undefined" && window.document ?
+ jQueryFactory( window, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return jQueryFactory( w );
+ };
+
+function jQueryFactory( window, noGlobal ) {
+
+// @CODE
+// build.js inserts compiled jQuery here
+
+return jQuery;
+
+}
+
+export {
+ jQueryOrJQueryFactory as jQuery,
+ jQueryOrJQueryFactory as $
+};
+
+export default jQueryOrJQueryFactory;
diff --git a/src/wrapper.js b/src/wrapper.js
index 8a3dc53e0..fa8240e1e 100644
--- a/src/wrapper.js
+++ b/src/wrapper.js
@@ -42,4 +42,5 @@
// build.js inserts compiled jQuery here
return jQuery;
+
} );