|
1 | 1 | /* Babel preset for NodeJS build with support of server-side JSX rendering. */
|
2 | 2 |
|
3 | 3 | const _ = require('lodash');
|
4 |
| -const config = _.cloneDeep(require('./webpack')); |
5 |
| - |
6 |
| -const cssModulesTransformPluginOps = { |
7 |
| - extensions: ['.css', '.scss'], |
8 |
| -}; |
9 |
| - |
10 |
| -const transformAssetsPluginOptions = { |
11 |
| - extensions: ['gif', 'jpeg', 'jpg', 'png'], |
12 |
| -}; |
13 |
| - |
14 |
| -config.plugins = config.plugins.concat([ |
15 |
| - 'dynamic-import-node', |
16 |
| - ['transform-assets', transformAssetsPluginOptions], |
17 |
| - ['css-modules-transform', cssModulesTransformPluginOps], |
18 |
| -]); |
19 |
| - |
20 |
| -const moduleResolverPluginOps = config.plugins.find( |
21 |
| - x => x[0] === 'module-resolver', |
22 |
| -)[1]; |
23 |
| - |
24 |
| -moduleResolverPluginOps.transformFunctions = [ |
25 |
| - 'resolveWeak', |
26 |
| - 'webpack.resolveWeak', |
27 |
| -]; |
28 |
| - |
29 |
| -switch (process.env.BABEL_ENV) { |
30 |
| - case 'development': |
31 |
| - _.pull(config.plugins, 'react-hot-loader/babel'); |
32 |
| - cssModulesTransformPluginOps.generateScopedName = '[path][name]___[local]___[hash:base64:6]'; |
33 |
| - break; |
34 |
| - case 'production': |
35 |
| - cssModulesTransformPluginOps.generateScopedName = '[hash:base64:6]'; |
36 |
| - break; |
37 |
| - case 'test': |
38 |
| - cssModulesTransformPluginOps.generateScopedName = '[path][name]___[local]___[hash:base64:6]'; |
39 |
| - break; |
40 |
| - default: |
41 |
| -} |
| 4 | +const getWebpackBabelConfig = require('./webpack'); |
| 5 | + |
| 6 | +function getConfig(babel, ops = {}) { |
| 7 | + const config = getWebpackBabelConfig(babel); |
| 8 | + |
| 9 | + const cssModulesTransformPluginOps = { |
| 10 | + extensions: ['.css', '.scss'], |
| 11 | + }; |
| 12 | + |
| 13 | + const transformAssetsPluginOptions = { |
| 14 | + extensions: ['gif', 'jpeg', 'jpg', 'png'], |
| 15 | + }; |
| 16 | + |
| 17 | + config.plugins = config.plugins.concat([ |
| 18 | + 'dynamic-import-node', |
| 19 | + ['transform-assets', transformAssetsPluginOptions], |
| 20 | + ['css-modules-transform', cssModulesTransformPluginOps], |
| 21 | + ]); |
| 22 | + |
| 23 | + const moduleResolverPluginOps = config.plugins.find( |
| 24 | + x => x[0] === 'module-resolver', |
| 25 | + )[1]; |
| 26 | + |
| 27 | + moduleResolverPluginOps.transformFunctions = [ |
| 28 | + 'resolveWeak', |
| 29 | + 'webpack.resolveWeak', |
| 30 | + ]; |
| 31 | + |
| 32 | + switch (babel.getEnv()) { |
| 33 | + case 'development': |
| 34 | + _.pull(config.plugins, 'react-hot-loader/babel'); |
| 35 | + cssModulesTransformPluginOps.generateScopedName = '[path][name]___[local]___[hash:base64:6]'; |
| 36 | + break; |
| 37 | + case 'production': |
| 38 | + cssModulesTransformPluginOps.generateScopedName = '[hash:base64:6]'; |
| 39 | + break; |
| 40 | + case 'test': |
| 41 | + cssModulesTransformPluginOps.generateScopedName = '[path][name]___[local]___[hash:base64:6]'; |
| 42 | + break; |
| 43 | + default: |
| 44 | + } |
42 | 45 |
|
43 |
| -module.exports = (apt, ops = {}) => { |
44 | 46 | const baseAssetsOutputPath = ops.baseAssetsOutputPath || '';
|
45 | 47 | transformAssetsPluginOptions.name = `${
|
46 | 48 | baseAssetsOutputPath}/images/[hash].[ext]`;
|
| 49 | + |
47 | 50 | return config;
|
48 |
| -}; |
| 51 | +} |
| 52 | + |
| 53 | +module.exports = getConfig; |
0 commit comments