UNPKG

ilp-core

Version:

ILP core module managing ledger abstraction

123 lines (112 loc) 4.36 kB
require('babel-polyfill'); // Webpack config for creating the production bundle. var path = require('path'); var webpack = require('webpack'); var CleanPlugin = require('clean-webpack-plugin'); var ExtractTextPlugin = require('extract-text-webpack-plugin'); var strip = require('strip-loader'); var projectRootPath = path.resolve(__dirname, '../'); var assetsPath = path.resolve(projectRootPath, './static/dist'); // https://github.com/halt-hammerzeit/webpack-isomorphic-tools var WebpackIsomorphicToolsPlugin = require('webpack-isomorphic-tools/plugin'); var webpackIsomorphicToolsPlugin = new WebpackIsomorphicToolsPlugin(require('./webpack-isomorphic-tools')); module.exports = { context: path.resolve(__dirname, '..'), entry: { 'main': [ 'bootstrap-sass!./src/theme/bootstrap.config.prod.js', 'font-awesome-webpack!./src/theme/font-awesome.config.prod.js', './src/client.js' ], 'vendor': [ 'react', 'react-dom', 'react-dom/server', 'react-router', 'redux', 'react-redux', 'redux-async-connect', 'redux-form', 'socket.io-client', 'react-ga', 'serialize-javascript', 'uuid4', 'react-addons-css-transition-group', 'react-timeago', 'moment', 'moment-timezone', 'classnames/bind', 'react-waypoint', 'react-router-redux', 'redux-pagination', 'react-dropzone-component', 'superagent', 'react-bootstrap/lib/Alert', 'react-bootstrap/lib/Navbar', 'react-bootstrap/lib/Nav', 'react-bootstrap/lib/NavItem', 'react-bootstrap/lib/NavDropdown', 'react-bootstrap/lib/MenuItem' ] }, output: { path: assetsPath, filename: '[name]-[chunkhash].js', chunkFilename: '[name]-[chunkhash].js', publicPath: '/dist/' }, module: { loaders: [ { test: /\.js$/, exclude: /node_modules\/(?!ilp-kit).*/, loaders: [strip.loader('debug'), 'babel']}, { test: /\.json$/, loader: 'json-loader' }, { test: /\.less$/, loader: ExtractTextPlugin.extract('style', 'css?modules&importLoaders=2&sourceMap!autoprefixer?browsers=last 2 version!less?outputStyle=expanded&sourceMap=true&sourceMapContents=true') }, { test: /\.scss$/, loader: ExtractTextPlugin.extract('style', 'css?modules&importLoaders=2&sourceMap!autoprefixer?browsers=last 2 version!resolve-url!sass?outputStyle=expanded&sourceMap=true&sourceMapContents=true') }, { 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'] }, sassLoader: { includePaths: [path.resolve(__dirname, "../src/theme"), 'node_modules'] }, plugins: [ new CleanPlugin([assetsPath], { root: projectRootPath }), // css files from the extract-text-plugin loader new ExtractTextPlugin('[name]-[chunkhash].css', {allChunks: true}), new webpack.DefinePlugin({ 'process.env': { NODE_ENV: '"production"' }, __CLIENT__: true, __SERVER__: false, __DEVELOPMENT__: false, __DEVTOOLS__: false }), // ignore dev config new webpack.IgnorePlugin(/\.\/dev/, /\/config$/), // optimizations new webpack.optimize.DedupePlugin(), new webpack.optimize.OccurenceOrderPlugin(), new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } }), // TODO:PERFORMANCE this is not a final solution to long term caching. // If the number of modules changes (add/remove modules), all of the chunknames change too new webpack.optimize.CommonsChunkPlugin("vendor", "vendor-[chunkhash].js"), new webpack.optimize.CommonsChunkPlugin({name: 'meta', chunks: ["vendor"]}), webpackIsomorphicToolsPlugin ] };