/
get_style_rule.js
43 lines (37 loc) · 1.02 KB
/
get_style_rule.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const { resolve } = require('path')
const config = require('../config')
const styleLoader = {
loader: 'style-loader'
}
const getStyleRule = (test, modules = false, preprocessors = []) => {
const use = [
{
loader: 'css-loader',
options: {
sourceMap: true,
importLoaders: 2,
modules: modules ? {
localIdentName: '[name]__[local]___[hash:base64:5]'
} : false
}
},
{
loader: 'postcss-loader',
options: {
config: { path: resolve() },
sourceMap: true
}
},
...preprocessors
]
const options = modules ? { include: /\.module\.[a-z]+$/ } : { exclude: /\.module\.[a-z]+$/ }
if (config.extract_css) {
use.unshift(MiniCssExtractPlugin.loader)
} else {
use.unshift(styleLoader)
}
// sideEffects - See https://github.com/webpack/webpack/issues/6571
return Object.assign({}, { test, use, sideEffects: !modules }, options)
}
module.exports = getStyleRule