1 | const webpack = require('webpack')
|
2 | const nodeExternals = require('webpack-node-externals')
|
3 | const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin')
|
4 | const config = require('./paths')
|
5 | const path = require('path')
|
6 |
|
7 | module.exports = (options) => ({
|
8 | target: 'node',
|
9 | devtool: 'source-map',
|
10 | externals: nodeExternals(),
|
11 | performance: {
|
12 | hints: false
|
13 | },
|
14 | resolve: {
|
15 | extensions: ['.js', '.json'],
|
16 | modules: [options.paths.userNodeModulesPath, path.resolve(__dirname, '../node_modules')]
|
17 | },
|
18 | resolveLoader: {
|
19 | modules: [options.paths.userNodeModulesPath, path.resolve(__dirname, '../node_modules')]
|
20 | },
|
21 | node: {
|
22 | __filename: false,
|
23 | __dirname: false
|
24 | },
|
25 | entry: {
|
26 | main: [
|
27 | require.resolve('babel-polyfill'),
|
28 | `${options.paths.serverSrcPath}/index.js`
|
29 | ],
|
30 | },
|
31 | output: {
|
32 | path: options.paths.serverBuildPath,
|
33 | filename: '[name].js',
|
34 | sourceMapFilename: '[name].map',
|
35 | publicPath: options.paths.publicPath,
|
36 | libraryTarget: 'commonjs2'
|
37 | },
|
38 |
|
39 | module: {
|
40 | rules: [
|
41 | {
|
42 | test: /\.json$/,
|
43 | loader: 'json-loader'
|
44 | },
|
45 | {
|
46 | test: /\.(js|jsx)$/,
|
47 | loader: 'babel-loader',
|
48 | exclude: [
|
49 | /node_modules/,
|
50 | options.paths.buildPath
|
51 | ],
|
52 | options: {
|
53 | presets: [
|
54 | [require.resolve('babel-preset-env'), {
|
55 | modules: false
|
56 | }]
|
57 | ],
|
58 | plugins: [
|
59 | require.resolve('babel-plugin-transform-object-rest-spread'),
|
60 | require.resolve('babel-plugin-transform-class-properties')
|
61 | ]
|
62 | }
|
63 | }
|
64 | ]
|
65 | },
|
66 | plugins: [
|
67 | new webpack.DefinePlugin({
|
68 | 'process.env.NODE_ENV': JSON.stringify(options.env),
|
69 | '__DEV__': options.env === 'development'
|
70 | }),
|
71 | new webpack.BannerPlugin({
|
72 | raw: true,
|
73 | banner: 'require("source-map-support").install();'
|
74 | }),
|
75 | new FriendlyErrorsWebpackPlugin(),
|
76 | new webpack.NoErrorsPlugin()
|
77 | ]
|
78 | })
|