目标
我读过许多关于应用程序引导和构建管道的电子教程,并且假设您可以有一个项目来处理跨平台操作。
但是在包装和构建过程中多次失败之后,我终于意识到我的假设可能是错误的。
问题
下面是我想要的基于电子伪造的工作流:
1.在Windows上创建应用程序框架
yarn create electron-app my-app
cd my-app
yarn add my-dependency
yarn start
yarn make一切进展顺利。现在进入macOS
2.转乘macOS项目
在macOS上,运行该应用程序将导致错误
cd my-app
yarn start错误如下所示
$ yarn start
yarn run v1.22.4
$ electron-forge start
✔ Checking your system
✔ Locating Application
✔ Preparing native dependencies: 1 / 1
✔ Launching Application
/path/to/my-app/node_modules/electron/dist/electron.exe: /path/to/my-app/node_modules/electron/dist/electron.exe: cannot execute binary file
error Command failed with exit code 126.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.所以我盲目地在macOS上重新安装电子
yarn add electron
yarn start
yarn make在macOS上一切都很顺利。
现在回到Windows。
3.返回Windows进行二次检查
这一次。我遇到了与第二步相似的问题,Windows发行版现在出现了错误的电子二进制。
调查结果
我发现这个文件经常被覆盖,即使我在Windows和macOS之间传输项目文件时仔细地合并了。
my-app/node_modules/electron/path.txt它包含到电子可执行文件的硬编码路径:
macOS
Electron.app/Contents/MacOS/ElectronWindows:
electron.exe解决办法
根据当前平台的不同,我可以通过将预定义的元数据复制到项目文件夹中来对此添加预构建步骤。但是像这样的黑客对于像电子这样的框架来说听起来很蹩脚。
问题
因此,对我来说,这种元数据安排使得Windows和macOS之间很难共享同一个项目。我无法想象电子开发人员是这样工作的。
那我错过了什么?
发布于 2020-09-16 10:17:09
基本上,您根本不应该提交node_modules。有些后安装脚本可能会为特定的操作系统编译包,而且文件夹通常很大。
此外,您不应该提交任何生成、包或编译命令的结果。通常,应该忽略dist文件夹。
您的存储库应该只包含代码和配置文件。这样做的想法是,提交这些文件和文件夹是没有意义的,因为要在任何机器上再现结果,就必须执行所有必要的步骤: windows计算机、macOS计算机、CI环境等。例如(这些是伪命令):
npm i或npm cinpm run buildelectron package因此,应该将所有这些文件夹添加到您的.gitignore文件中:
# compiled output
/dist
/tmp
/out-tsc
/packages
# dependencies
/node_moduleshttps://stackoverflow.com/questions/63916585
复制相似问题