@rails/webpacker
Version:
Use webpack to manage app-like JavaScript modules in Rails
46 lines (39 loc) • 1.04 kB
JavaScript
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 {
test, use, sideEffects: !modules, ...options
}
}
module.exports = getStyleRule