TidGi-Desktop/scripts/beforeAsar.ts
2025-10-08 23:19:47 +08:00

46 lines
1.5 KiB
TypeScript

/**
* Remove unnecessary directories before creating asar archive
* Based on https://ganeshrvel.medium.com/electron-builder-afterpack-configuration-5c2c986be665
* Adapted for electron forge https://github.com/electron-userland/electron-forge/issues/2248
*/
import fs from 'fs-extra';
import path from 'path';
/**
* Running beforeAsar hook
* Note: This must be a non-async function that accepts a callback for Electron Packager compatibility
* @param buildPath /var/folders/qj/7j0zx32d0l75zmnrl1w3m3b80000gn/T/electron-packager/darwin-x64/TidGi-darwin-x64/Electron.app/Contents/Resources/app
* @param electronVersion 12.0.6
* @param platform darwin
* @param arch x64
* @param callback Callback to signal completion
*/
export default (
buildPath: string,
_electronVersion: string,
_platform: string,
_arch: string,
callback: () => void,
): void => {
const cwd = path.resolve(buildPath, '..');
const pathsToRemove = ['.webpack/main/localization/', '.webpack/main/native_modules/dist/', '.webpack/out/'].map((directory) => path.join(cwd, directory));
// Execute async operations and call callback when done
Promise.all(
pathsToRemove.map(async (directory) => {
try {
await fs.remove(directory);
} catch (error: unknown) {
console.error(error);
}
}),
)
.then(() => {
/** complete this hook */
callback();
})
.catch((error: unknown) => {
console.error('Error in beforeAsar hook:', error);
callback();
});
};