123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- const webpack = require('webpack')
- const path = require('path')
- const isProduction = process.env.NODE_ENV === 'production'
- const dashboardPlugin = require('webpack-dashboard/plugin')
-
- module.exports = {
- entry: {
- app: ['babel-polyfill', 'whatwg-fetch', './src/index.js'],
- vendor: [
- 'babel-plugin-transform-class-properties',
- 'babel-plugin-transform-object-assign',
- 'babel-plugin-transform-object-rest-spread',
- 'babel-polyfill',
- // 'lodash.pull',
- // 'lodash.reject',
- // 'lodash.uniqby',
- 'react',
- 'react-dom',
- 'react-redux',
- 'react-router-dom',
- // 'react-select',
- 'redux',
- 'redux-logger',
- // 'redux-saga',
- 'redux-thunk',
- 'whatwg-fetch',
- 'classnames'
- ]
- },
- output: {
- path: path.resolve(__dirname, 'dist/asset'),
- filename: 'tracim.app.entry.js',
- pathinfo: !isProduction,
- publicPath: '/asset/'
- },
- devServer: {
- contentBase: path.join(__dirname, 'dist/'),
- port: 8090,
- hot: true,
- noInfo: true,
- overlay: {
- warnings: false,
- errors: true
- },
- historyApiFallback: true
- // headers: {
- // 'Access-Control-Allow-Origin': '*'
- // }
- },
- devtool: isProduction ? false : 'cheap-module-source-map',
- module: {
- rules: [{
- test: /\.jsx?$/,
- enforce: 'pre',
- use: 'standard-loader',
- exclude: [/node_modules/]
- }, {
- test: [/\.js$/, /\.jsx$/],
- loader: 'babel-loader',
- options: {
- presets: ['env', 'react'],
- plugins: ['transform-object-rest-spread', 'transform-class-properties', 'transform-object-assign']
- },
- exclude: [/node_modules/]
- }, {
- test: /\.css$/,
- use: ['style-loader', 'css-loader']
- }, {
- test: /\.styl$/,
- use: ['style-loader', 'css-loader', 'stylus-loader']
- }, {
- test: /\.(jpg|png|svg)$/,
- loader: 'file-loader',
- options: {
- name: '[name].[ext]',
- outputPath: 'images/', // asset/ is in output.path
- limit: 2000
- }
- }]
- },
- resolve: {
- extensions: ['.js', '.jsx']
- },
- plugins:[
- ...[ // generic plugins always present
- new webpack.optimize.CommonsChunkPlugin({
- name: 'vendor',
- filename: 'tracim.vendor.bundle.js'
- })
- // new dashboardPlugin()
- ],
- ...(isProduction
- ? [ // production specific plugins
- new webpack.DefinePlugin({
- 'process.env': { 'NODE_ENV': JSON.stringify('production') }
- }),
- new webpack.optimize.UglifyJsPlugin({
- compress: { warnings: false }
- })
- ]
- : [] // development specific plugins
- )
- ]
- }
|