【问题标题】:Electron: Sharing the same project folder between macOS and WindowsElectron:在 macOS 和 Windows 之间共享同一个项目文件夹
【发布时间】:2021-01-03 01:56:31
【问题描述】:

目标

我已经阅读了许多关于应用程序引导和构建管道的 Electron 教程,并假设您可以有一个项目来处理跨平台操作。

但是在打包和构建过程中多次失败后,我终于意识到也许我的假设是错误的。

问题

这是我想要的基于电子锻造的工作流程:

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上重装electron

yarn add electron

yarn start

yarn make

在 macOS 上一切正常。

现在回到 Windows。

3。回到 Windows 仔细检查

这次。我遇到了与第 2 步类似的问题。 Windows 发行版现在有错误的 Electron 二进制文件。

调查结果

我发现在 Windows 和 macOS 之间传输项目文件时,即使我仔细合并,这个文件也经常被覆盖。

my-app/node_modules/electron/path.txt

它包含一个到 Electron 可执行文件的硬编码路径:

macOS

Electron.app/Contents/MacOS/Electron

窗户:

electron.exe

解决方法

我可以通过将预定义的元数据复制到项目文件夹中来添加预构建步骤,具体取决于当前平台。但是对于像 Electron 这样的框架来说,这样的 hack 听起来很糟糕。

问题

所以对我来说,这种元数据安排使得在 Windows 和 macOS 之间共享同一个项目变得很困难。我无法想象 Electron 开发人员会这样工作。

那么我错过了什么?

【问题讨论】:

    标签: windows macos electron cross-platform yarnpkg


    【解决方案1】:

    基本上,您根本不应该提交node_modules。一些安装后脚本可能会为特定操作系统编译包,并且该文件夹通常很大。

    此外,您不应提交任何构建、打包或编译命令的结果。通常,dist 文件夹应该被忽略。

    您的存储库应该只包含代码和配置文件。 这个想法是提交这些文件和文件夹是没有意义的,因为你有所有必需的步骤才能在任何机器上重现结果:你的 windows 计算机、你的 macOS 计算机、你的 CI 环境等。例如(这些是伪命令):

    1. npm inpm ci
    2. npm run build
    3. electron package

    所以您应该将所有这些文件夹添加到您的.gitignore 文件中:

    # compiled output
    /dist
    /tmp
    /out-tsc
    /packages
    
    # dependencies
    /node_modules
    

    【讨论】:

    • 好的,这是有道理的。我在一个互联网访问受到严格限制的地方。所以我考虑在 SCM 上缓存所有内容。看起来是个糟糕的主意。
    • 提交 node_modules 可能有好处,但大多数时候它并没有提供任何真正的好处。此外,NPM 会在您的计算机上本地缓存所有内容(在用户文件夹中)。这篇文章很好总结:flaviocopes.com/should-commit-node-modules-git
    • 问题:我应该在项目根目录下 gitignore yarn.lock 或类似的锁吗?
    • 不,你绝对应该提交它们。他们锁定已安装依赖项的版本,因此重新安装更加可复制:classic.yarnpkg.com/en/docs/yarn-lock
    猜你喜欢
    • 2020-03-16
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多