mirror of
https://github.com/bitwarden/browser.git
synced 2024-08-23 22:43:00 +02:00
This PR wires up a polyfill for window.ipc which allows us to progressively migrate the codebase to a format which supports context bridge. This avoids a big bang effort where every non sandboxed call has to be migrated before we can run the code. Once all calls to node modules are removed from the renderer and only exists in preload.ts. We will turn on context isolation and use the context bridge for communication instead.
91 lines
2.2 KiB
JavaScript
91 lines
2.2 KiB
JavaScript
const path = require("path");
|
|
const { merge } = require("webpack-merge");
|
|
const CopyWebpackPlugin = require("copy-webpack-plugin");
|
|
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
|
|
const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");
|
|
const configurator = require("./config/config");
|
|
const { EnvironmentPlugin } = require("webpack");
|
|
|
|
const NODE_ENV = process.env.NODE_ENV == null ? "development" : process.env.NODE_ENV;
|
|
|
|
console.log("Main process config");
|
|
const envConfig = configurator.load(NODE_ENV);
|
|
configurator.log(envConfig);
|
|
|
|
const common = {
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.tsx?$/,
|
|
use: "ts-loader",
|
|
exclude: /node_modules\/(?!(@bitwarden)\/).*/,
|
|
},
|
|
],
|
|
},
|
|
plugins: [],
|
|
resolve: {
|
|
extensions: [".tsx", ".ts", ".js"],
|
|
plugins: [new TsconfigPathsPlugin({ configFile: "./tsconfig.json" })],
|
|
},
|
|
};
|
|
|
|
const prod = {
|
|
output: {
|
|
filename: "[name].js",
|
|
path: path.resolve(__dirname, "build"),
|
|
},
|
|
};
|
|
|
|
const dev = {
|
|
output: {
|
|
filename: "[name].js",
|
|
path: path.resolve(__dirname, "build"),
|
|
devtoolModuleFilenameTemplate: "[absolute-resource-path]",
|
|
},
|
|
devtool: "cheap-source-map",
|
|
};
|
|
|
|
const main = {
|
|
mode: NODE_ENV,
|
|
target: "electron-main",
|
|
node: {
|
|
__dirname: false,
|
|
__filename: false,
|
|
},
|
|
entry: {
|
|
main: "./src/entry.ts",
|
|
},
|
|
optimization: {
|
|
minimize: false,
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.node$/,
|
|
loader: "node-loader",
|
|
},
|
|
],
|
|
},
|
|
plugins: [
|
|
new CopyWebpackPlugin({
|
|
patterns: [
|
|
"./src/package.json",
|
|
{ from: "./src/images", to: "images" },
|
|
{ from: "./src/locales", to: "locales" },
|
|
"../../node_modules/argon2-browser/dist/argon2.wasm",
|
|
"../../node_modules/argon2-browser/dist/argon2-simd.wasm",
|
|
],
|
|
}),
|
|
new EnvironmentPlugin({
|
|
FLAGS: envConfig.flags,
|
|
DEV_FLAGS: NODE_ENV === "development" ? envConfig.devFlags : {},
|
|
}),
|
|
],
|
|
externals: {
|
|
"electron-reload": "commonjs2 electron-reload",
|
|
"@bitwarden/desktop-native": "commonjs2 @bitwarden/desktop-native",
|
|
},
|
|
};
|
|
|
|
module.exports = merge(common, NODE_ENV === "development" ? dev : prod, main);
|