From 1bdb0aa1ac30d2f9bf57ae9b6ad0c2761d83ebf5 Mon Sep 17 00:00:00 2001 From: Raveena Kothapally Date: Mon, 13 Jan 2020 09:44:36 -0800 Subject: [PATCH 1/3] Ebay Skin Integration --- README.md | 72 ++++++++++++++++++++++++++++++++++++++++ config/webpack.config.js | 12 +++++++ package.json | 6 ++++ src/App.js | 2 ++ yarn.lock | 60 ++++++++++++++++++++++++++++++--- 5 files changed, 148 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e69de29..0bf20cb 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,72 @@ +# Installation + +You need to install the following packages in order to use ebay skin: + +``` +yarn add @ebay/skin @ebay/browserslist-config +``` + +## Bundling + +We will be loading + +### Webpack configuration + +yarn add -D less less-loader # Optionally install arc-webpack if you need + +Then, in your webpack configuration: + +``` +module.exports = { + module: { + rules: [ + { + test: /\.less$/, + loader: 'less-loader', // compiles Less to CSS + }, + ], + }, +}; +``` + +Optionally, if you also want arc-webpack check https://github.com/eBay/arc/tree/master/packages/arc-webpack + +## Usage + +``` +import "@ebay/skin/button.less"; + +function App() { + return ( +
+ +
+ ); +} +``` + +## Example + +If you are using create-react-app then you need to eject it (Unless you want to use customize-cra) and then update the webpack config like: + +``` +const lessRegex = /\.less$/; +... +... + + module: { + rules: { + ... + { + test: lessRegex, + use: getStyleLoaders( + { + importLoaders: 2, + sourceMap: isEnvProduction && shouldUseSourceMap + }, + "less-loader" + ), + sideEffects: true + }, + ... +``` diff --git a/config/webpack.config.js b/config/webpack.config.js index 84c0974..a1b1776 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -46,6 +46,7 @@ const useTypeScript = fs.existsSync(paths.appTsConfig); const cssRegex = /\.css$/; const cssModuleRegex = /\.module\.css$/; const sassRegex = /\.(scss|sass)$/; +const lessRegex = /\.less$/; const sassModuleRegex = /\.module\.(scss|sass)$/; // This is the production and development configuration. @@ -453,6 +454,17 @@ module.exports = function(webpackEnv) { } }) }, + { + test: lessRegex, + use: getStyleLoaders( + { + importLoaders: 2, + sourceMap: isEnvProduction && shouldUseSourceMap + }, + "less-loader" + ), + sideEffects: true + }, // Opt-in support for SASS (using .scss or .sass extensions). // By default we support SASS Modules with the // extensions .module.scss or .module.sass diff --git a/package.json b/package.json index a9edf53..9d032bb 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,8 @@ "private": true, "dependencies": { "@babel/core": "7.7.4", + "@ebay/browserslist-config": "^1.0.1", + "@ebay/skin": "^9.5.4", "@svgr/webpack": "4.3.3", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", @@ -135,5 +137,9 @@ "presets": [ "react-app" ] + }, + "devDependencies": { + "less": "^3.10.3", + "less-loader": "^5.0.0" } } diff --git a/src/App.js b/src/App.js index 14e3e1b..b07b53c 100644 --- a/src/App.js +++ b/src/App.js @@ -1,9 +1,11 @@ import React from "react"; +import "@ebay/skin/button.less"; function App() { return (

Hello World

+
); } diff --git a/yarn.lock b/yarn.lock index 590c90f..a1a45b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1014,6 +1014,16 @@ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== +"@ebay/browserslist-config@^1.0.1": + version "1.0.1" + resolved "https://registry.npm.es.ebay.com/@/@ebay/browserslist-config/_attachments/browserslist-config-1.0.1.tgz#deccafb04101fa52507b8f2204161c8ed5e70375" + integrity sha512-5i4XOsKwoCYomZ9cF7H5OBroeHoYUriylg55mJwTARMbQVv21RnYKF/Bwi86ZlHz4S6YepxlaQorsxR6T2xv6w== + +"@ebay/skin@^9.5.4": + version "9.5.4" + resolved "https://registry.npm.es.ebay.com/@/@ebay/skin/_attachments/skin-9.5.4.tgz#d6a052bf8f2547f49b86fcce226b45bb3074c17c" + integrity sha512-eLQneE+NJ7sSsUUkqsLIesapfDe4BCjCjy/bfvA8v+QUEsbHD5nMCnVox526IJMSd+hn2jDvAveS8ae7BzykQw== + "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -1959,7 +1969,7 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@~2.0.6: +asap@~2.0.3, asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -2770,6 +2780,11 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone@^2.1.1, clone@^2.1.2: + version "2.1.2" + resolved "https://registry.npm.es.ebay.com/c/clone/_attachments/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3747,7 +3762,7 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== -errno@^0.1.3, errno@~0.1.7: +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== @@ -5041,6 +5056,11 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.npm.es.ebay.com/i/image-size/_attachments/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + immer@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" @@ -6191,6 +6211,31 @@ left-pad@^1.3.0: resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== +less-loader@^5.0.0: + version "5.0.0" + resolved "https://registry.npm.es.ebay.com/l/less-loader/_attachments/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" + integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== + dependencies: + clone "^2.1.1" + loader-utils "^1.1.0" + pify "^4.0.1" + +less@^3.10.3: + version "3.10.3" + resolved "https://registry.npm.es.ebay.com/l/less/_attachments/less-3.10.3.tgz#417a0975d5eeecc52cff4bcfa3c09d35781e6792" + integrity sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow== + dependencies: + clone "^2.1.2" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.4.1" + mkdirp "^0.5.0" + promise "^7.1.1" + request "^2.83.0" + source-map "~0.6.0" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -6506,7 +6551,7 @@ mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.42.0" -mime@1.6.0: +mime@1.6.0, mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -8258,6 +8303,13 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.npm.es.ebay.com/p/promise/_attachments/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + promise@^8.0.3: version "8.0.3" resolved "https://registry.npm.es.ebay.com/p/promise/_attachments/promise-8.0.3.tgz#f592e099c6cddc000d538ee7283bb190452b0bf6" @@ -8725,7 +8777,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.87.0, request@^2.88.0: +request@^2.83.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== From e8a306ea53aa33877dedc0f34748b3ddcc618668 Mon Sep 17 00:00:00 2001 From: Raveena Kothapally Date: Mon, 13 Jan 2020 10:05:09 -0800 Subject: [PATCH 2/3] Arc integration --- config/webpack.config.js | 4 +- package.json | 4 ++ yarn.lock | 87 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+), 1 deletion(-) diff --git a/config/webpack.config.js b/config/webpack.config.js index a1b1776..95320f3 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -26,6 +26,7 @@ const ForkTsCheckerWebpackPlugin = require("react-dev-utils/ForkTsCheckerWebpack const typescriptFormatter = require("react-dev-utils/typescriptFormatter"); const postcssNormalize = require("postcss-normalize"); +const AdaptivePlugin = require("arc-webpack"); const appPackageJson = require(paths.appPackageJson); @@ -663,7 +664,8 @@ module.exports = function(webpackEnv) { silent: true, // The formatter is invoked directly in WebpackDevServerUtils during development formatter: isEnvProduction ? typescriptFormatter : undefined - }) + }), + new AdaptivePlugin({ flags: { "skin-ds6": true } }) ].filter(Boolean), // Some libraries import Node modules but don't use them in the browser. // Tell Webpack to provide empty mocks for them so importing them works. diff --git a/package.json b/package.json index 9d032bb..eb03f23 100644 --- a/package.json +++ b/package.json @@ -139,6 +139,10 @@ ] }, "devDependencies": { + "arc-resolver": "^2.0.0", + "arc-server": "^2.0.0", + "arc-webpack": "^2.0.0", + "async_hooks": "^1.0.0", "less": "^3.10.3", "less-loader": "^5.0.0" } diff --git a/yarn.lock b/yarn.lock index a1a45b2..dbd7573 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1881,6 +1881,41 @@ aproba@^1.0.3, aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +arc-flag-parser@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.es.ebay.com/a/arc-flag-parser/_attachments/arc-flag-parser-2.0.0.tgz#2937287c62ae928a612f3f7d7ef89a2363022ca8" + integrity sha512-9TLs6K+2sojaQqfC8+zoQyILN7dBywecKR8S0Lx+taPMVlCo//k1SpRSabR52DkrkxIvlPBQxyZkTXvYL0hr3A== + +arc-fs@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.es.ebay.com/a/arc-fs/_attachments/arc-fs-2.0.0.tgz#b08a5eab7ff3906111834abfc27276ab487fab1a" + integrity sha512-NcU9Aw2GyjbMXWyBg9Naj9XBUDtCElXJxgOc32TGux3mn8W+vyg/becjCzAqNxyKv9D8ltnIU5tQkf2gWeIsbQ== + dependencies: + arc-resolver "^2.0.0" + +arc-resolver@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.es.ebay.com/a/arc-resolver/_attachments/arc-resolver-2.0.0.tgz#3e648218ccce88809d4d76b4620824162c7f3c1f" + integrity sha512-nB+TBwnUK4tSg00GP8mekovIESnZoz0PKOyhMMvTxeqVr63CQfx8pysv1eW4PW/8oFbUQmFmLUug9dTYAhkZ6Q== + dependencies: + arc-flag-parser "^2.0.0" + cachedfs "^0.3.3" + +arc-server@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.es.ebay.com/a/arc-server/_attachments/arc-server-2.0.0.tgz#685dac2663a475c488dbd7176e34cf262be0411b" + integrity sha512-lQT/aSVIP2ySs3AHHxnGGVN0Hlkl0ONcIJ+SryDx08yXs+OiJSEYNCzeNSE8a7y0kswcAn0ftYbCLHZxwGLC5g== + dependencies: + arc-fs "^2.0.0" + arc-resolver "^2.0.0" + +arc-webpack@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.es.ebay.com/a/arc-webpack/_attachments/arc-webpack-2.0.0.tgz#074dbd3c2411ec74fc10ab30f41e4c0e8c99c1d2" + integrity sha512-RdXQjbfn9pNMkrNeDumbrF0EZ3Dyj8gRPdMQ0FTZtP+IY/h/9EXcoe90r6/uRCd0wBo0Bi+DbOGU2gPJ3Gwqlg== + dependencies: + arc-fs "^2.0.0" + are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -2042,6 +2077,11 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +async_hooks@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.es.ebay.com/a/async_hooks/_attachments/async_hooks-1.0.0.tgz#815f5e861fe73f64eb29fd942c32e95c8064052f" + integrity sha1-gV9ehh/nP2TrKf2ULDLpXIBkBS8= + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -2473,6 +2513,11 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +bufferedstream@~1.6.0: + version "1.6.0" + resolved "https://registry.npm.es.ebay.com/b/bufferedstream/_attachments/bufferedstream-1.6.0.tgz#1b56be67132162d9f468bc886dd2c9160ddf2882" + integrity sha1-G1a+ZxMhYtn0aLyIbdLJFg3fKII= + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -2548,6 +2593,18 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cachedfs@^0.3.3: + version "0.3.3" + resolved "https://registry.npm.es.ebay.com/c/cachedfs/_attachments/cachedfs-0.3.3.tgz#012ab513475ff77ede1c6d59d8db84bc46b66aba" + integrity sha1-ASq1E0df937eHG1Z2NuEvEa2aro= + dependencies: + bufferedstream "~1.6.0" + lru-cache "=2.3.1" + memoizeasync "=0.4.2" + memoizesync "=0.4.2" + passerror "=0.0.2" + underscore "=1.5.2" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -6381,6 +6438,11 @@ lower-case@^1.1.1: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +lru-cache@=2.3.1: + version "2.3.1" + resolved "https://registry.npm.es.ebay.com/l/lru-cache/_attachments/lru-cache-2.3.1.tgz#b3adf6b3d856e954e2c390e6cef22081245a53d6" + integrity sha1-s632s9hW6VTiw5DmzvIggSRaU9Y= + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -6462,6 +6524,21 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" +memoizeasync@=0.4.2: + version "0.4.2" + resolved "https://registry.npm.es.ebay.com/m/memoizeasync/_attachments/memoizeasync-0.4.2.tgz#de0319f582796ee2a5781a94c7435f451b7f466c" + integrity sha1-3gMZ9YJ5buKleBqUx0NfRRt/Rmw= + dependencies: + lru-cache "=2.3.1" + passerror "=0.0.2" + +memoizesync@=0.4.2: + version "0.4.2" + resolved "https://registry.npm.es.ebay.com/m/memoizesync/_attachments/memoizesync-0.4.2.tgz#3f34eb3cb4b76f5f6440d91c01f25125e9462b49" + integrity sha1-PzTrPLS3b19kQNkcAfJRJelGK0k= + dependencies: + lru-cache "=2.3.1" + memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -7401,6 +7478,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +passerror@=0.0.2: + version "0.0.2" + resolved "https://registry.npm.es.ebay.com/p/passerror/_attachments/passerror-0.0.2.tgz#c43090627b78d39ece96dbc7541f73f73efd9f4a" + integrity sha1-xDCQYnt4057OltvHVB9z9z79n0o= + path-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" @@ -10005,6 +10087,11 @@ uglify-js@^3.1.4: commander "~2.20.3" source-map "~0.6.1" +underscore@=1.5.2: + version "1.5.2" + resolved "https://registry.npm.es.ebay.com/u/underscore/_attachments/underscore-1.5.2.tgz#1335c5e4f5e6d33bbb4b006ba8c86a00f556de08" + integrity sha1-EzXF5PXm0zu7SwBrqMhqAPVW3gg= + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" From 0721812356c8984e321ed93e9fac7d7456f236b2 Mon Sep 17 00:00:00 2001 From: Raveena Kothapally Date: Thu, 16 Jan 2020 00:00:30 -0800 Subject: [PATCH 3/3] ARC Webpack workaround --- config/webpack.config.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/config/webpack.config.js b/config/webpack.config.js index 95320f3..721eb80 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -83,8 +83,7 @@ module.exports = function(webpackEnv) { // common function to get style loaders const getStyleLoaders = (cssOptions, preProcessor) => { const loaders = [ - isEnvDevelopment && require.resolve("style-loader"), - isEnvProduction && { + { loader: MiniCssExtractPlugin.loader, options: shouldUseRelativeAssetPaths ? { publicPath: "../../" } : {} }, @@ -583,13 +582,12 @@ module.exports = function(webpackEnv) { // See https://github.com/facebook/create-react-app/issues/186 isEnvDevelopment && new WatchMissingNodeModulesPlugin(paths.appNodeModules), - isEnvProduction && - new MiniCssExtractPlugin({ + new MiniCssExtractPlugin({ // Options similar to the same options in webpackOptions.output // both options are optional filename: "static/css/[name].[contenthash:8].css", chunkFilename: "static/css/[name].[contenthash:8].chunk.css" - }), + }), // Generate an asset manifest file with the following content: // - "files" key: Mapping of all asset filenames to their corresponding // output file so that tools can pick it up without having to parse