我已经将 create-react-app 与 electron-forge 应用程序绑定在一起,现在我需要以某种方式指定从 CRA 生成的用于打包的构建文件夹。该文件夹也应该被提供。
这种事情可以通过电子锻造实现吗?
我知道您是在问如何告诉 Electron-forge 在哪个目录中找到源文件来打包应用程序。
如果是这样,请参阅:https://github.com/electron-userland/electron-packager/blob/master/docs/api.md
其中描述了
的选项"config": {
"forge": {
package.json 文件中的对象
它们里面有这个包配置对象:
"electronPackagerConfig": {
"dir": "./src",
您可以在其中指定源文件夹。
此外,顺便说一句:您可以在此处指定要在打包中忽略的文件/文件正则表达式:
"ignore": [".idea", ".gitignore"]
Electron-forge 没有指定输入文件夹的选项(将使用项目的根文件夹):
ignore
选项以跳过文件夹/文件;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)$"
]
},
...
}
},
...
}
实际上,您可以仅在脚本的参数中指定源文件夹(假设 /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 等对您的项目进行捆绑,或者小心依赖项并将其提供给打包的应用程序。