diff --git a/src/modernizr.js b/src/modernizr.js new file mode 100644 index 000000000..faa03c03c --- /dev/null +++ b/src/modernizr.js @@ -0,0 +1,6 @@ +// Include modernizr for a modernizr bundle. +// You might want to disable it for your project by setting: +// window.__patternslib_disable_modernizr = true; +if (!window.__patternslib_disable_modernizr) { + import("modernizr"); +} diff --git a/src/patterns.js b/src/patterns.js index 32261af9a..3d35f7ee4 100644 --- a/src/patterns.js +++ b/src/patterns.js @@ -74,12 +74,4 @@ import "@patternslib/pat-upload"; // Set to ``true`` to include core styles via JavaScript //window.__patternslib_import_styles = false; -// Include modernizr per default. -// Most of our styles depend on it. -// You might want to disable it for your project by setting: -// window.__patternslib_disable_modernizr = true; -if (!window.__patternslib_disable_modernizr) { - import("modernizr"); -} - registry.init(); diff --git a/webpack/file_merge_webpack_plugin.js b/webpack/file_merge_webpack_plugin.js new file mode 100644 index 000000000..e6a1e5e42 --- /dev/null +++ b/webpack/file_merge_webpack_plugin.js @@ -0,0 +1,45 @@ +// Merge bundles into a single file +// From: https://stackoverflow.com/a/65882720/1337474 +const fs = require("fs"); + +class FileMergeWebpackPlugin { + constructor({ files, destination, removeSourceFiles }) { + this.files = files; + this.destination = destination; + this.removeSourceFiles = removeSourceFiles; + } + + apply(compiler) { + compiler.hooks.afterEmit.tap("FileMergeWebpackPlugin", () => { + console.log(""); + console.log(""); + console.log(""); + console.log("HOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO HHHHHHHHH"); + console.log(""); + console.log(""); + console.log(""); + + return; + const files = this.files + .filter((file) => fs.existsSync(file)) + .map((file) => fs.readFileSync(file)); + + for (const file of this.files) { + console.log(file); + console.log(fs.existsSync(file)); + } + + console.log(files); + + fs.writeFileSync(this.destination, files.join("\n\n\n\n"), { + encoding: "UTF-8", + }); + + if (this.removeSourceFiles) { + this.files.forEach((file) => fs.unlinkSync(file)); + } + }); + } +} + +module.exports = FileMergeWebpackPlugin; diff --git a/webpack/webpack.config.js b/webpack/webpack.config.js index aecf95495..9a2465412 100644 --- a/webpack/webpack.config.js +++ b/webpack/webpack.config.js @@ -5,11 +5,13 @@ const mf_config = require("@patternslib/dev/webpack/webpack.mf"); const package_json = require("../package.json"); const path = require("path"); const webpack_config = require("@patternslib/dev/webpack/webpack.config").config; +const FileMergeWebpackPlugin = require("./file_merge_webpack_plugin"); module.exports = () => { let config = { entry: { - "bundle.min": path.resolve(__dirname, "../src/index.js"), + "modernizr.min": path.resolve(__dirname, "../src/modernizr.js"), + "patternslib.min": path.resolve(__dirname, "../src/index.js"), }, }; @@ -49,6 +51,17 @@ module.exports = () => { }) ); + // Merge bundles + config.plugins.push( + new FileMergeWebpackPlugin({ + destination: path.resolve(__dirname, "../dist/bundle.min.js"), + removeSourceFiles: true, + files: Object.keys(config.entry).map((it) => { + return path.resolve(__dirname, `../dist/${it}.js`); + }), + }) + ); + // BBB polyfills not used anymore. // TODO: Remove for next major version. // Polyfills