diff --git a/webpack.config.base.js b/webpack.config.base.js new file mode 100644 index 0000000..fd15117 --- /dev/null +++ b/webpack.config.base.js @@ -0,0 +1,55 @@ +const path = require('path'); +const webpack = require('webpack'); +const FlowStatusWebpackPlugin = require('flow-status-webpack-plugin'); + +require('dotenv').config(); + +const config = { + entry: ['./src/index.js'], + output: { + path: path.resolve('www/js/'), + filename: 'bundle.js', + }, + module: { + preLoaders: [ + { + test: /\.js$/, + loader: 'eslint-loader', + exclude: /node_modules/, + }, + ], + loaders: [ + { + test: /\.js$/, + loader: 'babel', + exclude: /node_modules/, + }, + { + test: /\.css$/, + loaders: ['style', 'css?modules'], + }, + { + test: /\.json$/, + loader: 'json', + }, + ], + }, + eslint: { + configFile: './.eslintrc.yaml', + fix: true, + }, + plugins: [ + new webpack.NoErrorsPlugin(), + new FlowStatusWebpackPlugin({ + binaryPath: './node_modules/.bin/flow', + failOnError: true, + }), + new webpack.DefinePlugin({ + 'process.env': { + 'NODE_ENV': JSON.stringify(process.env.NODE_ENV), + }, + }), + ], +}; + +module.exports = config; diff --git a/webpack.config.development.js b/webpack.config.development.js new file mode 100644 index 0000000..d0677f8 --- /dev/null +++ b/webpack.config.development.js @@ -0,0 +1,20 @@ +const merge = require('webpack-merge'); +const path = require('path'); +const WriteFilePlugin = require('write-file-webpack-plugin'); +const baseConfig = require('./webpack.config.base.js'); + +const config = merge.smart(baseConfig, { + devtool: 'inline-source-map', + devServer: { + outputPath: path.join(__dirname, './www/js'), + contentBase: path.join(__dirname, './www'), + port: 8090, + host: '0.0.0.0', + inline: true, + }, + plugins: [ + new WriteFilePlugin(), + ], +}); + +module.exports = config; diff --git a/webpack.config.production.js b/webpack.config.production.js new file mode 100644 index 0000000..762014e --- /dev/null +++ b/webpack.config.production.js @@ -0,0 +1,12 @@ +const path = require('path'); +const merge = require('webpack-merge'); +const baseConfig = require('./webpack.config.base.js'); + +const config = merge(baseConfig, { + eslint: { + configFile: './.eslintrc.yaml', + fix: false, + }, +}); + +module.exports = config;