UNPKG

ilp-core

Version:

ILP core module managing ledger abstraction

177 lines (160 loc) 6.2 kB
require('babel-polyfill'); // Webpack config for development var fs = require('fs'); var path = require('path'); var webpack = require('webpack'); var assetsPath = path.resolve(__dirname, '../static/dist'); var host = (process.env.CLIENT_HOST || 'localhost'); var port = +process.env.CLIENT_PORT + 1; // https://github.com/halt-hammerzeit/webpack-isomorphic-tools var WebpackIsomorphicToolsPlugin = require('webpack-isomorphic-tools/plugin'); var webpackIsomorphicToolsPlugin = new WebpackIsomorphicToolsPlugin(require('./webpack-isomorphic-tools')); var babelrc = fs.readFileSync('./.babelrc'); var babelrcObject = {}; try { babelrcObject = JSON.parse(babelrc); } catch (err) { console.error('==> ERROR: Error parsing your .babelrc.'); console.error(err); } var babelrcObjectDevelopment = babelrcObject.env && babelrcObject.env.development || {}; // merge global and dev-only plugins var combinedPlugins = babelrcObject.plugins || []; combinedPlugins = combinedPlugins.concat(babelrcObjectDevelopment.plugins); var babelLoaderQuery = Object.assign({}, babelrcObjectDevelopment, babelrcObject, {plugins: combinedPlugins}); delete babelLoaderQuery.env; // Since we use .babelrc for client and server, and we don't want HMR enabled on the server, we have to add // the babel plugin react-transform-hmr manually here. // make sure react-transform is enabled babelLoaderQuery.plugins = babelLoaderQuery.plugins || []; var reactTransform = null; for (var i = 0; i < babelLoaderQuery.plugins.length; ++i) { var plugin = babelLoaderQuery.plugins[i]; if (Array.isArray(plugin) && plugin[0] === 'react-transform') { reactTransform = plugin; } } if (!reactTransform) { reactTransform = ['react-transform', {transforms: []}]; babelLoaderQuery.plugins.push(reactTransform); } if (!reactTransform[1] || !reactTransform[1].transforms) { reactTransform[1] = Object.assign({}, reactTransform[1], {transforms: []}); } // make sure react-transform-hmr is enabled reactTransform[1].transforms.push({ transform: 'react-transform-hmr', imports: ['react'], locals: ['module'] }); module.exports = { cache: true, devtool: 'eval', context: path.resolve(__dirname, '..'), entry: { app_assets: [ 'bootstrap-sass!./src/theme/bootstrap.config.js', 'font-awesome-webpack!./src/theme/font-awesome.config.js', './src/client.js' ], // TODO maybe include all deps by default? vendor: [ 'babel-polyfill', 'babel-runtime/core-js/array/from', 'babel-runtime/core-js/get-iterator', 'babel-runtime/core-js/is-iterable', 'babel-runtime/core-js/json/stringify', 'babel-runtime/core-js/number/is-integer', 'babel-runtime/core-js/number/is-safe-integer', 'babel-runtime/core-js/object/define-property', 'babel-runtime/core-js/object/get-own-property-descriptor', 'babel-runtime/core-js/object/get-own-property-names', 'babel-runtime/core-js/object/get-prototype-of', 'babel-runtime/core-js/promise', 'babel-runtime/helpers/create-class', 'babel-runtime/helpers/createClass', 'babel-runtime/helpers/defineProperty', 'babel-runtime/helpers/get', 'babel-runtime/helpers/possibleConstructorReturn', 'babel-runtime/helpers/slicedToArray', 'babel-runtime/helpers/to-consumable-array', 'babel-runtime/helpers/toConsumableArray', 'classnames/bind', 'lodash', 'moment', 'moment-timezone', 'react', 'react-addons-create-fragment', 'react-addons-css-transition-group', 'react-bootstrap', 'react-dom', 'react-dropzone-component', 'react-ga', 'react-paginate', 'react-redux', 'react-router', 'react-router-bootstrap', 'react-router-redux', 'react-timeago', 'react-waypoint', 'redux', 'redux-async-connect', 'redux-form', 'redux-pagination', 'socket.io-client', 'superagent', 'uuid4', 'react-hotkeys', 'redux-devtools', 'redux-devtools-log-monitor', 'redux-devtools-dock-monitor' ] }, output: { path: assetsPath, filename: '[name].dll.js', library: '[name]', publicPath: 'http://' + host + ':' + (port - 1) + '/dist/' }, module: { loaders: [ { test: /\.jsx?$/, exclude: /node_modules/, loaders: ['babel?' + JSON.stringify(babelLoaderQuery)]}, { test: /\.json$/, loader: 'json-loader' }, { test: /\.less$/, loader: 'style!css?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!autoprefixer?browsers=last 2 version!less?outputStyle=expanded&sourceMap' }, { test: /\.scss$/, loader: 'style!css?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!autoprefixer?browsers=last 2 version!resolve-url!sass?outputStyle=expanded&sourceMap' }, { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/font-woff" }, { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/font-woff" }, { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/octet-stream" }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file" }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=image/svg+xml" }, { test: webpackIsomorphicToolsPlugin.regular_expression('images'), loader: 'url-loader?limit=10240' } ] }, progress: true, resolve: { modulesDirectories: [ 'src', 'node_modules' ], extensions: ['', '.json', '.js', '.jsx'] }, sassLoader: { includePaths: [path.resolve(__dirname, "../src/theme"), 'node_modules', '../../../'] }, plugins: [ new webpack.DllPlugin({ name: '[name]', path: path.join( assetsPath, '[name]-manifest.json' ), }), // hot reload new webpack.HotModuleReplacementPlugin(), new webpack.IgnorePlugin(/webpack-stats\.json$/), new webpack.DefinePlugin({ __CLIENT__: true, __SERVER__: false, __DEVELOPMENT__: true, __DEVTOOLS__: true // <-------- DISABLE redux-devtools HERE }), webpackIsomorphicToolsPlugin.development() ] };