Notes/apps/server/webpack.config.cjs
2025-05-09 10:29:24 +03:00

85 lines
1.8 KiB
JavaScript

const { NxAppWebpackPlugin } = require('@nx/webpack/app-plugin');
const CopyPlugin = require('copy-webpack-plugin');
const { join } = require('path');
const outputDir = join(__dirname, 'dist');
function buildFilesToCopy() {
const files = [];
files.push({
from: "../client/dist",
to: join(outputDir, "public")
});
const nodePaths = [
"@excalidraw/excalidraw/dist/prod/fonts/",
"katex/dist",
"boxicons/css",
"boxicons/fonts",
"jquery/dist",
"jquery-hotkeys",
"autocomplete.js/dist",
"normalize.css/normalize.css",
"jquery.fancytree/dist",
"codemirror/lib",
"codemirror/addon",
"codemirror/mode",
"codemirror/keymap",
"@highlightjs/cdn-assets",
// Required as they are native dependencies and cannot be well bundled.
"better-sqlite3",
"bindings",
"file-uri-to-path"
];
for (const nodePath of nodePaths) {
files.push({
from: join("node_modules", nodePath),
to: join(outputDir, "node_modules", nodePath)
})
}
return files;
}
module.exports = {
output: {
path: outputDir
},
module: {
rules: [
{
test: /\.css$/i,
type: "asset/source"
}
]
},
plugins: [
new NxAppWebpackPlugin({
target: 'node',
compiler: 'tsc',
main: './src/main.ts',
tsConfig: './tsconfig.app.json',
assets: ["./src/assets"],
optimization: false,
outputHashing: 'none',
generatePackageJson: true,
additionalEntryPoints: [
"./src/docker_healthcheck.ts"
],
externalDependencies: [
"electron/main",
"@electron/remote/main",
"electron",
"@electron/remote",
"better-sqlite3"
]
}),
new CopyPlugin({
patterns: buildFilesToCopy()
})
]
};