ducky/web
2015-07-07
Parent:5d47855181e1
ducky/web/webpack.config.js
Implement subscriptions. Create a Subscription model and a Subscriptions collection, and attach them to the app context. Add a helper to our Profile model to retrieve the Subscription of that model. Still not sure this should be on the Profile--wouldn't it be better on the Me model? Isn't that generally where we would need it?
| paddy@0 | 1 require('babel/register') |
| paddy@0 | 2 var webpack = require('webpack') |
| paddy@0 | 3 var ExtractTextPlugin = require('extract-text-webpack-plugin') |
| paddy@0 | 4 var path = require('path') |
| paddy@0 | 5 var neat = require('node-neat').includePaths |
| paddy@0 | 6 var env = process.env.NODE_ENV || 'development' |
| paddy@0 | 7 |
| paddy@0 | 8 module.exports = function () { |
| paddy@0 | 9 var isDev = env !== 'production' |
| paddy@16 | 10 var cssLoader = isDev ? 'css-loader?sourceMap' : 'css-loader?sourceMap' |
| paddy@16 | 11 var sassLoader = isDev ? 'sass-loader?sourceMap' : 'sass-loader?sourceMap' |
| paddy@0 | 12 var bourbonPaths = neat.map(function(p) { |
| paddy@0 | 13 return "includePaths[]=" + p |
| paddy@0 | 14 }).join("&") |
| paddy@0 | 15 if (sassLoader.indexOf('?') === -1) { |
| paddy@0 | 16 sassLoader += '?' |
| paddy@0 | 17 } else { |
| paddy@0 | 18 sassLoader += '&' |
| paddy@0 | 19 } |
| paddy@0 | 20 sassLoader += bourbonPaths |
| paddy@0 | 21 var manifest = { |
| paddy@0 | 22 entry: path.join(__dirname, 'src', 'main.js'), |
| paddy@0 | 23 output: { |
| paddy@2 | 24 path: path.join(__dirname, 'build', 'static'), |
| paddy@0 | 25 publicPath: '/static/', |
| paddy@0 | 26 filename: 'bundle.js' |
| paddy@0 | 27 }, |
| paddy@0 | 28 module: { |
| paddy@0 | 29 loaders: [ |
| paddy@0 | 30 { test: /(\.js$)|(\.jsx$)/, loader: 'babel-loader', exclude: /node_modules/ }, |
| paddy@0 | 31 { test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader', cssLoader) }, |
| paddy@0 | 32 { test: /\.scss$/, loader: ExtractTextPlugin.extract('style-loader', cssLoader + '!' + sassLoader) }, |
| paddy@0 | 33 { test: /\.(svg|png|jpg|jpeg)$/, loader: 'url-loader?limit=8192'} |
| paddy@0 | 34 ] |
| paddy@0 | 35 }, |
| paddy@0 | 36 resolve: { |
| paddy@0 | 37 extensions: ['', '.js', '.jsx', '.scss'] |
| paddy@0 | 38 }, |
| paddy@16 | 39 plugins: [new ExtractTextPlugin("main.css")], |
| paddy@0 | 40 modulesDirectoires: ["node_modules"], |
| paddy@16 | 41 devtool: 'source-map', |
| 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 }), |
| paddy@0 | 80 new webpack.DefinePlugin({ |
| paddy@0 | 81 'process.env': {NODE_ENV: JSON.stringify('production')} |
| paddy@0 | 82 }) |
| paddy@0 | 83 ) |
| paddy@0 | 84 } |
| paddy@0 | 85 return manifest |
| paddy@0 | 86 }() |