const { VueLoaderPlugin } = require('vue-loader');
module.exports = {
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
]
},
plugins: [
new VueLoaderPlugin(),
]
};
module.exports = {
module: {
rules: [
{
test: /\.ts$/,
loader: 'ts-loader',
exclude: /node_modules/,
options: {
appendTsSuffixTo: [/\.vue$/],
},
},
]
},
};
module.exports = {
module: {
rules: [
{
test: /index.js$/i,
use: {
loader: 'string-replace-loader',
options: {
search: 'import.meta.globEager',
replace: '[] //',
flags: 'g'
}
}
},
]
},
};
module.exports = {
module: {
rules: [
{
test: /.scss$/,
use: {
'style-loader',
{
loader: 'css-loader',
options: {
url: false
}
},
{
loader: 'sass-loader',
options: {
additionalData: ` // 会给每个文件都加入字符串中的内容
@use "@/styles/global.scss";
$--color-primary: #409EFF;
`
}
}
}
},
]
},
};
module.exports = {
module: {
rules: [
{
test: /.svg$/,
loader: 'svg-sprite-loader',
include: path.resolve(__dirname, 'src/icons'),
options: {
symbolId: (path, query) => {
const pathSplitList = path.split('\\')
const fileDirIndex = pathSplitList.findIndex(item => item === 'icons')
const nameSplitList = pathSplitList.slice(fileDirIndex + 1)
const lastFirstIndex = nameSplitList.length -1
const firstHalf = nameSplitList.slice(0, lastFirstIndex)
const secondHalf = nameSplitList.slice(lastFirstIndex)
return `${firstHalf.join('-')}-${secondHalf[0].replace('.svg', '')}`
}
}
},
]
},
};