From fc7c9915b0dee9d2777322bf9c433006730d3839 Mon Sep 17 00:00:00 2001 From: Ro Savage Date: Thu, 18 Jan 2018 02:20:57 +1100 Subject: [PATCH] Add support for CSS Modules with explicit filename (#2285) * Add css modules with [name].modules.css file convention * Add e2e for CSS Modules * Updated based on feedback * Change css modules class name to be deterministic and fix licences * Update css modules class naming convention --- .../config/webpack.config.dev.js | 44 +++++++++++--- .../config/webpack.config.prod.js | 59 ++++++++++++++++--- .../kitchensink/integration/webpack.test.js | 10 ++++ .../fixtures/kitchensink/src/App.js | 5 ++ .../features/webpack/CssModulesInclusion.js | 13 ++++ .../webpack/CssModulesInclusion.test.js | 17 ++++++ .../features/webpack/assets/style.module.css | 4 ++ packages/react-scripts/package.json | 1 + .../scripts/utils/createJestConfig.js | 6 +- packages/react-scripts/template/README.md | 46 +++++++++++++++ 10 files changed, 186 insertions(+), 19 deletions(-) create mode 100644 packages/react-scripts/fixtures/kitchensink/src/features/webpack/CssModulesInclusion.js create mode 100644 packages/react-scripts/fixtures/kitchensink/src/features/webpack/CssModulesInclusion.test.js create mode 100644 packages/react-scripts/fixtures/kitchensink/src/features/webpack/assets/style.module.css diff --git a/packages/react-scripts/config/webpack.config.dev.js b/packages/react-scripts/config/webpack.config.dev.js index c975a58c790..c8aa82cabab 100644 --- a/packages/react-scripts/config/webpack.config.dev.js +++ b/packages/react-scripts/config/webpack.config.dev.js @@ -30,6 +30,20 @@ const publicUrl = ''; // Get environment variables to inject into our app. const env = getClientEnvironment(publicUrl); +// Options for PostCSS as we reference these options twice +// Adds vendor prefixing to support IE9 and above +const postCSSLoaderOptions = { + // Necessary for external CSS imports to work + // https://github.com/facebookincubator/create-react-app/issues/2677 + ident: 'postcss', + plugins: () => [ + require('postcss-flexbugs-fixes'), + autoprefixer({ + flexbox: 'no-2009', + }), + ], +}; + // This is the development configuration. // It is focused on developer experience and fast rebuilds. // The production configuration is different and lives in a separate file. @@ -209,8 +223,10 @@ module.exports = { // "style" loader turns CSS into JS modules that inject