vizon-countdown-website/nwb.config.js

106 lines
2.6 KiB
JavaScript

const { ContextReplacementPlugin } = require('webpack');
module.exports = {
type: 'react-app',
babel: {
loose: false,
presets: [
'babel-preset-env',
],
plugins: [
'babel-plugin-transform-class-properties',
],
},
webpack: {
aliases: {
'moment-timezone': 'moment-timezone/builds/moment-timezone-with-data-2012-2022.js',
},
autoprefixer: '> 1%, last 4 versions, Firefox ESR, ios >= 8',
config(config) {
// Change config as you wish
// Select rules that match stylesheet files
const matchingLoaders = [
'sass-loader',
].map(require.resolve);
const newConfig = Object.assign({}, config);
newConfig.module.rules = config.module.rules.map((rule) => {
let enableSourceMap = false;
if (!rule.use) {
return rule;
}
return Object.assign({}, rule, {
use: rule.use.reduce((result, loaderDescriptor) => {
const resolvedLoader = require.resolve(loaderDescriptor.loader);
// Make sure resolve-url-loader is inserted right before compatible loaders
if (matchingLoaders.indexOf(resolvedLoader) >= 0) {
result.push({
loader: require.resolve('resolve-url-loader'),
options: {
fail: true,
silent: false,
},
});
enableSourceMap = true;
}
const finalLoaderDescriptor = Object.assign({}, loaderDescriptor);
// Avoid PostCSS discarding all source map information
if (enableSourceMap || resolvedLoader === require.resolve('postcss-loader')) {
finalLoaderDescriptor.options = finalLoaderDescriptor.options || {};
finalLoaderDescriptor.options.sourceMap = true;
}
result.push(finalLoaderDescriptor);
return result;
}, []),
});
});
return newConfig;
},
extra: {
plugins: [
new ContextReplacementPlugin(/moment[/\\]locale$/, /en\.js/),
],
resolve: {
extensions: [
'.jsx',
],
},
},
publicPath: '',
rules: {
babel: {
test: /\.jsx?/,
},
'sass-css': {
modules: true,
localIdentName: '[name]__[local]__[hash:base64:5]',
},
},
},
};
// @HACK - workaround for https://github.com/webpack/webpack/issues/1866
function batchresolve(arr) {
return arr.map(require.resolve);
}
module.exports.babel.presets = batchresolve(module.exports.babel.presets);
module.exports.babel.plugins = batchresolve(module.exports.babel.plugins);