kopia lustrzana https://github.com/inkstitch/inkstitch
73 wiersze
1.5 KiB
JavaScript
73 wiersze
1.5 KiB
JavaScript
'use strict'
|
|
|
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
|
|
const isProd = process.env.NODE_ENV === 'production'
|
|
|
|
const plugins = []
|
|
if (isProd) {
|
|
const filename = 'css/[name].[contenthash:8].css'
|
|
|
|
plugins.push(
|
|
new MiniCssExtractPlugin({
|
|
filename,
|
|
chunkFilename: filename,
|
|
})
|
|
)
|
|
}
|
|
|
|
const genStyleRules = () => {
|
|
const cssLoader = {
|
|
loader: 'css-loader',
|
|
options: {
|
|
// how many loaders before css-loader should be applied to [@import]ed resources.
|
|
// stylePostLoader injected by vue-loader + postcss-loader
|
|
importLoaders: 1 + 1,
|
|
esModule: false, // css-loader using ES Modules as default in v4, but vue-style-loader support cjs only.
|
|
},
|
|
}
|
|
const postcssLoader = {
|
|
loader: 'postcss-loader',
|
|
options: {
|
|
postcssOptions: {
|
|
plugins: [require('autoprefixer')]
|
|
},
|
|
},
|
|
}
|
|
const extractPluginLoader = {
|
|
loader: MiniCssExtractPlugin.loader,
|
|
}
|
|
const vueStyleLoader = {
|
|
loader: 'vue-style-loader',
|
|
}
|
|
|
|
function createCSSRule(test, loader, loaderOptions) {
|
|
const loaders = [cssLoader, postcssLoader]
|
|
|
|
if (isProd) {
|
|
loaders.unshift(extractPluginLoader)
|
|
} else {
|
|
loaders.unshift(vueStyleLoader)
|
|
}
|
|
|
|
if (loader) {
|
|
loaders.push({ loader, options: loaderOptions })
|
|
}
|
|
|
|
return { test, use: loaders }
|
|
}
|
|
|
|
return [
|
|
createCSSRule(/\.css$/),
|
|
createCSSRule(/\.p(ost)?css$/),
|
|
createCSSRule(/\.scss$/, 'sass-loader')
|
|
]
|
|
}
|
|
|
|
module.exports = {
|
|
plugins,
|
|
module: {
|
|
rules: genStyleRules(),
|
|
},
|
|
}
|