2025-12-22 09:18:21 +08:00
|
|
|
/**
|
|
|
|
|
* electron-builder afterPack hook
|
|
|
|
|
* Copies node_modules to the standalone directory in the packaged app
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
const { cpSync, existsSync } = require("fs")
|
|
|
|
|
const path = require("path")
|
|
|
|
|
|
2025-12-22 10:39:28 +09:00
|
|
|
module.exports = async (context) => {
|
2025-12-22 09:18:21 +08:00
|
|
|
const appOutDir = context.appOutDir
|
|
|
|
|
const resourcesDir = path.join(
|
|
|
|
|
appOutDir,
|
|
|
|
|
context.packager.platform.name === "mac"
|
|
|
|
|
? `${context.packager.appInfo.productFilename}.app/Contents/Resources`
|
2025-12-22 10:39:28 +09:00
|
|
|
: "resources",
|
2025-12-22 09:18:21 +08:00
|
|
|
)
|
|
|
|
|
const standaloneDir = path.join(resourcesDir, "standalone")
|
|
|
|
|
const sourceNodeModules = path.join(
|
|
|
|
|
context.packager.projectDir,
|
|
|
|
|
"electron-standalone",
|
2025-12-22 10:39:28 +09:00
|
|
|
"node_modules",
|
2025-12-22 09:18:21 +08:00
|
|
|
)
|
|
|
|
|
const targetNodeModules = path.join(standaloneDir, "node_modules")
|
|
|
|
|
|
|
|
|
|
console.log(`[afterPack] Copying node_modules to ${targetNodeModules}`)
|
|
|
|
|
|
|
|
|
|
if (existsSync(sourceNodeModules) && existsSync(standaloneDir)) {
|
|
|
|
|
cpSync(sourceNodeModules, targetNodeModules, { recursive: true })
|
|
|
|
|
console.log("[afterPack] node_modules copied successfully")
|
|
|
|
|
} else {
|
|
|
|
|
console.error("[afterPack] Source or target directory not found!")
|
2025-12-22 10:39:28 +09:00
|
|
|
console.error(
|
|
|
|
|
` Source: ${sourceNodeModules} exists: ${existsSync(sourceNodeModules)}`,
|
|
|
|
|
)
|
|
|
|
|
console.error(
|
|
|
|
|
` Target dir: ${standaloneDir} exists: ${existsSync(standaloneDir)}`,
|
|
|
|
|
)
|
2025-12-22 09:18:21 +08:00
|
|
|
throw new Error(
|
|
|
|
|
"[afterPack] Failed: Required directories not found. " +
|
2025-12-22 10:39:28 +09:00
|
|
|
"Ensure 'npm run electron:prepare' was run before building.",
|
2025-12-22 09:18:21 +08:00
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|