chore: update package.json and pnpm-lock.yaml with new architecture-specific dependencies

- Added new architecture-specific dependencies for image processing and database support in package.json and pnpm-lock.yaml.
- Updated the before-pack script to streamline package installation logic based on architecture and platform.
- Enhanced the exclusion logic for packages to improve build efficiency across different architectures.
This commit is contained in:
kangfenmao 2026-01-08 12:15:13 +08:00
parent cb81f72d03
commit 40fe6f2c08
3 changed files with 161 additions and 91 deletions

View File

@ -411,7 +411,27 @@
"yjs": "^13.6.27",
"youtubei.js": "^15.0.1",
"zipread": "^1.3.3",
"zod": "^4.1.5"
"zod": "^4.1.5",
"@img/sharp-darwin-arm64": "0.34.3",
"@img/sharp-darwin-x64": "0.34.3",
"@img/sharp-linux-arm64": "0.34.3",
"@img/sharp-linux-x64": "0.34.3",
"@img/sharp-win32-arm64": "0.34.3",
"@img/sharp-win32-x64": "0.34.3",
"@img/sharp-libvips-darwin-arm64": "1.2.4",
"@img/sharp-libvips-darwin-x64": "1.2.4",
"@img/sharp-libvips-linux-arm64": "1.2.4",
"@img/sharp-libvips-linux-x64": "1.2.4",
"@libsql/darwin-arm64": "0.4.7",
"@libsql/darwin-x64": "0.4.7",
"@libsql/linux-arm64-gnu": "0.4.7",
"@libsql/linux-x64-gnu": "0.4.7",
"@libsql/win32-x64-msvc": "0.4.7",
"@strongtz/win32-arm64-msvc": "0.4.7",
"@napi-rs/system-ocr-darwin-arm64": "1.0.2",
"@napi-rs/system-ocr-darwin-x64": "1.0.2",
"@napi-rs/system-ocr-win32-arm64-msvc": "1.0.2",
"@napi-rs/system-ocr-win32-x64-msvc": "1.0.2"
},
"pnpm": {
"overrides": {

132
pnpm-lock.yaml generated
View File

@ -325,6 +325,36 @@ importers:
'@hello-pangea/dnd':
specifier: ^18.0.1
version: 18.0.1(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@img/sharp-darwin-arm64':
specifier: 0.34.3
version: 0.34.3
'@img/sharp-darwin-x64':
specifier: 0.34.3
version: 0.34.3
'@img/sharp-libvips-darwin-arm64':
specifier: 1.2.4
version: 1.2.4
'@img/sharp-libvips-darwin-x64':
specifier: 1.2.4
version: 1.2.4
'@img/sharp-libvips-linux-arm64':
specifier: 1.2.4
version: 1.2.4
'@img/sharp-libvips-linux-x64':
specifier: 1.2.4
version: 1.2.4
'@img/sharp-linux-arm64':
specifier: 0.34.3
version: 0.34.3
'@img/sharp-linux-x64':
specifier: 0.34.3
version: 0.34.3
'@img/sharp-win32-arm64':
specifier: 0.34.3
version: 0.34.3
'@img/sharp-win32-x64':
specifier: 0.34.3
version: 0.34.3
'@kangfenmao/keyv-storage':
specifier: ^0.1.3
version: 0.1.3
@ -340,6 +370,21 @@ importers:
'@langchain/textsplitters':
specifier: 0.1.0
version: 0.1.0(@langchain/core@1.0.2(patch_hash=8dc787a82cebafe8b23c8826f25f29aca64fc8b43a0a1878e0010782e4da96ed)(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.15.0(ws@8.18.3)(zod@4.3.4)))
'@libsql/darwin-arm64':
specifier: 0.4.7
version: 0.4.7
'@libsql/darwin-x64':
specifier: 0.4.7
version: 0.4.7
'@libsql/linux-arm64-gnu':
specifier: 0.4.7
version: 0.4.7
'@libsql/linux-x64-gnu':
specifier: 0.4.7
version: 0.4.7
'@libsql/win32-x64-msvc':
specifier: 0.4.7
version: 0.4.7
'@mistralai/mistralai':
specifier: ^1.7.5
version: 1.11.0
@ -349,6 +394,18 @@ importers:
'@mozilla/readability':
specifier: ^0.6.0
version: 0.6.0
'@napi-rs/system-ocr-darwin-arm64':
specifier: 1.0.2
version: 1.0.2
'@napi-rs/system-ocr-darwin-x64':
specifier: 1.0.2
version: 1.0.2
'@napi-rs/system-ocr-win32-arm64-msvc':
specifier: 1.0.2
version: 1.0.2
'@napi-rs/system-ocr-win32-x64-msvc':
specifier: 1.0.2
version: 1.0.2
'@notionhq/client':
specifier: ^2.2.15
version: 2.3.0(encoding@0.1.13)
@ -391,6 +448,9 @@ importers:
'@shikijs/markdown-it':
specifier: ^3.12.0
version: 3.20.0
'@strongtz/win32-arm64-msvc':
specifier: 0.4.7
version: 0.4.7
'@swc/core':
specifier: ^1.15.8
version: 1.15.8
@ -2493,16 +2553,31 @@ packages:
cpu: [arm64]
os: [darwin]
'@img/sharp-libvips-darwin-arm64@1.2.4':
resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
cpu: [arm64]
os: [darwin]
'@img/sharp-libvips-darwin-x64@1.2.0':
resolution: {integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==}
cpu: [x64]
os: [darwin]
'@img/sharp-libvips-darwin-x64@1.2.4':
resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
cpu: [x64]
os: [darwin]
'@img/sharp-libvips-linux-arm64@1.2.0':
resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==}
cpu: [arm64]
os: [linux]
'@img/sharp-libvips-linux-arm64@1.2.4':
resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
cpu: [arm64]
os: [linux]
'@img/sharp-libvips-linux-arm@1.2.0':
resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==}
cpu: [arm]
@ -2523,6 +2598,11 @@ packages:
cpu: [x64]
os: [linux]
'@img/sharp-libvips-linux-x64@1.2.4':
resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
cpu: [x64]
os: [linux]
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
cpu: [arm64]
@ -4486,6 +4566,11 @@ packages:
'@standard-schema/utils@0.3.0':
resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==}
'@strongtz/win32-arm64-msvc@0.4.7':
resolution: {integrity: sha512-LMU0CVfKGxKzIUawkDw6pwCNFb64DSwqEQhVAfEdLGMZcvVIdJghWB9yMW+72DHzALpwHscIssAJGhYAT4AbfA==}
cpu: [arm64]
os: [win32]
'@svta/common-media-library@0.17.4':
resolution: {integrity: sha512-nP/KThzQW5FZKdc9V7ICTa9/A7xGw66VQoLPYOEwwMZTTrISp1zIQAX4KAYJw2PN/VPnxJQJXIYbzZTXgMHctw==}
engines: {node: '>=20'}
@ -14435,22 +14520,26 @@ snapshots:
'@img/sharp-darwin-arm64@0.34.3':
optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.2.0
optional: true
'@img/sharp-darwin-x64@0.34.3':
optionalDependencies:
'@img/sharp-libvips-darwin-x64': 1.2.0
optional: true
'@img/sharp-libvips-darwin-arm64@1.2.0':
optional: true
'@img/sharp-libvips-darwin-arm64@1.2.4': {}
'@img/sharp-libvips-darwin-x64@1.2.0':
optional: true
'@img/sharp-libvips-darwin-x64@1.2.4': {}
'@img/sharp-libvips-linux-arm64@1.2.0':
optional: true
'@img/sharp-libvips-linux-arm64@1.2.4': {}
'@img/sharp-libvips-linux-arm@1.2.0':
optional: true
@ -14463,6 +14552,8 @@ snapshots:
'@img/sharp-libvips-linux-x64@1.2.0':
optional: true
'@img/sharp-libvips-linux-x64@1.2.4': {}
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
optional: true
@ -14478,7 +14569,6 @@ snapshots:
'@img/sharp-linux-arm64@0.34.3':
optionalDependencies:
'@img/sharp-libvips-linux-arm64': 1.2.0
optional: true
'@img/sharp-linux-arm@0.34.3':
optionalDependencies:
@ -14498,7 +14588,6 @@ snapshots:
'@img/sharp-linux-x64@0.34.3':
optionalDependencies:
'@img/sharp-libvips-linux-x64': 1.2.0
optional: true
'@img/sharp-linuxmusl-arm64@0.33.5':
optionalDependencies:
@ -14525,14 +14614,12 @@ snapshots:
'@emnapi/runtime': 1.8.0
optional: true
'@img/sharp-win32-arm64@0.34.3':
optional: true
'@img/sharp-win32-arm64@0.34.3': {}
'@img/sharp-win32-ia32@0.34.3':
optional: true
'@img/sharp-win32-x64@0.34.3':
optional: true
'@img/sharp-win32-x64@0.34.3': {}
'@inquirer/ansi@1.0.2': {}
@ -14883,11 +14970,9 @@ snapshots:
dependencies:
js-base64: 3.7.7
'@libsql/darwin-arm64@0.4.7':
optional: true
'@libsql/darwin-arm64@0.4.7': {}
'@libsql/darwin-x64@0.4.7':
optional: true
'@libsql/darwin-x64@0.4.7': {}
'@libsql/hrana-client@0.7.0':
dependencies:
@ -14909,20 +14994,17 @@ snapshots:
- bufferutil
- utf-8-validate
'@libsql/linux-arm64-gnu@0.4.7':
optional: true
'@libsql/linux-arm64-gnu@0.4.7': {}
'@libsql/linux-arm64-musl@0.4.7':
optional: true
'@libsql/linux-x64-gnu@0.4.7':
optional: true
'@libsql/linux-x64-gnu@0.4.7': {}
'@libsql/linux-x64-musl@0.4.7':
optional: true
'@libsql/win32-x64-msvc@0.4.7':
optional: true
'@libsql/win32-x64-msvc@0.4.7': {}
'@malept/cross-spawn-promise@2.0.0':
dependencies:
@ -15018,17 +15100,13 @@ snapshots:
hls.js: 1.6.15
mux-embed: 5.15.0
'@napi-rs/system-ocr-darwin-arm64@1.0.2':
optional: true
'@napi-rs/system-ocr-darwin-arm64@1.0.2': {}
'@napi-rs/system-ocr-darwin-x64@1.0.2':
optional: true
'@napi-rs/system-ocr-darwin-x64@1.0.2': {}
'@napi-rs/system-ocr-win32-arm64-msvc@1.0.2':
optional: true
'@napi-rs/system-ocr-win32-arm64-msvc@1.0.2': {}
'@napi-rs/system-ocr-win32-x64-msvc@1.0.2':
optional: true
'@napi-rs/system-ocr-win32-x64-msvc@1.0.2': {}
'@napi-rs/system-ocr@1.0.2(patch_hash=aa1a73e445ee644774745b620589bb99d85bee6c95cc2a91fe9137e580da5bde)':
optionalDependencies:
@ -16187,6 +16265,8 @@ snapshots:
'@standard-schema/utils@0.3.0': {}
'@strongtz/win32-arm64-msvc@0.4.7': {}
'@svta/common-media-library@0.17.4': {}
'@swc/core-darwin-arm64@1.15.8':

