diff --git a/package.json b/package.json index 1de4f95..e52bafc 100644 --- a/package.json +++ b/package.json @@ -194,6 +194,7 @@ "!node_modules/**/test/**/*", "!node_modules/**/docs/**/*", "!node_modules/**/examples/**/*", + "!node_modules/.vite/**/*", "!node_modules/**/{linux,darwin,mac,android,ios,armhf,armv7l,ia32,wasm}/**/*", "!node_modules/**/*.so", "!node_modules/**/*.dylib", diff --git a/scripts/electron-builder.config.cjs b/scripts/electron-builder.config.cjs index 6bd1c7f..019aa2c 100644 --- a/scripts/electron-builder.config.cjs +++ b/scripts/electron-builder.config.cjs @@ -3,6 +3,15 @@ const pkg = require('../package.json') const target = process.env.CIPHERTALK_BUILD_TARGET const base = pkg.build || {} +function appendUnique(items = [], extras = []) { + return [...new Set([...(items || []), ...extras])] +} + +function withoutItems(items = [], values = []) { + const blacklist = new Set(values) + return (items || []).filter(item => !blacklist.has(item)) +} + function getExtraResources(buildTarget) { const common = [ { @@ -70,8 +79,43 @@ function getExtraFiles(buildTarget) { return [] } +function getFiles(buildTarget) { + const baseFiles = Array.isArray(base.files) ? [...base.files] : [] + const commonFiles = [ + '!node_modules/.vite/**/*' + ] + + if (buildTarget === 'win') { + return appendUnique( + withoutItems(baseFiles, ['node_modules/koffi/build/**/*']), + [ + ...commonFiles, + '!node_modules/onnxruntime-node/bin/**/win32/arm64/**/*', + 'node_modules/koffi/build/koffi/win32_x64/**/*' + ] + ) + } + + return appendUnique(baseFiles, commonFiles) +} + +function getAsarUnpack(buildTarget) { + const baseAsarUnpack = Array.isArray(base.asarUnpack) ? [...base.asarUnpack] : [] + + if (buildTarget === 'win') { + return appendUnique( + withoutItems(baseAsarUnpack, ['node_modules/koffi/**/*']), + ['node_modules/koffi/build/koffi/win32_x64/**/*'] + ) + } + + return baseAsarUnpack +} + module.exports = { ...base, + files: getFiles(target), + asarUnpack: getAsarUnpack(target), extraResources: getExtraResources(target), extraFiles: getExtraFiles(target) }