kk-webpack-base--config
Version:
Webpack config for kk-webpack-base
62 lines (58 loc) • 1.86 kB
JavaScript
const path = require('path');
const { config } = require('./webpack.project-config.js');
const { copyThingPattern, isDev } = require('./webpack.helpers');
const ESLintPlugin = require('eslint-webpack-plugin');
const StylelintPlugin = require('stylelint-webpack-plugin');
const BundleAnalyzerPlugin =
require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const WebpackBar = require('webpackbar');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const SpriteLoaderPlugin = require('svg-sprite-loader/plugin');
const { VueLoaderPlugin } = require('vue-loader');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const plugins = [
new WebpackBar({ profile: true }),
new CleanWebpackPlugin({
cleanOnceBeforeBuildPatterns: [
'!**/*',
'assets/**',
'*.html',
'**/*.hot-update.*',
],
}),
new CopyWebpackPlugin({
patterns: [
copyThingPattern('/img', 'assets/img'),
copyThingPattern('/files', 'assets/files'),
copyThingPattern('/fonts', 'assets/fonts'),
copyThingPattern('/publicFiles', '.'),
],
}),
new MiniCssExtractPlugin({
filename: 'assets/css/[name].css',
}),
new SpriteLoaderPlugin({
plainSprite: true,
}),
new VueLoaderPlugin(),
isDev &&
new ESLintPlugin({
baseConfig: require('./configs/eslint.config.js'),
extensions: 'js',
emitWarning: true,
files: path.resolve(process.cwd(), `${config.sourcePath}`),
}),
isDev &&
new StylelintPlugin({
files: path.join(process.cwd(), config.sourcePath, 'scss/**/*.s?(a|c)ss'),
fix: true,
config: require('./configs/stylelint.config.js'),
}),
isDev &&
new BundleAnalyzerPlugin({
analyzerPort: 'auto',
openAnalyzer: false,
}),
];
module.exports = plugins;