
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.
80 lines
2.2 KiB
JavaScript
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)
|
|
];
|
|
}
|