siegel
Version:
Web application development ecosystem
66 lines (65 loc) • 2.34 kB
JavaScript
import { createRequire } from 'module';
import webpack from 'webpack';
import devMiddleware from 'webpack-dev-middleware';
import hotMiddleware from 'webpack-hot-middleware';
import HTMLPlugin from 'html-webpack-plugin';
import fileCopyPlugin from 'copy-webpack-plugin';
import compressionPlugin from 'compression-webpack-plugin';
import miniCssExtract from 'mini-css-extract-plugin';
import reactRefresh from '@pmmmwh/react-refresh-webpack-plugin';
import eslint from 'eslint-webpack-plugin';
import postCssAutoprefix from 'autoprefixer';
import TerserWebpackPlugin from 'terser-webpack-plugin';
import serviceWorkerPlugin from './plugins/plugin_sw.js';
import postCssSVG2Font from './module_rules/postcss_svg2icon_plugin/index.js';
const { resolve } = createRequire(import.meta.url);
const DEPENDENCIES = {
webpack, devMiddleware, hotMiddleware,
plugins: {
swcMinify: TerserWebpackPlugin.swcMinify,
HTMLPlugin, fileCopyPlugin, compressionPlugin, reactRefresh, eslint,
serviceWorkerPlugin, miniCssExtract, TerserWebpackPlugin
},
loaders: {
postCssAutoprefix, postCssSVG2Font,
swcLoader: resolve('swc-loader'),
workerLoader: resolve('worker-loader'),
styleLoader: resolve('style-loader'),
cssLoader: resolve('css-loader'),
postCssLoader: resolve('postcss-loader'),
sassLoader: resolve('sass-loader'),
sassResourcesLoader: resolve('sass-resources-loader')
}
};
const COMMONS = {
ESLintExtensions: ['.js', '.jsx', '.ts', '.tsx']
};
const pluginsKeysMap = {
compression: 'compression',
copy: 'copy',
cssExtract: 'cssExtract',
sw: 'sw',
cssOptimize: 'cssOptimize',
hot: 'hot',
html: 'html',
reactRefresh: 'reactRefresh',
clean: 'clean',
eslint: 'eslint'
};
const loadersKeyMap = {
swcLoader: 'swcLoader',
workers: 'workers',
styleLoader: 'styleLoader',
cssFinal: 'cssFinal',
cssLoader: 'cssLoader',
postCssLoader: 'postCssLoader',
sassLoader: 'sassLoader',
sassResources: 'sassResources'
};
const webpackModuleRulesRegExp = {
scripts: '\\.[tj]sx?$',
worker: '__worker\\.[tj]s$',
styles: '\\.(c|sc|sa)ss$',
files: '\\.(avif|webp|jpe?g|png|svg|woff2?)$'
};
export { loadersKeyMap, pluginsKeysMap, webpackModuleRulesRegExp, DEPENDENCIES, COMMONS };