diff options
Diffstat (limited to 'packages/website/webpack.config.js')
-rw-r--r-- | packages/website/webpack.config.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/packages/website/webpack.config.js b/packages/website/webpack.config.js new file mode 100644 index 000000000..c436888bd --- /dev/null +++ b/packages/website/webpack.config.js @@ -0,0 +1,86 @@ +const path = require('path'); +const webpack = require('webpack'); + +module.exports = { + entry: ['./ts/index.tsx'], + output: { + path: path.join(__dirname, '/public'), + filename: 'bundle.js', + chunkFilename: 'bundle-[name].js', + publicPath: '/', + }, + devtool: 'source-map', + resolve: { + modules: [ + path.join(__dirname, '/ts'), + 'node_modules', + ], + extensions: ['.ts', '.tsx', '.js', '.jsx', '.json', '.md'], + alias: { + ts: path.join(__dirname, '/ts'), + less: path.join(__dirname, '/less'), + md: path.join(__dirname, '/md'), + }, + }, + module: { + rules: [ + { + test: /\.js$/, + loader: 'source-map-loader', + }, + { + test: /\.tsx?$/, + loader: 'awesome-typescript-loader', + }, + { + test: /\.md$/, + use: 'raw-loader', + }, + { + test: /\.less$/, + loader: 'style-loader!css-loader!less-loader', + exclude: /node_modules/, + }, + { + test: /\.css$/, + loaders: ['style-loader', 'css-loader'], + }, + { + test: /\.json$/, + loader: 'json-loader', + }, + ], + }, + devServer: { + port: 3572, + historyApiFallback: { + // Fixes issue where having dots in URL path that aren't part of fileNames causes webpack-dev-server + // to fail. Doc versions have dots in them, therefore we special case these urls to also load index.html. + // Source: https://github.com/cvut/fittable/issues/171 + rewrites: [ + { + from: /^\/docs\/.*$/, + to: function() { + return 'index.html'; + } + } + ] + }, + disableHostCheck: true, + }, + plugins: process.env.NODE_ENV === 'production' ? [ + // Since we do not use moment's locale feature, we exclude them from the bundle. + // This reduces the bundle size by 0.4MB. + new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), + new webpack.DefinePlugin({ + 'process.env': { + 'NODE_ENV': JSON.stringify(process.env.NODE_ENV) + } + }), + new webpack.optimize.UglifyJsPlugin({ + mangle: { + except: ['BigNumber'] + } + }) + ] : [], +}; |