UNPKG

react-dazzle-couban

Version:

The simple yet flexible dashbording solution for React

102 lines (88 loc) 2.83 kB
const path = require('path'); const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const proxy = require('./server/webpack-dev-proxy'); function getEntrySources(sources) { if (process.env.NODE_ENV !== 'production') { sources.push('webpack-hot-middleware/client'); } return sources; } const basePlugins = [ new webpack.DefinePlugin({ __DEV__: process.env.NODE_ENV !== 'production', __PRODUCTION__: process.env.NODE_ENV === 'production', 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), }), new HtmlWebpackPlugin({ template: './sample/index.html', inject: 'body', }), ]; const devPlugins = [ new webpack.NoErrorsPlugin(), ]; const prodPlugins = [ new webpack.optimize.OccurenceOrderPlugin(), new webpack.optimize.UglifyJsPlugin({ compressor: { warnings: false, }, }), ]; const plugins = basePlugins .concat(process.env.NODE_ENV === 'production' ? prodPlugins : []) .concat(process.env.NODE_ENV === 'development' ? devPlugins : []); /* eslint max-len: "off" */ module.exports = { entry: { app: getEntrySources(['./sample/index.js']), vendor: [ 'react', ], }, resolve: { extensions: ['', '.js', '.jsx'], }, output: { path: path.join(__dirname, 'dist'), filename: '[name].[hash].js', publicPath: '/', sourceMapFilename: '[name].[hash].js.map', chunkFilename: '[id].chunk.js', }, devtool: 'source-map', plugins, devServer: { historyApiFallback: { index: '/' }, proxy: proxy(), }, module: { preLoaders: [ { test: /\.(js|jsx)$$/, loader: 'source-map-loader' }, { test: /\.(js|jsx)$$/, loader: 'eslint-loader' }, ], loaders: [ { test: /\.css$/, loader: 'style-loader!css-loader' }, { test: /\.(js|jsx)$/, loaders: ['react-hot', 'babel'], exclude: /node_modules/ }, { test: /\.json$/, loader: 'json-loader' }, { test: /\.(png|jpg|jpeg|gif|svg)$/, loader: 'url-loader?prefix=img/&limit=5000' }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file' }, { test: /\.(woff)$/, loader: 'url?prefix=font/&limit=5000' }, { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/octet-stream' }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml' }, { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&minetype=application/font-wof' }, { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&minetype=application/font-woff2' }, ], }, postcss: function postcssInit() { return [ require('postcss-import')({ addDependencyTo: webpack, }), require('postcss-cssnext')({ browsers: ['ie >= 8', 'last 2 versions'], }), ]; }, };