2016-10-18 22:46:48 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var path = require('path');
|
|
|
|
var webpack = require('webpack');
|
|
|
|
var StatsPlugin = require('stats-webpack-plugin');
|
|
|
|
|
|
|
|
var IS_PRODUCTION = process.env.NODE_ENV === 'production';
|
|
|
|
var ROOT_PATH = path.resolve(__dirname, '..');
|
|
|
|
|
|
|
|
// must match config.webpack.dev_server.port
|
|
|
|
var DEV_SERVER_PORT = 3808;
|
|
|
|
|
|
|
|
var config = {
|
|
|
|
context: ROOT_PATH,
|
|
|
|
entry: {
|
|
|
|
bundle: './app/assets/javascripts/webpack/bundle.js'
|
|
|
|
},
|
|
|
|
|
|
|
|
output: {
|
|
|
|
path: path.join(ROOT_PATH, 'public/assets/webpack'),
|
|
|
|
publicPath: '/assets/webpack/',
|
|
|
|
filename: IS_PRODUCTION ? '[name]-[chunkhash].js' : '[name].js'
|
|
|
|
},
|
|
|
|
|
2016-10-19 19:29:43 +00:00
|
|
|
module: {
|
|
|
|
loaders: [
|
|
|
|
{
|
|
|
|
test: /\.es6$/,
|
|
|
|
exclude: /node_modules/,
|
|
|
|
loader: 'babel-loader',
|
|
|
|
query: {
|
|
|
|
presets: ['es2015']
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
|
2016-10-18 22:46:48 +00:00
|
|
|
plugins: [
|
|
|
|
// manifest filename must match config.webpack.manifest_filename
|
|
|
|
// webpack-rails only needs assetsByChunkName to function properly
|
|
|
|
new StatsPlugin('manifest.json', {
|
|
|
|
chunkModules: false,
|
|
|
|
source: false,
|
|
|
|
chunks: false,
|
|
|
|
modules: false,
|
|
|
|
assets: true
|
|
|
|
})
|
2016-10-19 19:29:43 +00:00
|
|
|
],
|
|
|
|
|
|
|
|
resolve: {
|
|
|
|
extensions: ['', '.js', '.es6', '.js.es6']
|
|
|
|
}
|
2016-10-18 22:46:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (!IS_PRODUCTION) {
|
|
|
|
config.devServer = {
|
|
|
|
port: DEV_SERVER_PORT,
|
|
|
|
headers: { 'Access-Control-Allow-Origin': '*' }
|
|
|
|
};
|
|
|
|
config.output.publicPath = '//localhost:' + DEV_SERVER_PORT + config.output.publicPath;
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = config;
|