ducky/web

Paddy 2015-05-03 Parent:99a43a6d1d30 Child:b9d0efb44eaa

1:2cd4e16a669e Go to Latest

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

History
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 }()