我们很多时侯需要编译到不同的平台,我们又不能一个平台弄一台计算机去编译,所以我们用交叉编译:
在electron中,我们先修改package.json,我只列出要修改的部分:
"build:win": "npm run build && electron-builder --win",
"build:mac": "npm run build && electron-builder --mac",
"build:linux": "npm run build && electron-builder --linux",
"build:winx64": "npm run build && electron-builder --win --x64",
"build:winarm64": "npm run build && electron-builder --win --arm64",
"build:macx64": "npm run build && electron-builder --mac --x64",
"build:macarm64": "npm run build && electron-builder --mac --arm64",
"build:linuxx64": "npm run build && electron-builder --linux --x64",
"build:linuxarm64": "npm run build && electron-builder --linux --arm64"
下面我们修改electron-builder.yml
appId: com.electron.app
productName: test
directories:
buildResources: build
files:
- '!**/.vscode/*'
- '!src/*'
- '!electron.vite.config.{js,ts,mjs,cjs}'
- '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}'
- '!{.env,.env.*,.npmrc,pnpm-lock.yaml}'
asarUnpack:
- resources/**
win:
icon: build/icon.ico
executableName: test
extraResources:
- from: resources/testrust.exe
to: ./
- from: resources/testdata.dll
to: ./
- from: resources/Microsoft.Data.SqlClient.SNI.dll
to: ./
- from: resources/icon.ico
to: ./
# Place nsis at the top level instead of nesting under win
nsis:
artifactName: '${name}-${version}-setup.${ext}'
shortcutName: '${productName}'
uninstallDisplayName: '${productName}'
createDesktopShortcut: always
mac:
icon: build/icon.icns
entitlementsInherit: build/entitlements.mac.plist
extraResources:
- from: resources/testrust
to: ./
- from: resources/testdata.dylib
to: ./
- from: resources/icon.icns
to: ./
extendInfo:
NSCameraUsageDescription: "Application requests access to the device's camera."
NSMicrophoneUsageDescription: "Application requests access to the device's microphone."
NSDocumentsFolderUsageDescription: "Application requests access to the user's Documents folder."
NSDownloadsFolderUsageDescription: "Application requests access to the user's Downloads folder."
notarize: false
dmg:
artifactName: '${name}-${version}.${ext}'
linux:
icon: build/icon.png
extraResources:
- from: resources/testrust
to: ./
- from: resources/testdata.so
to: ./
- from: resources/icon.png
to: ./
target:
- AppImage
- deb
maintainer: electronjs.org
category: Utility
appImage:
artifactName: '${name}-${version}.${ext}'
npmRebuild: false
publish:
provider: generic
url: 'https://example.com/auto-updates'