/* Credit: https://github.com/paulmwatson/web-ext-environments.git */ const CopyPlugin = require('copy-webpack-plugin'); const DotenvPlugin = require('dotenv-webpack'); const replaceWithProcessEnv = require('./replace-with-process-env.js'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const path = require('path'); const env = process.env.EXT_ENV || 'local'; module.exports = () => { const dotenvPath = __dirname + '/.env.' + env; const envVars = require('dotenv').config({ path: dotenvPath }).parsed; return { entry: path.resolve(__dirname, 'src') + '/scripts/background.js', mode: (process.env.EXT_ENV === 'production') ? 'production' : 'development', devtool: (process.env.EXT_ENV === 'production') ? undefined : 'source-map', output: { filename: 'scripts/background.js', path: path.resolve(__dirname, 'dist') }, plugins: [ new CleanWebpackPlugin(), new DotenvPlugin( { path: dotenvPath } ), new CopyPlugin( { patterns: [ { from: 'src/manifest.json', transform (content) { return replaceWithProcessEnv(content.toString(), envVars); } }, { from: 'src/images', to: 'images' }, { from: 'src/scripts', to: 'scripts' }, { from: 'src/styles', to: 'styles' }, { from: 'src/fonts', to: 'fonts' }, { from: 'src/views', to: 'views' }, { from: 'src/_locales', to: '_locales' } ] } ) ] }; };