Notes/webpack.config.ts
Panagiotis Papadopoulos 745b294ca1 build(webpack): output webpack build in build folder
output the bundled files directly in the build folder
a) keeps the src folder clean from build output
b) it saves us some "manual" copying work
2025-03-07 23:14:56 +01:00

83 lines
2.6 KiB
TypeScript

import { fileURLToPath } from "url";
import path from "path";
import autoprefixer from "autoprefixer";
import assetPath from "./src/services/asset_path.js";
import miniCssExtractPlugin from "mini-css-extract-plugin";
import type { Configuration } from "webpack";
const rootDir = path.dirname(fileURLToPath(import.meta.url));
const config: Configuration = {
mode: "production",
entry: {
setup: "./src/public/app/setup.js",
login: "./src/public/app/login.js",
mobile: "./src/public/app/mobile.js",
desktop: "./src/public/app/desktop.js",
share: "./src/public/app/share.js",
// TriliumNextTODO: integrate set_password into setup entry point/view
set_password: "./src/public/app/set_password.js"
},
output: {
publicPath: `${assetPath}/app-dist/`,
path: path.resolve(rootDir, "build/src/public/app-dist"),
filename: "[name].js"
},
plugins: [
new miniCssExtractPlugin({
// TriliumNextTODO: enable this, once webpack build outputs into the "build" folder, instead of "src/public/app-dist" folder => @pano9000
//filename: "../stylesheets/[name].css"
})
],
module: {
rules: [
{
test: /\.ts$/,
use: [
{
loader: "ts-loader",
options: {
configFile: path.join(rootDir, "tsconfig.webpack.json")
}
}
],
exclude: /node_modules/
},
{
// bootstrap CSS related configuration
test: /\.(scss)$/,
use: [
{
loader: miniCssExtractPlugin.loader
},
{
loader: "css-loader"
},
{
loader: "postcss-loader",
options: {
postcssOptions: {
plugins: [autoprefixer]
}
}
},
{
loader: "sass-loader"
}
]
}
]
},
resolve: {
extensions: [".ts", ".js"],
extensionAlias: {
".js": [".js", ".ts"],
".cjs": [".cjs", ".cts"],
".mjs": [".mjs", ".mts"]
}
},
devtool: "source-map",
target: "electron-renderer"
};
export default config;