View File

@ -1,39 +1,31 @@
const { Arch } = require('electron-builder')
const { execSync } = require('child_process')
const { xor } = require('lodash')
// if you want to add new prebuild binaries packages with different architectures, you can add them here
// please add to allX64 and allArm64 from pnpm-lock.yaml
const allArm64 = {
'@img/sharp-darwin-arm64': '0.34.3',
'@img/sharp-win32-arm64': '0.34.3',
'@img/sharp-linux-arm64': '0.34.3',
'@img/sharp-libvips-darwin-arm64': '1.2.4',
'@img/sharp-libvips-linux-arm64': '1.2.4',
'@libsql/darwin-arm64': '0.4.7',
'@libsql/linux-arm64-gnu': '0.4.7',
'@strongtz/win32-arm64-msvc': '0.4.7',
'@napi-rs/system-ocr-darwin-arm64': '1.0.2',
'@napi-rs/system-ocr-win32-arm64-msvc': '1.0.2'
}
const allX64 = {
'@img/sharp-darwin-x64': '0.34.3',
'@img/sharp-linux-x64': '0.34.3',
'@img/sharp-win32-x64': '0.34.3',
'@img/sharp-libvips-darwin-x64': '1.2.4',
'@img/sharp-libvips-linux-x64': '1.2.4',
'@libsql/darwin-x64': '0.4.7',
'@libsql/linux-x64-gnu': '0.4.7',
'@libsql/win32-x64-msvc': '0.4.7',
'@napi-rs/system-ocr-darwin-x64': '1.0.2',
'@napi-rs/system-ocr-win32-x64-msvc': '1.0.2'
}
const packages = [
'@img/sharp-darwin-arm64',
'@img/sharp-darwin-x64',
'@img/sharp-linux-arm64',
'@img/sharp-linux-x64',
'@img/sharp-win32-arm64',
'@img/sharp-win32-x64',
'@img/sharp-libvips-darwin-arm64',
'@img/sharp-libvips-darwin-x64',
'@img/sharp-libvips-linux-arm64',
'@img/sharp-libvips-linux-x64',
'@libsql/darwin-arm64',
'@libsql/darwin-x64',
'@libsql/linux-arm64-gnu',
'@libsql/linux-x64-gnu',
'@libsql/win32-x64-msvc',
'@napi-rs/system-ocr-darwin-arm64',
'@napi-rs/system-ocr-darwin-x64',
'@napi-rs/system-ocr-win32-arm64-msvc',
'@napi-rs/system-ocr-win32-x64-msvc',
'@strongtz/win32-arm64-msvc'
]
const platformToArch = {
mac: 'darwin',
@ -46,46 +38,24 @@ exports.default = async function (context) {
const platformName = context.packager.platform.name
const platform = platformToArch[platformName]
const downloadPackages = async (packages) => {
// Skip if target architecture matches current system architecture
if (arch === process.arch) {
console.log(`Skipping install: target architecture (${arch}) matches current system`)
return
}
console.log('installing packages ......')
const packagesToInstall = []
for (const name of Object.keys(packages)) {
if (name.includes(`${platform}`) && name.includes(`-${arch}`)) {
packagesToInstall.push(`${name}@${packages[name]}`)
}
}
if (packagesToInstall.length > 0) {
console.log('Installing:', packagesToInstall.join(' '))
execSync(
`pnpm install --config.platform=${platform} --config.architecture=${arch} ${packagesToInstall.join(' ')}`,
{ stdio: 'inherit' }
)
}
}
const changeFilters = async (filtersToExclude, filtersToInclude) => {
const excludePackages = async (packagesToExclude) => {
// remove filters for the target architecture (allow inclusion)
let filters = context.packager.config.files[0].filter
filters = filters.filter((filter) => !filtersToInclude.includes(filter))
// add filters for other architectures (exclude them)
filters.push(...filtersToExclude)
filters.push(...packagesToExclude)
context.packager.config.files[0].filter = filters
}
await downloadPackages(context.arch === Arch.arm64 ? allArm64 : allX64)
const arm64Packages = packages.filter((p) => p.includes('arm64')).filter((p) => p.includes(platform))
const x64Packages = packages.filter((p) => p.includes('x64')).filter((p) => p.includes(platform))
const arm64Filters = Object.keys(allArm64).map((f) => '!node_modules/' + f + '/**')
const x64Filters = Object.keys(allX64).map((f) => '!node_modules/' + f + '/**')
const arm64ExcludePackages = xor(packages, x64Packages).map((p) => '!node_modules/' + p + '/**')
const x64ExcludePackages = xor(packages, arm64Packages).map((p) => '!node_modules/' + p + '/**')
console.log('Exclude packages for arm64', arm64ExcludePackages)
console.log('Exclude packages for x64', x64ExcludePackages)
const excludeRipgrepFilters = ['arm64-darwin', 'arm64-linux', 'x64-darwin', 'x64-linux', 'x64-win32']
.filter((f) => {
@ -98,8 +68,8 @@ exports.default = async function (context) {
.map((f) => '!node_modules/@anthropic-ai/claude-agent-sdk/vendor/ripgrep/' + f + '/**')
if (context.arch === Arch.arm64) {
await changeFilters([...x64Filters, ...excludeRipgrepFilters], arm64Filters)
await excludePackages([...arm64ExcludePackages, ...excludeRipgrepFilters])
} else {
await changeFilters([...arm64Filters, ...excludeRipgrepFilters], x64Filters)
await excludePackages([...x64ExcludePackages, ...excludeRipgrepFilters])
}
}