* refactor: replace afterPack script with beforePack and remove after-pack.js file - Updated electron-builder configuration to use beforePack instead of afterPack. - Removed the after-pack.js script as its functionality is no longer needed. * refactor: streamline filter logic for architecture-specific packages in before-pack script - Consolidated platform-specific filter conditions for arm64 and x64 architectures. - Improved readability and maintainability by using arrays to manage filters for different architectures. - Ensured that the correct filters are applied based on the architecture during the packaging process. * chore: remove npm build commands from CI workflows - Eliminated unnecessary `yarn build:npm` commands from the nightly build and release workflows for Linux, macOS, and Windows. - Streamlined the build process by focusing on platform-specific build commands. * delete build npm * refactor: enhance architecture-specific package management in before-pack script - Updated the before-pack script to include additional architecture-specific packages for arm64 and x64. - Improved the organization of package filters and streamlined the logic for handling different architectures during the packaging process. - Ensured that the correct filters are applied based on the architecture, enhancing the build process for various platforms. * docs: clarify comment on prebuild binaries in before-pack script * format code * chore: add afterPack script to electron-builder configuration - Included afterPack script in electron-builder.yml to enhance the packaging process. - This addition allows for post-packaging tasks to be executed, improving build automation. * chore: update macOS entitlements to disable library validation - Added the key `com.apple.security.cs.disable-library-validation` to the entitlements file to enhance security settings for macOS builds. * chore: remove unused package for win32 arm64 architecture - Deleted the `@strongtz/win32-arm64-msvc` package from `package.json` and `yarn.lock` as it is no longer needed. - Updated the `before-pack.js` script to improve architecture-specific package management by refining filter logic and ensuring correct package downloads based on architecture. - Enhanced the `downloadNpmPackage` function to use Node.js streams for downloading and extracting packages, improving efficiency and error handling.
98 lines
2.9 KiB
JavaScript
98 lines
2.9 KiB
JavaScript
const { Arch } = require('electron-builder')
|
|
const { downloadNpmPackage } = require('./utils')
|
|
|
|
// if you want to add new prebuild binaries packages with different architectures, you can add them here
|
|
// please add to allX64 and allArm64 from yarn.lock
|
|
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-linuxmusl-arm64': '0.34.3',
|
|
|
|
'@img/sharp-libvips-darwin-arm64': '1.2.0',
|
|
'@img/sharp-libvips-linux-arm64': '1.2.0',
|
|
'@img/sharp-libvips-linuxmusl-arm64': '1.2.0',
|
|
|
|
'@libsql/darwin-arm64': '0.4.7',
|
|
'@libsql/linux-arm64-gnu': '0.4.7',
|
|
'@libsql/linux-arm64-musl': '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-linuxmusl-x64': '0.34.3',
|
|
'@img/sharp-win32-x64': '0.34.3',
|
|
|
|
'@img/sharp-libvips-darwin-x64': '1.2.0',
|
|
'@img/sharp-libvips-linux-x64': '1.2.0',
|
|
'@img/sharp-libvips-linuxmusl-x64': '1.2.0',
|
|
|
|
'@libsql/darwin-x64': '0.4.7',
|
|
'@libsql/linux-x64-gnu': '0.4.7',
|
|
'@libsql/linux-x64-musl': '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 platformToArch = {
|
|
mac: 'darwin',
|
|
windows: 'win32',
|
|
linux: 'linux'
|
|
}
|
|
|
|
exports.default = async function (context) {
|
|
const arch = context.arch
|
|
const archType = arch === Arch.arm64 ? 'arm64' : 'x64'
|
|
const platform = context.packager.platform.name
|
|
|
|
const arm64Filters = Object.keys(allArm64).map((f) => '!node_modules/' + f + '/**')
|
|
const x64Filters = Object.keys(allX64).map((f) => '!node_modules/' + f + '/*')
|
|
|
|
const downloadPackages = async (packages) => {
|
|
console.log('downloading packages ......')
|
|
const downloadPromises = []
|
|
|
|
for (const name of Object.keys(packages)) {
|
|
if (name.includes(`${platformToArch[platform]}`) && name.includes(`-${archType}`)) {
|
|
downloadPromises.push(
|
|
downloadNpmPackage(
|
|
name,
|
|
`https://registry.npmjs.org/${name}/-/${name.split('/').pop()}-${packages[name]}.tgz`
|
|
)
|
|
)
|
|
}
|
|
}
|
|
|
|
await Promise.all(downloadPromises)
|
|
}
|
|
|
|
const changeFilters = async (packages, filtersToExclude, filtersToInclude) => {
|
|
await downloadPackages(packages)
|
|
// 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)
|
|
|
|
context.packager.config.files[0].filter = filters
|
|
}
|
|
|
|
if (arch === Arch.arm64) {
|
|
await changeFilters(allArm64, x64Filters, arm64Filters)
|
|
return
|
|
}
|
|
|
|
if (arch === Arch.x64) {
|
|
await changeFilters(allX64, arm64Filters, x64Filters)
|
|
return
|
|
}
|
|
}
|