diff --git a/.modernizrrc.js b/.modernizrrc.js index c6b4331bd..f94dd21c9 100644 --- a/.modernizrrc.js +++ b/.modernizrrc.js @@ -1,167 +1,99 @@ module.exports = { - "classPrefix": "", - "options": [ - "addTest", - "atRule", - "domPrefixes", - "hasEvent", - "html5shiv", - "html5printshiv", - "load", - "mq", - "prefixed", - "prefixes", - "prefixedCSS", - "setClasses", - "testAllProps", - "testProp", - "testStyles" - ], - "feature-detects": [ - "a/download", - "applicationcache", - "blob", - "canvas", - "canvas/blending", - "canvas/todataurl", - "canvas/winding", - "canvastext", - "contenteditable", - "contextmenu", - "cookies", - "cors", - "custom-elements", - "css/all", - "css/animations", - "css/appearance", - "css/backdropfilter", - "css/backgroundblendmode", - "css/backgroundcliptext", - "css/backgroundposition-shorthand", - "css/backgroundposition-xy", - "css/backgroundrepeat", - "css/backgroundsize", - "css/backgroundsizecover", - "css/borderimage", - "css/borderradius", - "css/boxshadow", - "css/boxsizing", - "css/calc", - "css/checked", - "css/chunit", - "css/columns", - "css/cssgrid", - "css/cubicbezierrange", - "css/displayrunin", - "css/displaytable", - "css/ellipsis", - "css/escape", - "css/exunit", - "css/filters", - "css/flexbox", - "css/flexboxlegacy", - "css/flexboxtweener", - "css/flexwrap", - "css/fontface", - "css/generatedcontent", - "css/gradients", - "css/hairline", - "css/hsla", - "css/invalid", - "css/lastchild", - "css/mask", - "css/mediaqueries", - "css/multiplebgs", - "css/nthchild", - "css/objectfit", - "css/opacity", - "css/overflow-scrolling", - "css/pointerevents", - "css/positionsticky", - "css/pseudoanimations", - "css/pseudotransitions", - "css/reflections", - "css/regions", - "css/remunit", - "css/resize", - "css/rgba", - "css/scrollbars", - "css/scrollsnappoints", - "css/shapes", - "css/siblinggeneral", - "css/subpixelfont", - "css/supports", - "css/target", - "css/textalignlast", - "css/textshadow", - "css/transforms", - "css/transformslevel2", - "css/transforms3d", - "css/transformstylepreserve3d", - "css/transitions", - "css/userselect", - "css/valid", - "css/vhunit", - "css/vmaxunit", - "css/vminunit", - "css/vwunit", - "css/will-change", - "css/wrapflow", - "dom/classlist", - "dom/createElement-attrs", - "dom/dataset", - "dom/documentfragment", - "dom/hidden", - "dom/microdata", - "dom/mutationObserver", - "dom/passiveeventlisteners", - "event/deviceorientation-motion", - "event/oninput", - "eventlistener", - "exif-orientation", - "forms/capture", - "forms/fileinput", - "forms/fileinputdirectory", - "forms/formattribute", - "forms/placeholder", - "forms/requestautocomplete", - "forms/validation", - "inputtypes", - "fullscreen-api", - "hashchange", - "hiddenscroll", - "history", - "htmlimports", - "iframe/sandbox", - "iframe/seamless", - "iframe/srcdoc", - "json", - "mediaquery/hovermq", - "mediaquery/pointermq", - "notification", - "pagevisibility-api", - "performance", - "postmessage", - "proximity", - "queryselector", - "requestanimationframe", - "storage/localstorage", - "storage/sessionstorage", - "storage/websqldatabase", - "touchevents", - "unicode", - "unicode-range", - "url/bloburls", - "url/data-uri", - "url/parser", - "url/urlsearchparams", - "userdata", - "vibration", - "video", - "video/autoplay", - "video/crossorigin", - "video/loop", - "video/preload", - "xdomainrequest" - ] + "classPrefix": "", + "enableClasses": true, + "enableJSClass": true, + "options": ["setClasses"], + "feature-detects": [ + "a/download", + "css/all", + "css/animations", + "css/appearance", + "css/backdropfilter", + "css/backgroundblendmode", + "css/backgroundcliptext", + "css/backgroundposition-shorthand", + "css/backgroundposition-xy", + "css/backgroundrepeat", + "css/backgroundsize", + "css/backgroundsizecover", + "css/borderimage", + "css/borderradius", + "css/boxshadow", + "css/boxsizing", + "css/calc", + "css/checked", + "css/chunit", + "css/columns", + "css/cssgrid", + "css/cubicbezierrange", + "css/displayrunin", + "css/displaytable", + "css/ellipsis", + "css/escape", + "css/exunit", + "css/filters", + "css/flexbox", + "css/flexboxlegacy", + "css/flexboxtweener", + "css/flexwrap", + "css/fontface", + "css/generatedcontent", + "css/gradients", + "css/hairline", + "css/hsla", + "css/invalid", + "css/lastchild", + "css/mask", + "css/mediaqueries", + "css/multiplebgs", + "css/nthchild", + "css/objectfit", + "css/opacity", + "css/overflow-scrolling", + "css/pointerevents", + "css/positionsticky", + "css/pseudoanimations", + "css/pseudotransitions", + "css/reflections", + "css/regions", + "css/remunit", + "css/resize", + "css/rgba", + "css/scrollbars", + "css/scrollsnappoints", + "css/shapes", + "css/siblinggeneral", + "css/subpixelfont", + "css/supports", + "css/target", + "css/textalignlast", + "css/textshadow", + "css/transforms", + "css/transformslevel2", + "css/transforms3d", + "css/transformstylepreserve3d", + "css/transitions", + "css/userselect", + "css/valid", + "css/vhunit", + "css/vmaxunit", + "css/vminunit", + "css/vwunit", + "css/will-change", + "css/wrapflow", + "event/deviceorientation-motion", + "exif-orientation", + "forms/capture", + "forms/fileinput", + "forms/validation", + "inputtypes", + "fullscreen-api", + "hiddenscroll", + "mediaquery/hovermq", + "mediaquery/pointermq", + "touchevents", + "vibration", + "video/autoplay", + "video/loop", + ], }; diff --git a/index.html b/index.html index d479fe384..954ad7cc6 100644 --- a/index.html +++ b/index.html @@ -1,9 +1,10 @@ - +
Test paragraph
- 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/webpack.config.js b/webpack/webpack.config.js index aecf95495..0e6d209e6 100644 --- a/webpack/webpack.config.js +++ b/webpack/webpack.config.js @@ -5,6 +5,8 @@ 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 modernizr_config = require("../.modernizrrc.js"); +const modernizr = require("modernizr"); module.exports = () => { let config = { @@ -20,15 +22,6 @@ module.exports = () => { config.output.path = path.resolve(__dirname, "../dist/"); - // Modernizr - config.module.rules.push({ - test: /\.modernizrrc\.js$/, - loader: "webpack-modernizr-loader", - }); - config.resolve.alias = { - modernizr$: path.resolve(__dirname, "../.modernizrrc.js"), - }; - // Module federation config.plugins.push( mf_config({ @@ -49,14 +42,41 @@ module.exports = () => { }) ); - // BBB polyfills not used anymore. - // TODO: Remove for next major version. - // Polyfills + // Copy static files config.plugins.push( - // Copy polyfills loader to the output path. new CopyPlugin({ patterns: [ - { from: path.resolve(__dirname, "../src/polyfills-loader.js"), }, // prettier-ignore + // Copy polyfills loader to the output path. + // TODO: Polyfills not used anymore, remove for next major version. + { from: path.resolve(__dirname, "../src/polyfills-loader.js") }, + + // Build and copy Modernizr. + // We're abusing the CopyPlugin transform method here to build + // a Modernizr bundle using the modernizr config. The input + // file does not matter and could be anything - we're using the + // modernizr config itself. + // Why building modernizr here and not in the Makefile? + // Because we want webpack-dev-server also to serve it. + { + from: path.resolve(__dirname, "../.modernizrrc.js"), + to: "[path]modernizr.min.js", + transform: { + transformer: () => { + return new Promise((resolve) => { + modernizr.build( + { + ...modernizr_config, + minify: process.env.NODE_ENV === "production", + }, + (result) => { + resolve(result); + } + ); + }); + }, + cache: true, + }, + }, ], }) ); diff --git a/yarn.lock b/yarn.lock index 0075feb46..b18441ee5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2899,11 +2899,6 @@ before-after-hook@^2.2.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -3989,11 +3984,6 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -6170,13 +6160,6 @@ json-stringify-safe@^5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - json5@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.2.tgz#64471c5bdcc564c18f7c1d4df2e2297f2457c5ab" @@ -6285,15 +6268,6 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^1.0.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" - integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -6629,7 +6603,7 @@ mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -modernizr@^3.7.1: +modernizr@^3.12.0: version "3.12.0" resolved "https://registry.yarnpkg.com/modernizr/-/modernizr-3.12.0.tgz#38b1aa96eea48d90fe433f2803a8246acd2fefa9" integrity sha512-i5f5xfnxMOb3cePoBpwk4bWjVAyIB3hgm7QrDvZx/R7zUUS8PO9zlyQF7vJKn8kCVxEvL0nRWeZ0PPqVbY31sw== @@ -9100,14 +9074,6 @@ webpack-merge@^5.7.3: clone-deep "^4.0.1" wildcard "^2.0.0" -webpack-modernizr-loader@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webpack-modernizr-loader/-/webpack-modernizr-loader-5.0.0.tgz#6a7c07d3fac4b6e02964ee3be61819cf9ab811cc" - integrity sha512-D+FIZ03QtWNV536+cGp046qbJIcxPYEF0kGqP6YrM8Y1g6PqzXGdx8VYnK7VkfRuBdtqLL5rCerWYk1ncOSjJQ== - dependencies: - loader-utils "^1.0.0" - modernizr "^3.7.1" - webpack-sources@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"