-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrazzle.config.js
More file actions
48 lines (41 loc) · 1.38 KB
/
razzle.config.js
File metadata and controls
48 lines (41 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/* eslint-disable prefer-object-spread */
const path = require('path');
const LoadableWebpackPlugin = require('@loadable/webpack-plugin');
const LoadableBabelPlugin = require('@loadable/babel-plugin');
const babelPresetRazzle = require('razzle/babel');
module.exports = {
modifyWebpackConfig: opts => {
const config = opts.webpackConfig;
if (opts.env.target === 'web') {
const filename = path.resolve(__dirname, 'build');
config.plugins = [
...config.plugins,
new LoadableWebpackPlugin({
outputAsset: false,
writeToDisk: { filename },
}),
];
config.node = { fs: 'empty' };
config.output.filename = opts.env.dev ? 'static/js/[name].js' : 'static/js/[name].[chunkhash:8].js';
config.optimization = Object.assign({}, config.optimization, {
runtimeChunk: true,
splitChunks: {
chunks: 'all',
name: opts.env.dev,
},
});
}
if (opts.env.target === 'node' && !opts.env.dev) {
config.entry = path.resolve(__dirname, './src/server.js');
config.output.filename = 'server.bundle.js';
config.output.path = path.resolve(__dirname, './build');
config.output.libraryTarget = 'commonjs2';
}
return config;
},
modifyBabelOptions: () => ({
babelrc: false,
presets: [babelPresetRazzle],
plugins: [LoadableBabelPlugin],
}),
};