electron 电子锻打用Yarn编织

yb3bgrhw  于 8个月前  发布在  Electron
关注(0)|答案(1)|浏览(66)

我使用yarn分隔符来分隔我的电子应用程序的代码。我有3个分隔符:

  1. server -在主线程中运行serialport服务器
  2. gui -浏览器代码
  3. app -定义电子app的配置
    app工作区从guiserver工作区导入代码。这在尝试打包代码时给我带来了各种麻烦。
    最初,该应用程序正在打包,但丢失了我所有的node_modules(例如抱怨它找不到“electron-squirrel-startup”)。我读到我可以禁用提升,以便node_modules文件夹将包括它需要的所有模块。
"nohoist": ["**"]

字符串
由于我的应用程序导入到不同的项目之间,yarn创建了一个指向这些项目的符号链接。似乎electron builder不喜欢这样,并且不遵循符号链接,而是直接复制符号链接本身:

An unhandled rejection has occurred inside Forge:
Error: EPERM: operation not permitted, symlink 'C:\Users\joeja\projects\roguegeo\packages\server' -> 'C:\Users\joeja\AppData\Local\Temp\electron-packager\win32-x64\RogueGeo App-win32-x64-TeyVhU\resources\app\node_modules\@rg\server'


我已经在这一整天了,从NPM博客切换到Yarn。它只是一个又一个问题,我在我的智慧结束了这一点。
在开发中运行我的应用程序工作正常,它只是试图打包它,这给我带来了问题。
我在某个地方读到过,我可以添加一个afterCopy钩子来运行“yarn install --production”,但我还没有能够让它工作。我也不认为它会解决我目前的问题,因为这也将只是使用一个符号链接来本地安装?
我如何使用yarn并构建一个电子锻造应用程序?

k4ymrczo

k4ymrczo1#

在我的终端上仍然看到一些其他错误,但能够绕过符号链接错误,并通过在forge.config.ts中执行以下操作来获得包进程的输出:

import { promisify } from "util";
import ChildProcess from "child_process";

const exec = promisify(ChildProcess.exec);

function copy({ src, dest }: { src: string, dest: string }) {
  return exec(`cp -r ${src} ${dest}`);
}

const config: ForgeConfig = {
  hooks: {
    packageAfterExtract: async (_config, buildPath) => {
      await copy({
        src: "../common",
        dest: `${buildPath}/Electron.app/Contents/Resources`
      })
    },
    //...
  }
};

字符串

相关问题