在Angular 5中使用电子生成器构建电子应用

时间:2018-07-24 06:38:08

标签: node.js angular electron electron-builder

我正在创建一个电子应用程序,该应用程序将Angular 5应用程序用作前端。我可以通过运行npm run build && electron以开发模式运行该应用程序。触发电子实例并加载角位。但是,在基于文档使用npm run dist进行构建时,它不允许我引用文件,或者无法读取asar文件,或者我可能做错了什么,我在这里一无所知。安装运行.exe文件的应用程序时,我完全看到黑屏。

这是package.json和electronic-main.js的一些代码片段 package.json

"version": "0.0.0",
  "license": "MIT",
  "main": "electron-main.js",

  "build": {
    "appId": "com.example.Dashboard",
    "productName": "Dashboard",

    "win": {
      "target": [
        "nsis"
      ]
    },
    "nsis": {
      "runAfterFinish": true
    }
  },

  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "pack": "electron-builder --dir",
    "dist": "electron-builder",
    "postinstall": "install-app-deps",
    "build": "ng build --prod",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "electron": "electron .",
    "electron-build": "ng build --prod && electron ."
  },

electron-main.js

 win.loadURL(url.format({
        pathname: __dirname + '/dist/index.html',
        protocol: 'file:',
        slashes: true
    }))

1 个答案:

答案 0 :(得分:8)

最后挣扎很多,断头找到了解决方案。首先,Electron-builder不在所需的位置构建文件,GitHub中存在未解决的错误问题。 您可以参考这些链接以获取更多信息 1.Build Process Ignores app/dist/ folder?

2.Not all files in /app are packaged.

通常,在ReactJs中,他们都使用两个package.json文件来避免混淆,并且他们正在编写很多Webpack代码。

有一个我发现的工作。 此处确切发生的是angular-cli在dist文件夹中输出构建文件。电子生成器还将其文件输出到dist文件夹中。

在这里我要澄清的第一件事是,如果您运行 npm run dist ,电子构建器将不会为我们构建文件。

因此,首先您需要构建运行 ng build 的文件。

第二秒,您需要在package.json中进行更改,以指定生成资源以使用生成文件,并且需要更改电子生成器的输出目录。

修改后的package.json看起来像这样。

"main": "electron-main.js",

  "build": {
    "appId": "com.example.companyDashboard",
    "productName": "Farmhub Companies Dashboard",
    "files": ["**/*", "dist/**/*"],

  "directories": {
      "output": "release",
      "buildResources": "dist"
    },
    "asar":false,
    "win": {

      "target": [
        "nsis"
      ]
    },
    "nsis": {
      "runAfterFinish": true,
      "license":"LICENSE"
    }
  },

  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "pack": "build --dir",
    "dist": "build",
    "postinstall": "install-app-deps",
    "build": "ng build --prod",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "electron": "electron .",
    "electron-build": "ng build --prod && electron .",
    "electron-package": "electron-packager . FarmhubCompanyDashboard --platform=win32 --arch=x64"
  },

如果运行电子生成器运行命令 npm run dist ,它就像微风一样。