ducky/web
ducky/web/webpack.config.js
Remove .swp files, update package.json. Remove the .swp files and add .swp to the .hgignore file. Update package.json to pin webpack at 1.8.9 because 1.8.10 broke everything and decided that didn't deserve a major version bump. See https://github.com/webpack/webpack/issues/1016
| paddy@0 | 1 require('babel/register') |
| paddy@0 | 2 var webpack = require('webpack') |
| paddy@0 | 3 var commonsPlugin = new webpack.optimize.CommonsChunkPlugin('common.js') |
| paddy@0 | 4 var ExtractTextPlugin = require('extract-text-webpack-plugin') |
| paddy@0 | 5 var path = require('path') |
| paddy@0 | 6 var neat = require('node-neat').includePaths |
| paddy@0 | 7 var env = process.env.NODE_ENV || 'development' |
| paddy@0 | 8 |
| paddy@0 | 9 module.exports = function () { |
| paddy@0 | 10 var isDev = env !== 'production' |
| paddy@0 | 11 var cssLoader = isDev ? 'css-loader?sourceMap' : 'css-loader' |
| paddy@0 | 12 var sassLoader = isDev ? 'sass-loader?sourceMap' : 'sass-loader' |
| paddy@0 | 13 var bourbonPaths = neat.map(function(p) { |
| paddy@0 | 14 return "includePaths[]=" + p |
| paddy@0 | 15 }).join("&") |
| paddy@0 | 16 if (sassLoader.indexOf('?') === -1) { |
| paddy@0 | 17 sassLoader += '?' |
| paddy@0 | 18 } else { |
| paddy@0 | 19 sassLoader += '&' |
| paddy@0 | 20 } |
| paddy@0 | 21 sassLoader += bourbonPaths |
| paddy@0 | 22 var manifest = { |
| paddy@0 | 23 entry: path.join(__dirname, 'src', 'main.js'), |
| paddy@0 | 24 output: { |
| paddy@0 | 25 path: path.join(__dirname, 'build'), |
| paddy@0 | 26 publicPath: '/static/', |
| paddy@0 | 27 filename: 'bundle.js' |
| paddy@0 | 28 }, |
| paddy@0 | 29 module: { |
| paddy@0 | 30 loaders: [ |
| paddy@0 | 31 { test: /(\.js$)|(\.jsx$)/, loader: 'babel-loader', exclude: /node_modules/ }, |
| paddy@0 | 32 { test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader', cssLoader) }, |
| paddy@0 | 33 { test: /\.scss$/, loader: ExtractTextPlugin.extract('style-loader', cssLoader + '!' + sassLoader) }, |
| paddy@0 | 34 { test: /\.(svg|png|jpg|jpeg)$/, loader: 'url-loader?limit=8192'} |
| paddy@0 | 35 ] |
| paddy@0 | 36 }, |
| paddy@0 | 37 resolve: { |
| paddy@0 | 38 extensions: ['', '.js', '.jsx', '.scss'] |
| paddy@0 | 39 }, |
| paddy@0 | 40 plugins: [commonsPlugin, new ExtractTextPlugin("main.css")], |
| paddy@0 | 41 modulesDirectoires: ["node_modules"], |
| paddy@0 | 42 } |
| paddy@0 | 43 if (isDev) { |
| paddy@0 | 44 manifest.host = '0.0.0.0' |
| paddy@0 | 45 manifest.port = '3000' |
| paddy@0 | 46 manifest.devtool = 'source-map' |
| paddy@0 | 47 |
| paddy@0 | 48 if (typeof manifest.entry === 'string') { |
| paddy@0 | 49 manifest.entry = [manifest.entry] |
| paddy@0 | 50 } |
| paddy@0 | 51 |
| paddy@0 | 52 manifest.entry.unshift( |
| paddy@0 | 53 'webpack-dev-server/client?http://' + manifest.host + ':' + manifest.port, |
| paddy@0 | 54 'webpack/hot/dev-server' |
| paddy@0 | 55 ) |
| paddy@0 | 56 |
| paddy@0 | 57 manifest.plugins = manifest.plugins.concat([ |
| paddy@0 | 58 new webpack.HotModuleReplacementPlugin(), |
| paddy@0 | 59 new webpack.NoErrorsPlugin() |
| paddy@0 | 60 ]) |
| paddy@0 | 61 |
| paddy@0 | 62 if (manifest.module.loaders[0].loader && !manifest.module.loaders[0].loaders) { |
| paddy@0 | 63 manifest.module.loaders[0].loaders = [manifest.module.loaders[0].loader] |
| paddy@0 | 64 delete manifest.module.loaders[0].loader |
| paddy@0 | 65 } |
| paddy@0 | 66 |
| paddy@0 | 67 manifest.module.loaders[0].loaders.unshift('react-hot') |
| paddy@0 | 68 } else { |
| paddy@0 | 69 manifest.plugins.push( |
| paddy@0 | 70 new webpack.optimize.DedupePlugin(), |
| paddy@0 | 71 new webpack.optimize.OccurenceOrderPlugin(true), |
| paddy@0 | 72 new webpack.optimize.UglifyJsPlugin({ |
| paddy@0 | 73 compress: { |
| paddy@0 | 74 warnings: false |
| paddy@0 | 75 }, |
| paddy@0 | 76 output: { |
| paddy@0 | 77 comments: false |
| paddy@0 | 78 }, |
| paddy@0 | 79 sourceMap: false |
| paddy@0 | 80 }), |
| paddy@0 | 81 new webpack.DefinePlugin({ |
| paddy@0 | 82 'process.env': {NODE_ENV: JSON.stringify('production')} |
| paddy@0 | 83 }) |
| paddy@0 | 84 ) |
| paddy@0 | 85 } |
| paddy@0 | 86 return manifest |
| paddy@0 | 87 }() |