var webpack = require("webpack"), path = require("path"), fileSystem = require("fs"), env = require("./utils/env"), CleanWebpackPlugin = require("clean-webpack-plugin"), CopyWebpackPlugin = require("copy-webpack-plugin"), HtmlWebpackPlugin = require("html-webpack-plugin"), WriteFilePlugin = require("write-file-webpack-plugin"), WebpackExtensionManifestPlugin = require("webpack-extension-manifest-plugin"); const pkg = require('./package.json'); const baseManifest = require('./src/manifest.json'); // load the secrets var alias = {}; var secretsPath = path.join(__dirname, ("secrets." + env.NODE_ENV + ".js")); var fileExtensions = ["jpg", "jpeg", "png", "gif", "eot", "otf", "svg", "ttf", "woff", "woff2"]; if (fileSystem.existsSync(secretsPath)) { alias["secrets"] = secretsPath; } var options = { mode: 'development', entry: { popup: path.join(__dirname, "src", "js", "popup.js"), options: path.join(__dirname, "src", "js", "options.js"), background: path.join(__dirname, "src", "js", "background.js") }, output: { path: path.join(__dirname, "build"), filename: "[name].bundle.js" }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: 'babel-loader', } }, { test: /\.css$/, loader: "style-loader!css-loader", exclude: /node_modules/ }, { test: new RegExp('\.(' + fileExtensions.join('|') + ')$'), loader: "file-loader?name=[name].[ext]", exclude: /node_modules/ }, { test: /\.html$/, loader: "html-loader", exclude: /node_modules/ } ] }, resolve: { alias: alias }, plugins: [ // clean the build folder new CleanWebpackPlugin(["build/*"]), new CopyWebpackPlugin([ { from: 'src/img/unicorn.png' }, ]), // expose and write the allowed env vars on the compiled bundle new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify(env.NODE_ENV) }), new WebpackExtensionManifestPlugin({ config: { base: baseManifest, extend: { version: pkg.version, description: pkg.description, } } }), new HtmlWebpackPlugin({ template: path.join(__dirname, "src", "popup.html"), filename: "popup.html", chunks: ["popup"], }), new HtmlWebpackPlugin({ template: path.join(__dirname, "src", "options.html"), filename: "options.html", chunks: ["options"] }), new HtmlWebpackPlugin({ template: path.join(__dirname, "src", "background.html"), filename: "background.html", chunks: ["background"] }), new WriteFilePlugin() ] }; if (env.NODE_ENV === "development") { options.devtool = "cheap-module-eval-source-map"; } module.exports = options;