mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-27 18:12:29 +08:00
106 lines
3.2 KiB
TypeScript
106 lines
3.2 KiB
TypeScript
import fs = require("fs-extra");
|
|
import path = require("path");
|
|
|
|
const DEST_DIR = "./dist";
|
|
const DEST_DIR_SRC = path.join(DEST_DIR, "src");
|
|
const DEST_DIR_NODE_MODULES = path.join(DEST_DIR, "node_modules");
|
|
|
|
async function copyNodeModuleFileOrFolder(source: string) {
|
|
const adjustedSource = source.substring(source.indexOf("node_modules") + "node_modules".length);
|
|
const destination = path.join(DEST_DIR_NODE_MODULES, adjustedSource);
|
|
|
|
console.log(`Copying ${source} to ${destination}`);
|
|
await fs.ensureDir(path.dirname(destination));
|
|
await fs.copy(source, destination);
|
|
}
|
|
|
|
/**
|
|
* Removes all "../" components from a given path.
|
|
*
|
|
* @param path the path with relative components
|
|
* @returns the modified path.
|
|
*/
|
|
function trimRelativePath(path: string) {
|
|
return path.replace(/\.\.\//g, "")
|
|
}
|
|
|
|
async function copyFiles() {
|
|
const filesToCopy = ["../server/config-sample.ini"];
|
|
for (const file of filesToCopy) {
|
|
console.log(`Copying ${file}`);
|
|
await fs.copy(file, path.join(DEST_DIR, trimRelativePath(file)));
|
|
}
|
|
}
|
|
|
|
async function copyDirs() {
|
|
const dirsToCopy = [
|
|
"../common/images",
|
|
"../client/src",
|
|
"../client/libraries",
|
|
"../server/src/views",
|
|
"../server/db"];
|
|
for (const dir of dirsToCopy) {
|
|
const destPath = path.join(DEST_DIR, trimRelativePath(dir));
|
|
console.log(`Copying ${dir} -> ${destPath}`);
|
|
await fs.copy(dir, destPath);
|
|
}
|
|
}
|
|
|
|
async function copyNodeModules() {
|
|
const nodeModulesFile = [
|
|
"../client/node_modules/react/umd/react.production.min.js",
|
|
"../client/node_modules/react/umd/react.development.js",
|
|
"../client/node_modules/react-dom/umd/react-dom.production.min.js",
|
|
"../client/node_modules/react-dom/umd/react-dom.development.js",
|
|
"../client/node_modules/katex/dist/katex.min.js",
|
|
"../client/node_modules/katex/dist/contrib/mhchem.min.js",
|
|
"../client/node_modules/katex/dist/contrib/auto-render.min.js",
|
|
];
|
|
|
|
for (const file of nodeModulesFile) {
|
|
await copyNodeModuleFileOrFolder(file);
|
|
}
|
|
|
|
const nodeModulesFolder = [
|
|
"../client/node_modules/@excalidraw/excalidraw/dist/",
|
|
"../client/node_modules/katex/dist/",
|
|
"../client/node_modules/dayjs/",
|
|
"../client/node_modules/force-graph/dist/",
|
|
"../client/node_modules/boxicons/css/",
|
|
"../client/node_modules/boxicons/fonts/",
|
|
"../client/node_modules/mermaid/dist/",
|
|
"../client/node_modules/jquery/dist/",
|
|
"../client/node_modules/jquery-hotkeys/",
|
|
"../client/node_modules/print-this/",
|
|
"../client/node_modules/split.js/dist/",
|
|
"../client/node_modules/panzoom/dist/",
|
|
];
|
|
|
|
for (const folder of nodeModulesFolder) {
|
|
await copyNodeModuleFileOrFolder(folder);
|
|
}
|
|
}
|
|
|
|
async function copyServerNodeModules() {
|
|
const ignoredNodeModules = [
|
|
"better-sqlite3"
|
|
];
|
|
|
|
const baseDir = "../server/node_modules";
|
|
for (const folder of fs.readdirSync(baseDir)) {
|
|
if (!ignoredNodeModules.includes(folder)) {
|
|
await copyNodeModuleFileOrFolder(path.join(baseDir, folder));
|
|
}
|
|
}
|
|
}
|
|
|
|
try {
|
|
copyFiles();
|
|
copyDirs();
|
|
copyNodeModules();
|
|
copyServerNodeModules();
|
|
console.log("Copying complete!");
|
|
} catch (err: unknown) {
|
|
console.error("Error during copy:", err);
|
|
process.exit(1);
|
|
} |