This repository has been archived on 2022-02-28. You can view files and clone it, but cannot push or open issues or pull requests.
frontend-styles/webpack.config.js

95 lines
2.2 KiB
JavaScript

// Generated using webpack-cli https://github.com/webpack/webpack-cli
const webpack = require("webpack");
const package = require('./package.json');
const buildVersion = package.version;
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const WorkboxWebpackPlugin = require("workbox-webpack-plugin");
const isProduction = process.env.NODE_ENV == "production";
const minimiseCSS = isProduction ? "compressed" : "expanded";
const config = {
entry:{ "scripts": "./src/js/app.js",
"styles": "./src/scss/styles.scss"},
output: {
path: path.resolve(__dirname, "public"),
},
devServer: {
open: true,
host: "localhost",
},
optimization: {
minimize: false,
},
plugins: [
new HtmlWebpackPlugin({
template: "src/index.html",
}),
new webpack.BannerPlugin({
banner:
`@license https://www.gnu.org/licenses/gpl-3.0.en.html GNU General Public License \n@name [name][ext] by libregaming.org \n@version v${buildVersion}`
}),
// Add your plugins here
// Learn more about plugins from https://webpack.js.org/configuration/plugins/
],
module: {
rules: [
{
test: /\.(js|jsx)$/i,
loader: "babel-loader",
},
{
test: /\.s[ac]ss$/i,
use: [
{
loader: MiniCssExtractPlugin.loader
},
{
loader: "css-loader",
},
{
loader: 'sass-loader',
options: {
sassOptions: {
outputStyle: minimiseCSS,
}
}
},
],
},
{
test: /\.(eot|svg|ttf|woff|woff2|png|jpg|gif)$/i,
use: {
loader: "file-loader",
options: {
name: "[name].[ext]",
outputPath: "assets",
},
},
},
// Add your rules for custom modules here
// Learn more about loaders from https://webpack.js.org/loaders/
],
},
};
module.exports = () => {
if (isProduction) {
config.mode = "production";
config.plugins.push(new MiniCssExtractPlugin({
filename: "style.min.css",
}));
config.plugins.push(new WorkboxWebpackPlugin.GenerateSW());
} else {
config.plugins.push(new MiniCssExtractPlugin({
filename: "style.css",
}));
config.mode = "development";
}
return config;
};