61 lines
1.5 KiB
JavaScript
61 lines
1.5 KiB
JavaScript
module.exports = function fileRules({ cssSandbox = false, chunk='' } = {}) {
|
|
|
|
const postcssLoader = cssSandbox ? {
|
|
loader: 'postcss-loader',
|
|
options: {
|
|
postcssOptions: {
|
|
plugins: [
|
|
require('postcss-prefix-selector')({
|
|
prefix: '.' + chunk.split('/').join('_') , // 需要动态设置
|
|
}),
|
|
]
|
|
},
|
|
}
|
|
}: 'postcss-loader';
|
|
|
|
const rules = [
|
|
{
|
|
test: /\.js[x]?$/,
|
|
exclude: /node_modules/,
|
|
use: [
|
|
{
|
|
loader: 'babel-loader'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
test: /\.css$/,
|
|
// use: ExtractTextPlugin.extract({
|
|
use: [
|
|
'style-loader',
|
|
'css-loader',
|
|
postcssLoader
|
|
]
|
|
// fallback: 'style-loader'
|
|
// })
|
|
},
|
|
{
|
|
test: /\.less$/,
|
|
// use: ExtractTextPlugin.extract({
|
|
use: [
|
|
'style-loader',
|
|
'css-loader',
|
|
postcssLoader,
|
|
'less-loader'
|
|
]
|
|
// fallback: 'style-loader'
|
|
// })
|
|
},
|
|
{
|
|
test: /\.(png|jpg|jpeg|gif|eot|ttf|woff|woff2|svg|svgz|ico|xlsx)(\?.+)?$/,
|
|
exclude: /favicon\.png$/,
|
|
use: [
|
|
{
|
|
loader: 'url-loader'
|
|
}
|
|
]
|
|
}
|
|
];
|
|
|
|
return rules;
|
|
}; |