我可以将电子 package.json 中的环境变量用于 osx 公证凭证吗?

问题描述

已成功为 osx 公证了我的电子应用程序,但现在的问题是 Apple ID 和应用程序特定密码在 package.json 中。我当然不想在那里对它们进行硬编码以进行分发,但是我可以使用 .env 文件中的环境变量来替换它们,或者我如何将它们保密到 package.json 文件中?

我研究了 dotenv 和 cross-env,但我没有看到如何在 package.json 文件中使用 env 变量。

应用程序是使用电子伪造构建的。

我使用的结构(取自电子锻造文档):

{
  "name": "my-app","version": "0.0.1","config": {
    "forge": {
      "packagerConfig": {
        "osxSign": {
          "identity": "Developer ID Application: Felix Rieseberg (LT94ZKYDCJ)","hardened-runtime": true,"entitlements": "entitlements.plist","entitlements-inherit": "entitlements.plist","signature-flags": "library"
        },"osxNotarize": {
          "appleId": "Felix@Felix.fun","appleIdPassword": "my-apple-id-password",}
      }
    }
  }
}

提前致谢。

解决方法

重复您自己的帖子:Where can I find electron forge config js file where package.json is parsed?

您应该在单独的 JS 文件中提取电子伪造配置:ElectronForge 配置并使用 process.env.YOUR_VARIABLE_NAME 加载您的环境变量

package.json

{
    "name": "app","description": "app","productName": "app","version": "0.0.0","private": true,"scripts": {
    },"config": {
        "forge": "./forge.config.js"
    },...
}

forge.config.js

module.exports = {
    "packagerConfig": {
        "osxSign": {
          "identity": "Developer ID Application: Felix Rieseberg (LT94ZKYDCJ)","hardened-runtime": true,"entitlements": "entitlements.plist","entitlements-inherit": "entitlements.plist","signature-flags": "library"
        },"osxNotarize": {
          "appleId": process.env.NOTORIZE_APPLE_ID,"appleIdPassword": process.env.NOTORIZE_APPLE_ID,}
      }
}