如何在Linux上构建搭载Prisma的Windows端Electron安装包
Linux构建服务器跨平台打包Electron的Prisma多引擎配置方案
我们的目标是在Linux构建服务器上,为Electron应用同时构建Linux、Windows版本的安装包。安装Wine后,整体构建流程基本可正常运行,但Prisma相关环节存在适配问题:Prisma依赖操作系统专属二进制文件,必须为每个目标平台准备对应正确的二进制文件才能保证打包后的应用正常运行。
Prisma Query Engine / Prisma Client 现有可行配置
该部分目前已经可以正常实现跨平台适配:将Prisma schema中的binaryTarget配置为所有目标平台即可:
binaryTargets = ["windows", "debian-openssl-1.1.x"]
执行prisma generate生成客户端后,目标目录node_modules/.prisma/client/内会同时包含Linux和Windows版本的查询引擎:
libquery_engine-debian-openssl-1.1.x.so.node(Linux版本)query_engine-windows.dll.node(Windows版本)
Prisma Migration Engine 多平台安装配置方法
当前仅在package.json中声明prisma依赖时,npm默认只会在node_modules/@prisma/engines/目录下安装当前宿主操作系统(即构建机Linux)对应的二进制文件,目录内仅包含:
libquery_engine-debian-openssl-1.1.x.so.nodemigration-engine-debian-openssl-1.1.x
缺少Windows版本的迁移引擎二进制,无法满足Windows安装包的打包需求。
要让npm同时安装Windows和Linux两个平台的Prisma迁移引擎,只需要在依赖安装阶段配置对应环境变量即可,操作步骤如下:
- 在执行
npm install(或pnpm install/yarn install)安装依赖前,配置环境变量PRISMA_CLI_BINARY_TARGETS,值为逗号分隔的所有目标平台标识,和schema中binaryTargets的配置保持一致:
# Bash环境示例,指定同时拉取Linux、Windows平台的Prisma CLI全量引擎(含迁移引擎) export PRISMA_CLI_BINARY_TARGETS=debian-openssl-1.1.x,windows npm install
- 依赖安装完成后检查
node_modules/@prisma/engines/目录,即可看到两个平台的迁移引擎文件同时存在:- Linux版本:
migration-engine-debian-openssl-1.1.x - Windows版本:
migration-engine-windows.exe
- Linux版本:
注意:环境变量中填写的平台标识必须和Prisma schema中
binaryTargets的配置值完全一致,否则会出现引擎版本、平台不匹配的运行错误。如果是在CI/CD流水线中使用,直接在依赖安装的构建步骤前置注入该环境变量即可,不需要手动下载二进制或者修改业务依赖配置。
内容的提问来源于stack exchange,提问作者TmTron
相关产品推荐
相关产品推荐

