@anansi/webpack-config
Version:
Production ready webpack for React
73 lines (71 loc) • 9.09 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
exports.__esModule = true;
exports.default = makeNodeConfig;
var _path = _interopRequireDefault(require("path"));
var _webpackNodeExternals = _interopRequireDefault(require("webpack-node-externals"));
var _webpackStatsPlugin = require("webpack-stats-plugin");
function makeNodeConfig(baseConfig, {
rootPath,
serverDir,
pkg,
library,
libraryInclude
}) {
const config = {
...baseConfig
};
config.target = 'node';
if (!config.optimization) {
config.optimization = {};
}
config.optimization.minimize = false;
config.optimization.splitChunks = {};
config.optimization.runtimeChunk = false;
config.optimization.concatenateModules = true;
config.optimization.removeEmptyChunks = true;
config.node = {
__dirname: true,
__filename: true
};
config.externalsPresets = {
node: true
};
const externalsFunc = (0, _webpackNodeExternals.default)({
allowlist: [/@babel\/runtime/, libraryInclude, ...(pkg || library ? [] : [/\.(svg|css)$/, /\.css!=!/])],
additionalModuleDirs: ['../../node_modules']
});
config.externals = [function ({
context,
request,
contextInfo,
getResolve
}, callback) {
// svgr + linaria have issues with require('react')
// instead we'll detect this specific case and embed it
if (request === 'react' && contextInfo.issuer.substring(contextInfo.issuer.length - 4) === '.svg') {
callback();
} else externalsFunc({
context,
request,
contextInfo,
getResolve
}, callback);
}];
config.output.path = pkg?.publishConfig?.main ?? pkg?.main ? rootPath : _path.default.join(rootPath, serverDir);
config.output.filename = pkg?.publishConfig?.main ?? pkg?.main ?? '[name].js';
config.output.chunkFilename = '[name].chunk.js';
delete config.output.globalObject;
config.output.library = {
type: 'commonjs2'
};
if (!config.output.environment) {
config.output.environment = {};
}
// node12+ supports import()
config.output.environment.dynamicImport = true;
// don't output stats for server builds as they won't need to reference manifests
config.plugins = config.plugins.filter(plugin => !(plugin instanceof _webpackStatsPlugin.StatsWriterPlugin));
return config;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3dlYnBhY2tOb2RlRXh0ZXJuYWxzIiwiX3dlYnBhY2tTdGF0c1BsdWdpbiIsIm1ha2VOb2RlQ29uZmlnIiwiYmFzZUNvbmZpZyIsInJvb3RQYXRoIiwic2VydmVyRGlyIiwicGtnIiwibGlicmFyeSIsImxpYnJhcnlJbmNsdWRlIiwiY29uZmlnIiwidGFyZ2V0Iiwib3B0aW1pemF0aW9uIiwibWluaW1pemUiLCJzcGxpdENodW5rcyIsInJ1bnRpbWVDaHVuayIsImNvbmNhdGVuYXRlTW9kdWxlcyIsInJlbW92ZUVtcHR5Q2h1bmtzIiwibm9kZSIsIl9fZGlybmFtZSIsIl9fZmlsZW5hbWUiLCJleHRlcm5hbHNQcmVzZXRzIiwiZXh0ZXJuYWxzRnVuYyIsIm5vZGVFeHRlcm5hbHMiLCJhbGxvd2xpc3QiLCJhZGRpdGlvbmFsTW9kdWxlRGlycyIsImV4dGVybmFscyIsImNvbnRleHQiLCJyZXF1ZXN0IiwiY29udGV4dEluZm8iLCJnZXRSZXNvbHZlIiwiY2FsbGJhY2siLCJpc3N1ZXIiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJvdXRwdXQiLCJwYXRoIiwicHVibGlzaENvbmZpZyIsIm1haW4iLCJqb2luIiwiZmlsZW5hbWUiLCJjaHVua0ZpbGVuYW1lIiwiZ2xvYmFsT2JqZWN0IiwidHlwZSIsImVudmlyb25tZW50IiwiZHluYW1pY0ltcG9ydCIsInBsdWdpbnMiLCJmaWx0ZXIiLCJwbHVnaW4iLCJTdGF0c1dyaXRlclBsdWdpbiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ub2RlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IG5vZGVFeHRlcm5hbHMgZnJvbSAnd2VicGFjay1ub2RlLWV4dGVybmFscyc7XG5pbXBvcnQgeyBTdGF0c1dyaXRlclBsdWdpbiB9IGZyb20gJ3dlYnBhY2stc3RhdHMtcGx1Z2luJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWFrZU5vZGVDb25maWcoXG4gIGJhc2VDb25maWcsXG4gIHsgcm9vdFBhdGgsIHNlcnZlckRpciwgcGtnLCBsaWJyYXJ5LCBsaWJyYXJ5SW5jbHVkZSB9LFxuKSB7XG4gIGNvbnN0IGNvbmZpZyA9IHsgLi4uYmFzZUNvbmZpZyB9O1xuICBjb25maWcudGFyZ2V0ID0gJ25vZGUnO1xuICBpZiAoIWNvbmZpZy5vcHRpbWl6YXRpb24pIHtcbiAgICBjb25maWcub3B0aW1pemF0aW9uID0ge307XG4gIH1cbiAgY29uZmlnLm9wdGltaXphdGlvbi5taW5pbWl6ZSA9IGZhbHNlO1xuICBjb25maWcub3B0aW1pemF0aW9uLnNwbGl0Q2h1bmtzID0ge307XG4gIGNvbmZpZy5vcHRpbWl6YXRpb24ucnVudGltZUNodW5rID0gZmFsc2U7XG4gIGNvbmZpZy5vcHRpbWl6YXRpb24uY29uY2F0ZW5hdGVNb2R1bGVzID0gdHJ1ZTtcbiAgY29uZmlnLm9wdGltaXphdGlvbi5yZW1vdmVFbXB0eUNodW5rcyA9IHRydWU7XG5cbiAgY29uZmlnLm5vZGUgPSB7XG4gICAgX19kaXJuYW1lOiB0cnVlLFxuICAgIF9fZmlsZW5hbWU6IHRydWUsXG4gIH07XG4gIGNvbmZpZy5leHRlcm5hbHNQcmVzZXRzID0geyBub2RlOiB0cnVlIH07XG4gIGNvbnN0IGV4dGVybmFsc0Z1bmMgPSBub2RlRXh0ZXJuYWxzKHtcbiAgICBhbGxvd2xpc3Q6IFtcbiAgICAgIC9AYmFiZWxcXC9ydW50aW1lLyxcbiAgICAgIGxpYnJhcnlJbmNsdWRlLFxuICAgICAgLi4uKHBrZyB8fCBsaWJyYXJ5ID8gW10gOiBbL1xcLihzdmd8Y3NzKSQvLCAvXFwuY3NzIT0hL10pLFxuICAgIF0sXG4gICAgYWRkaXRpb25hbE1vZHVsZURpcnM6IFsnLi4vLi4vbm9kZV9tb2R1bGVzJ10sXG4gIH0pO1xuICBjb25maWcuZXh0ZXJuYWxzID0gW1xuICAgIGZ1bmN0aW9uICh7IGNvbnRleHQsIHJlcXVlc3QsIGNvbnRleHRJbmZvLCBnZXRSZXNvbHZlIH0sIGNhbGxiYWNrKSB7XG4gICAgICAvLyBzdmdyICsgbGluYXJpYSBoYXZlIGlzc3VlcyB3aXRoIHJlcXVpcmUoJ3JlYWN0JylcbiAgICAgIC8vIGluc3RlYWQgd2UnbGwgZGV0ZWN0IHRoaXMgc3BlY2lmaWMgY2FzZSBhbmQgZW1iZWQgaXRcbiAgICAgIGlmIChcbiAgICAgICAgcmVxdWVzdCA9PT0gJ3JlYWN0JyAmJlxuICAgICAgICBjb250ZXh0SW5mby5pc3N1ZXIuc3Vic3RyaW5nKGNvbnRleHRJbmZvLmlzc3Vlci5sZW5ndGggLSA0KSA9PT0gJy5zdmcnXG4gICAgICApIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH0gZWxzZVxuICAgICAgICBleHRlcm5hbHNGdW5jKHsgY29udGV4dCwgcmVxdWVzdCwgY29udGV4dEluZm8sIGdldFJlc29sdmUgfSwgY2FsbGJhY2spO1xuICAgIH0sXG4gIF07XG4gIGNvbmZpZy5vdXRwdXQucGF0aCA9XG4gICAgKHBrZz8ucHVibGlzaENvbmZpZz8ubWFpbiA/PyBwa2c/Lm1haW4pID9cbiAgICAgIHJvb3RQYXRoXG4gICAgOiBwYXRoLmpvaW4ocm9vdFBhdGgsIHNlcnZlckRpcik7XG4gIGNvbmZpZy5vdXRwdXQuZmlsZW5hbWUgPSBwa2c/LnB1Ymxpc2hDb25maWc/Lm1haW4gPz8gcGtnPy5tYWluID8/ICdbbmFtZV0uanMnO1xuICBjb25maWcub3V0cHV0LmNodW5rRmlsZW5hbWUgPSAnW25hbWVdLmNodW5rLmpzJztcblxuICBkZWxldGUgY29uZmlnLm91dHB1dC5nbG9iYWxPYmplY3Q7XG5cbiAgY29uZmlnLm91dHB1dC5saWJyYXJ5ID0ge1xuICAgIHR5cGU6ICdjb21tb25qczInLFxuICB9O1xuICBpZiAoIWNvbmZpZy5vdXRwdXQuZW52aXJvbm1lbnQpIHtcbiAgICBjb25maWcub3V0cHV0LmVudmlyb25tZW50ID0ge307XG4gIH1cbiAgLy8gbm9kZTEyKyBzdXBwb3J0cyBpbXBvcnQoKVxuICBjb25maWcub3V0cHV0LmVudmlyb25tZW50LmR5bmFtaWNJbXBvcnQgPSB0cnVlO1xuXG4gIC8vIGRvbid0IG91dHB1dCBzdGF0cyBmb3Igc2VydmVyIGJ1aWxkcyBhcyB0aGV5IHdvbid0IG5lZWQgdG8gcmVmZXJlbmNlIG1hbmlmZXN0c1xuICBjb25maWcucGx1Z2lucyA9IGNvbmZpZy5wbHVnaW5zLmZpbHRlcihcbiAgICBwbHVnaW4gPT4gIShwbHVnaW4gaW5zdGFuY2VvZiBTdGF0c1dyaXRlclBsdWdpbiksXG4gICk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxxQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsbUJBQUEsR0FBQUYsT0FBQTtBQUVlLFNBQVNHLGNBQWNBLENBQ3BDQyxVQUFVLEVBQ1Y7RUFBRUMsUUFBUTtFQUFFQyxTQUFTO0VBQUVDLEdBQUc7RUFBRUMsT0FBTztFQUFFQztBQUFlLENBQUMsRUFDckQ7RUFDQSxNQUFNQyxNQUFNLEdBQUc7SUFBRSxHQUFHTjtFQUFXLENBQUM7RUFDaENNLE1BQU0sQ0FBQ0MsTUFBTSxHQUFHLE1BQU07RUFDdEIsSUFBSSxDQUFDRCxNQUFNLENBQUNFLFlBQVksRUFBRTtJQUN4QkYsTUFBTSxDQUFDRSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0VBQzFCO0VBQ0FGLE1BQU0sQ0FBQ0UsWUFBWSxDQUFDQyxRQUFRLEdBQUcsS0FBSztFQUNwQ0gsTUFBTSxDQUFDRSxZQUFZLENBQUNFLFdBQVcsR0FBRyxDQUFDLENBQUM7RUFDcENKLE1BQU0sQ0FBQ0UsWUFBWSxDQUFDRyxZQUFZLEdBQUcsS0FBSztFQUN4Q0wsTUFBTSxDQUFDRSxZQUFZLENBQUNJLGtCQUFrQixHQUFHLElBQUk7RUFDN0NOLE1BQU0sQ0FBQ0UsWUFBWSxDQUFDSyxpQkFBaUIsR0FBRyxJQUFJO0VBRTVDUCxNQUFNLENBQUNRLElBQUksR0FBRztJQUNaQyxTQUFTLEVBQUUsSUFBSTtJQUNmQyxVQUFVLEVBQUU7RUFDZCxDQUFDO0VBQ0RWLE1BQU0sQ0FBQ1csZ0JBQWdCLEdBQUc7SUFBRUgsSUFBSSxFQUFFO0VBQUssQ0FBQztFQUN4QyxNQUFNSSxhQUFhLEdBQUcsSUFBQUMsNkJBQWEsRUFBQztJQUNsQ0MsU0FBUyxFQUFFLENBQ1QsaUJBQWlCLEVBQ2pCZixjQUFjLEVBQ2QsSUFBSUYsR0FBRyxJQUFJQyxPQUFPLEdBQUcsRUFBRSxHQUFHLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQ3hEO0lBQ0RpQixvQkFBb0IsRUFBRSxDQUFDLG9CQUFvQjtFQUM3QyxDQUFDLENBQUM7RUFDRmYsTUFBTSxDQUFDZ0IsU0FBUyxHQUFHLENBQ2pCLFVBQVU7SUFBRUMsT0FBTztJQUFFQyxPQUFPO0lBQUVDLFdBQVc7SUFBRUM7RUFBVyxDQUFDLEVBQUVDLFFBQVEsRUFBRTtJQUNqRTtJQUNBO0lBQ0EsSUFDRUgsT0FBTyxLQUFLLE9BQU8sSUFDbkJDLFdBQVcsQ0FBQ0csTUFBTSxDQUFDQyxTQUFTLENBQUNKLFdBQVcsQ0FBQ0csTUFBTSxDQUFDRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssTUFBTSxFQUN0RTtNQUNBSCxRQUFRLENBQUMsQ0FBQztJQUNaLENBQUMsTUFDQ1QsYUFBYSxDQUFDO01BQUVLLE9BQU87TUFBRUMsT0FBTztNQUFFQyxXQUFXO01BQUVDO0lBQVcsQ0FBQyxFQUFFQyxRQUFRLENBQUM7RUFDMUUsQ0FBQyxDQUNGO0VBQ0RyQixNQUFNLENBQUN5QixNQUFNLENBQUNDLElBQUksR0FDZjdCLEdBQUcsRUFBRThCLGFBQWEsRUFBRUMsSUFBSSxJQUFJL0IsR0FBRyxFQUFFK0IsSUFBSSxHQUNwQ2pDLFFBQVEsR0FDUitCLGFBQUksQ0FBQ0csSUFBSSxDQUFDbEMsUUFBUSxFQUFFQyxTQUFTLENBQUM7RUFDbENJLE1BQU0sQ0FBQ3lCLE1BQU0sQ0FBQ0ssUUFBUSxHQUFHakMsR0FBRyxFQUFFOEIsYUFBYSxFQUFFQyxJQUFJLElBQUkvQixHQUFHLEVBQUUrQixJQUFJLElBQUksV0FBVztFQUM3RTVCLE1BQU0sQ0FBQ3lCLE1BQU0sQ0FBQ00sYUFBYSxHQUFHLGlCQUFpQjtFQUUvQyxPQUFPL0IsTUFBTSxDQUFDeUIsTUFBTSxDQUFDTyxZQUFZO0VBRWpDaEMsTUFBTSxDQUFDeUIsTUFBTSxDQUFDM0IsT0FBTyxHQUFHO0lBQ3RCbUMsSUFBSSxFQUFFO0VBQ1IsQ0FBQztFQUNELElBQUksQ0FBQ2pDLE1BQU0sQ0FBQ3lCLE1BQU0sQ0FBQ1MsV0FBVyxFQUFFO0lBQzlCbEMsTUFBTSxDQUFDeUIsTUFBTSxDQUFDUyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0VBQ2hDO0VBQ0E7RUFDQWxDLE1BQU0sQ0FBQ3lCLE1BQU0sQ0FBQ1MsV0FBVyxDQUFDQyxhQUFhLEdBQUcsSUFBSTs7RUFFOUM7RUFDQW5DLE1BQU0sQ0FBQ29DLE9BQU8sR0FBR3BDLE1BQU0sQ0FBQ29DLE9BQU8sQ0FBQ0MsTUFBTSxDQUNwQ0MsTUFBTSxJQUFJLEVBQUVBLE1BQU0sWUFBWUMscUNBQWlCLENBQ2pELENBQUM7RUFFRCxPQUFPdkMsTUFBTTtBQUNmIiwiaWdub3JlTGlzdCI6W119