2022-07-04 16:41:14 +03:00
|
|
|
const rewire = require('rewire');
|
|
|
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
|
|
const defaults = rewire('react-scripts/scripts/build.js');
|
|
|
|
let config = defaults.__get__('config');
|
2022-07-05 12:47:55 +03:00
|
|
|
const fs = require('fs');
|
|
|
|
/* eslint-disable no-console */
|
|
|
|
const log = console.log;
|
|
|
|
/* eslint-enable no-console */
|
|
|
|
|
|
|
|
fs.copyFile('./public/main.css', './umd/main.css', (err) => {
|
|
|
|
if (err) {
|
|
|
|
throw err;
|
|
|
|
}
|
|
|
|
log('Copied main.css');
|
|
|
|
});
|
2022-07-04 16:41:14 +03:00
|
|
|
|
|
|
|
config.optimization.splitChunks = {
|
|
|
|
cacheGroups: {
|
|
|
|
default: false
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
config.optimization.runtimeChunk = false;
|
|
|
|
|
|
|
|
// JS: Save built file in `/umd`
|
|
|
|
config.output.filename = '../umd/sodo-search.min.js';
|
|
|
|
|
|
|
|
// CSS: Remove MiniCssPlugin from list of plugins
|
|
|
|
config.plugins = config.plugins.filter(plugin => !(plugin instanceof MiniCssExtractPlugin));
|
|
|
|
// CSS: replaces all MiniCssExtractPlugin.loader with style-loader to embed CSS in JS
|
|
|
|
config.module.rules[1].oneOf = config.module.rules[1].oneOf.map((rule) => {
|
|
|
|
if (!Object.prototype.hasOwnProperty.call(rule, 'use')) {
|
|
|
|
return rule;
|
|
|
|
}
|
|
|
|
return Object.assign({}, rule, {
|
|
|
|
use: rule.use.map(options => (/mini-css-extract-plugin/.test(options.loader)
|
|
|
|
? {loader: require.resolve('style-loader'), options: {}}
|
|
|
|
: options))
|
|
|
|
});
|
|
|
|
});
|