ducky/web

Paddy 2015-07-07 Parent:5d47855181e1

19:6b7037b4cbe7 Go to Latest

ducky/web/webpack.config.js

Update to hosted URL, use oauth-refresh in profiles. When syncing the profiles, use our oauth-refresh sync helper, so it won't fail because of an expired OAuth token. Also, update our URL to use the nginx-fronted URL.

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