Skip to content

Commit 87ab7f9

Browse files
committed
Separate out style loader into css and sass loader for easier configuration
Make them css and sass loader Update changelog Don't mutate original object but make a copy
1 parent 386fd85 commit 87ab7f9

File tree

4 files changed

+35
-8
lines changed

4 files changed

+35
-8
lines changed

CHANGELOG.md

+14
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,20 @@ environment.resolvedModules.set('vendor', 'vendor')
5050

5151
- Enable sourcemaps in `style` and `css` loader
5252

53+
- Separate `css` and `sass` loader for easier configuration. `style` loader is now
54+
`css` loader, which resolves `.css` files and `sass` loader resolves `.scss` and `.sass`
55+
files.
56+
57+
```js
58+
// Enable css modules with sass loader
59+
const sassLoader = environment.loaders.get('sass')
60+
const cssLoader = sassLoader.use.find(loader => loader.loader === 'css-loader')
61+
62+
cssLoader.options = Object.assign(cssLoader.options, {
63+
modules: true,
64+
localIdentName: '[path][name]__[local]--[hash:base64:5]'
65+
})
66+
```
5367

5468
### Added (Gem)
5569

package/rules/style.js renamed to package/rules/css.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,19 @@ const extractOptions = {
2121
use: [
2222
{ loader: 'css-loader', options: { minimize: isProduction, sourceMap: true, importLoaders: 3 } },
2323
{ loader: 'postcss-loader', options: { sourceMap: true, config: { path: postcssConfigPath } } },
24-
{ loader: 'resolve-url-loader', options: { attempts: 1 } },
25-
{ loader: 'sass-loader', options: { sourceMap: true } }
24+
{ loader: 'resolve-url-loader', options: { attempts: 1 } }
2625
]
2726
}
2827

2928
// For production extract styles to a separate bundle
3029
const extractCSSLoader = {
31-
test: /\.(scss|sass|css)$/i,
30+
test: /\.(css)$/i,
3231
use: ExtractTextPlugin.extract(extractOptions)
3332
}
3433

3534
// For hot-reloading use regular loaders
3635
const inlineCSSLoader = {
37-
test: /\.(scss|sass|css)$/i,
36+
test: /\.(css)$/i,
3837
use: [styleLoader].concat(extractOptions.use)
3938
}
4039

package/rules/index.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ const coffee = require('./coffee')
33
const elm = require('./elm')
44
const erb = require('./erb')
55
const file = require('./file')
6-
const style = require('./style')
6+
const css = require('./css')
7+
const sass = require('./sass')
78
const typescript = require('./typescript')
89
const vue = require('./vue')
910

@@ -12,8 +13,9 @@ module.exports = {
1213
coffee,
1314
elm,
1415
erb,
15-
file,
16-
style,
16+
css,
17+
sass,
1718
typescript,
18-
vue
19+
vue,
20+
file
1921
}

package/rules/sass.js

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const cssLoader = require('./css')
2+
const deepMerge = require('../utils/deep_merge')
3+
4+
// Duplicate and remove css loader object reference
5+
let sassLoader = JSON.parse(JSON.stringify(cssLoader))
6+
7+
sassLoader = deepMerge(sassLoader, {
8+
test: /\.(scss|sass)$/i,
9+
use: [{ loader: 'sass-loader', options: { sourceMap: true } }]
10+
})
11+
12+
module.exports = sassLoader

0 commit comments

Comments
 (0)