import fs from "fs-extra"; import path from "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(13); 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); } const copy = async () => { for (const srcFile of fs.readdirSync("build")) { const destFile = path.join(DEST_DIR, path.basename(srcFile)); console.log(`Copying source ${srcFile} -> ${destFile}.`); fs.copySync(path.join("build", srcFile), destFile, { recursive: true }); } const filesToCopy = ["config-sample.ini"]; for (const file of filesToCopy) { console.log(`Copying ${file}`); await fs.copy(file, path.join(DEST_DIR, file)); } const dirsToCopy = ["images", "libraries", "db"]; for (const dir of dirsToCopy) { console.log(`Copying ${dir}`); await fs.copy(dir, path.join(DEST_DIR, dir)); } const srcDirsToCopy = ["./src/public", "./src/views", "./build"]; for (const dir of srcDirsToCopy) { console.log(`Copying ${dir}`); await fs.copy(dir, path.join(DEST_DIR_SRC, path.basename(dir))); } const nodeModulesFile = [ "node_modules/react/umd/react.production.min.js", "node_modules/react/umd/react.development.js", "node_modules/react-dom/umd/react-dom.production.min.js", "node_modules/react-dom/umd/react-dom.development.js", "node_modules/katex/dist/katex.min.js", "node_modules/katex/dist/contrib/mhchem.min.js", "node_modules/katex/dist/contrib/auto-render.min.js", ]; for (const file of nodeModulesFile) { await copyNodeModuleFileOrFolder(file); } const nodeModulesFolder = [ "node_modules/@excalidraw/excalidraw/dist/", "node_modules/katex/dist/", "node_modules/dayjs/", "node_modules/force-graph/dist/", "node_modules/boxicons/css/", "node_modules/boxicons/fonts/", "node_modules/mermaid/dist/", "node_modules/jquery/dist/", "node_modules/jquery-hotkeys/", "node_modules/print-this/", "node_modules/split.js/dist/", "node_modules/panzoom/dist/", "node_modules/i18next/", "node_modules/i18next-http-backend/" ]; for (const folder of nodeModulesFolder) { await copyNodeModuleFileOrFolder(folder); } }; copy() .then(() => console.log("Copying complete!")) .catch((err) => console.error("Error during copy:", err));