wallet-core/webpack.config.js
Florian Dold c26ee93d53
Optimize production builds.
Uses UglifyJS, and thus TypeScript needs to compile down to ES5, since
UglifyJS does not yet fully support ES6.  Once all ES6 bugs in UglifyJS,
we should compile to ES6 again.
2017-04-24 23:18:15 +02:00

80 lines
2.2 KiB
JavaScript

const path = require('path');
const webpack = require('webpack');
const merge = require('webpack-merge');
module.exports = function (env) {
const base = {
output: {
filename: '[name]-bundle.js',
chunkFilename: "[id].chunk.js",
path: path.resolve(__dirname, "dist")
},
module: {
noParse: /taler-emscripten-lib/,
rules: [
{
test: /\.tsx?$/,
loader: 'ts-loader',
exclude: /node_modules/,
exclude: /taler-emscripten-lib/,
}
]
},
resolve: {
modules: [path.resolve(__dirname, "./"), "node_modules"],
extensions: [".tsx", ".ts", ".js"]
},
plugins: [],
devtool: "source-map",
}
if (env.prod) {
base.plugins.push(new webpack.optimize.UglifyJsPlugin());
base.plugins.push(new webpack.LoaderOptionsPlugin({minimize: true}));
}
const configWebWorker = {
entry: {"cryptoWorker": "./src/cryptoWorker.ts"},
target: "webworker",
externals: {
// A big hack to load taler-emscripten-lib from the environment,
// because we exclude it from the bundle.
"./emscripten/taler-emscripten-lib": "(self.TalerEmscriptenLib = {}, importScripts('/src/emscripten/taler-emscripten-lib.js'), TalerEmscriptenLib)",
},
};
const configBackground = {
entry: {"background": "./src/background/background.ts"},
};
const configContentScript = {
entry: {"contentScript": "./src/content_scripts/notify.ts"},
};
const configExtensionPages = {
entry: {
"add-auditor": "./src/pages/add-auditor.tsx",
"auditors": "./src/pages/auditors.tsx",
"confirm-contract": "./src/pages/confirm-contract.tsx",
"confirm-create-reserve": "./src/pages/confirm-create-reserve.tsx",
"error": "./src/pages/error.tsx",
"logs": "./src/pages/logs.tsx",
"popup": "./src/pages/popup.tsx",
"show-db": "./src/pages/show-db.ts",
"tree": "./src/pages/tree.tsx",
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: "page-common",
minChunks: 2,
}),
],
};
return [
merge(base, configBackground),
merge(base, configWebWorker),
merge(base, configExtensionPages),
merge(base, configContentScript)
];
}