Files
mocoapp-browser-extension/webpack.config.js
2019-02-05 18:47:13 +01:00

84 lines
2.1 KiB
JavaScript

const path = require("path")
const CleanWebpackPlugin = require("clean-webpack-plugin")
const HtmlWebpackPlugin = require("html-webpack-plugin")
const CopyWebpackPlugin = require("copy-webpack-plugin")
module.exports = {
entry: {
background: "./src/js/background.js",
content: "./src/js/content.js",
options: "./src/js/options.js",
popup: "./src/js/popup.js"
},
output: {
path: path.join(__dirname, "build"),
filename: "[name].js"
},
module: {
rules: [
{
test: /\.scss$/,
use: [
"style-loader",
"css-loader",
{
loader: "sass-loader",
options: {
includePaths: [path.join(__dirname, "src/css")]
}
}
],
exclude: /node_modules/
},
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.(png)$/,
loader: "file-loader",
options: {
name: "[path][name].[ext]"
},
exclude: /node_modules/
}
]
},
plugins: [
new CleanWebpackPlugin(["build"]),
new CopyWebpackPlugin([
{
from: "src/manifest.json",
transform: function(content, _path) {
// generates the manifest file using the package.json informations
return Buffer.from(
JSON.stringify({
description: process.env.npm_package_description,
version: process.env.npm_package_version,
...JSON.parse(content.toString())
})
)
}
}
]),
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"]
})
],
// webpack creates sourcemaps by default and evals js code
// this is not allowed by chrome extensions
// https://stackoverflow.com/a/49100966
devtool: "none",
mode: process.env.NODE_ENV || "development"
}