UNPKG

@jenssimon/webpack-config-sfcc

Version:

A shareable Webpack configuration for SFCC projects

47 lines 1.92 kB
import webpack from 'webpack'; import CaseSensitivePathsPlugin from 'case-sensitive-paths-webpack-plugin'; import CircularDependencyPlugin from 'circular-dependency-plugin'; import MiniCssExtractPlugin from 'mini-css-extract-plugin'; import ESLintPlugin from 'eslint-webpack-plugin'; import RemoveEmptyScriptsPlugin from 'webpack-remove-empty-scripts'; import { FILE_EXTENSIONS } from '../constants.js'; const { HotModuleReplacementPlugin } = webpack; /** * The plugins configuration. (see https://webpack.js.org/configuration/plugins/) */ const plugins = (cartridge, { /* cssEntryName, */ additionalPlugins, devServer, allowCircularDependendies, }) => [ // check case sensitive paths new CaseSensitivePathsPlugin(), // check for circular dependencies new CircularDependencyPlugin({ exclude: /node_modules/, // exclude detection of files based on a RegExp failOnError: !allowCircularDependendies, // add errors to webpack instead of warnings cwd: process.cwd(), // set the current working directory for displaying module paths }), // Extract CSS files from JS bundle new MiniCssExtractPlugin({ filename: (pathData) => { const returnValue = '../css/[name].css'; const cssPostfix = '-css'; return pathData.chunk?.name?.endsWith(cssPostfix) ? returnValue.replace('[name]', pathData.chunk.name.slice(0, -cssPostfix.length)) : returnValue; }, // chunkFilename: '../css/[name].css', }), new RemoveEmptyScriptsPlugin({}), // Use Webpack to lint files new ESLintPlugin({ extensions: FILE_EXTENSIONS, fix: true, lintDirtyModulesOnly: true, }), ...additionalPlugins, // HMR support for dev server ...devServer ? [ new HotModuleReplacementPlugin(), ] : [], ]; export default plugins; //# sourceMappingURL=plugins.js.map