@zero-scripts/webpack-config
Version:
Base configuration for Webpack
83 lines • 3.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createWebpackConfiguration = void 0;
const interpolate_html_plugin_1 = __importDefault(require("@k88/interpolate-html-plugin"));
const path_1 = __importDefault(require("path"));
const terser_webpack_plugin_1 = __importDefault(require("terser-webpack-plugin"));
const webpack_1 = require("webpack");
const webpack_assets_manifest_1 = __importDefault(require("webpack-assets-manifest"));
function createWebpackConfiguration({ isDev, paths, additionalEntry, useSourceMap, moduleFileExtensions }) {
return {
mode: isDev ? 'development' : 'production',
entry: [paths.indexJs, ...additionalEntry],
devtool: isDev ? 'eval-source-map' : useSourceMap && 'source-map',
output: {
path: paths.build,
filename: isDev ? 'js/[name].js' : 'js/[name].[contenthash:8].js',
publicPath: paths.publicPath,
chunkFilename: isDev
? 'js/[name].chunk.js'
: 'js/[name].[contenthash:8].chunk.js',
devtoolModuleFilenameTemplate: !isDev
? info => path_1.default
.relative(paths.src, info.absoluteResourcePath)
.replace(/\\/g, '/')
: info => path_1.default.resolve(info.absoluteResourcePath).replace(/\\/g, '/')
},
bail: !isDev,
optimization: {
minimize: !isDev,
minimizer: [
new terser_webpack_plugin_1.default({
parallel: true,
cache: true,
sourceMap: useSourceMap
})
],
splitChunks: {
chunks: 'all'
},
runtimeChunk: true
},
resolve: {
modules: ['node_modules'],
extensions: moduleFileExtensions
},
module: {
strictExportPresence: true,
rules: []
},
plugins: [
new webpack_1.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify(process.env.NODE_ENV)
}
}),
new webpack_assets_manifest_1.default({
output: 'asset-manifest.json'
}),
new interpolate_html_plugin_1.default({
PUBLIC_PATH: paths.publicPath.endsWith('/')
? paths.publicPath.slice(0, -1)
: paths.publicPath
})
],
node: {
module: 'empty',
dgram: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty',
child_process: 'empty'
},
stats: 'errors-only',
infrastructureLogging: {
level: 'error'
}
};
}
exports.createWebpackConfiguration = createWebpackConfiguration;
//# sourceMappingURL=createWebpackConfiguration.js.map