8
8
// @remove -on-eject-end
9
9
'use strict' ;
10
10
11
- const autoprefixer = require ( 'autoprefixer' ) ;
12
11
const path = require ( 'path' ) ;
13
12
const webpack = require ( 'webpack' ) ;
14
13
const HtmlWebpackPlugin = require ( 'html-webpack-plugin' ) ;
@@ -30,6 +29,29 @@ const publicUrl = '';
30
29
// Get environment variables to inject into our app.
31
30
const env = getClientEnvironment ( publicUrl ) ;
32
31
32
+ const postCSSLoaderOptions = {
33
+ ident : 'postcss' , // https://webpack.js.org/guides/migrating/#complex-options
34
+ plugins : loader => [
35
+ require ( 'postcss-flexbugs-fixes' ) ,
36
+ require ( 'postcss-import' ) ( { root : loader . resourcePath } ) ,
37
+ require ( 'postcss-cssnext' ) ( {
38
+ // postcss-cssnext passes `browsers` to multiple features, including autoprefixer
39
+ // https://github.com/MoOx/postcss-cssnext/blob/3.1.0/src/index.js#L29-L33
40
+ browsers : [
41
+ '>1%' ,
42
+ 'last 4 versions' ,
43
+ 'Firefox ESR' ,
44
+ 'not ie < 9' , // React doesn't support IE8 anyway
45
+ ] ,
46
+ feature : {
47
+ autoprefixer : {
48
+ flexbox : 'no-2009' ,
49
+ } ,
50
+ } ,
51
+ } ) ,
52
+ ] ,
53
+ } ;
54
+
33
55
// This is the development configuration.
34
56
// It is focused on developer experience and fast rebuilds.
35
57
// The production configuration is different and lives in a separate file.
@@ -182,7 +204,7 @@ module.exports = {
182
204
// In production, we use a plugin to extract that CSS to a file, but
183
205
// in development "style" loader enables hot editing of CSS.
184
206
{
185
- test : / \. c s s $ / ,
207
+ test : / l e g a c y \. c s s $ / ,
186
208
use : [
187
209
require . resolve ( 'style-loader' ) ,
188
210
{
@@ -193,24 +215,26 @@ module.exports = {
193
215
} ,
194
216
{
195
217
loader : require . resolve ( 'postcss-loader' ) ,
218
+ options : postCSSLoaderOptions ,
219
+ } ,
220
+ ] ,
221
+ } ,
222
+ {
223
+ test : / \. c s s $ / ,
224
+ use : [
225
+ require . resolve ( 'style-loader' ) ,
226
+ {
227
+ loader : require . resolve ( 'css-loader' ) ,
196
228
options : {
197
- // Necessary for external CSS imports to work
198
- // https://github.com/facebookincubator/create-react-app/issues/2677
199
- ident : 'postcss' ,
200
- plugins : ( ) => [
201
- require ( 'postcss-flexbugs-fixes' ) ,
202
- autoprefixer ( {
203
- browsers : [
204
- '>1%' ,
205
- 'last 4 versions' ,
206
- 'Firefox ESR' ,
207
- 'not ie < 9' , // React doesn't support IE8 anyway
208
- ] ,
209
- flexbox : 'no-2009' ,
210
- } ) ,
211
- ] ,
229
+ importLoaders : 1 ,
230
+ modules : true ,
231
+ localIdentName : '[path]__[name]___[local]' ,
212
232
} ,
213
233
} ,
234
+ {
235
+ loader : require . resolve ( 'postcss-loader' ) ,
236
+ options : postCSSLoaderOptions ,
237
+ } ,
214
238
] ,
215
239
} ,
216
240
// "file" loader makes sure those assets get served by WebpackDevServer.
0 commit comments