Electron-forge 如何指定打包的源码目录?

问题描述 投票:0回答:3

我已经将 create-react-appelectron-forge 应用程序绑定在一起,现在我需要以某种方式指定从 CRA 生成的用于打包的构建文件夹。该文件夹也应该被提供。

这种事情可以通过电子锻造实现吗?

electron create-react-app electron-packager electron-forge
3个回答
4
投票

我知道您是在问如何告诉 Electron-forge 在哪个目录中找到源文件来打包应用程序。

如果是这样,请参阅:https://github.com/electron-userland/electron-packager/blob/master/docs/api.md

其中描述了

的选项

"config": {
    "forge": {

package.json 文件中的对象

它们里面有这个包配置对象:

  "electronPackagerConfig": {
    "dir": "./src",

您可以在其中指定源文件夹。

此外,顺便说一句:您可以在此处指定要在打包中忽略的文件/文件正则表达式:

    "ignore": [".idea", ".gitignore"]

2
投票

Electron-forge 没有指定输入文件夹的选项(将使用项目的根文件夹):

  1. 指定
    ignore
    选项以跳过文件夹/文件;
  2. 使用
    main
    输入 package.json 指定正确的启动脚本。

例如,vue项目的package.json

{
    "name": "project",
    "version": "1.0.0",
    "main": "index.js",
    ...
    "config": {
        "forge": {
            "packagerConfig": {
                "ignore": [
                    "^/[.]vs$",
                    "^/public$",
                    "^/src$",
                    "^/[.]browserslistrc$",
                    "^/[.]editorconfig$",
                    "^/tsconfig[.]json$",
                    "[.](cmd|user|DotSettings|njsproj|sln)$"
                ]
            },
            ...
        }
    },
    ...
}

0
投票

实际上,您可以仅在脚本的参数中指定源文件夹(假设 /src 是包含要打包的文件的文件夹): electron-forge package ./src


源文件夹

必须包含 package.json 以及电子锻造需要打包项目的数据。如果找不到 package.json 或者它不满足要求, Electron-forge 将进入具有正确 package.json 的文件夹并假设它是实际的项目文件夹。正如我在电子锻造源中发现的那样,它至少需要以下数据:

{ name: cfg.name, version: cfg.version, author: cfg.author, main: "main.js", devDependencies: { electron: cfg.devDependencies.electron, "@electron-forge/cli": cfg.devDependencies["@electron-forge/cli"] }, config: { forge: "../forge.config.js" } }
在我的项目中,我通过脚本创建此 package.json 并使用我的主 package.json 作为上面示例中的 

cfg

 来提供数据。您还可以提供 forge 配置作为 forge.config.js 的路径,以避免重复。

还要记住,Electron-forge 只会将文件/目录打包到该文件夹中

,因此 node_modules 和其他外部资产都不会被包含在内。因此,您需要使用 webpack、esbundle 等对您的项目进行捆绑,或者小心依赖项并将其提供给打包的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.