区分 Electron Forge 配置中的 make 和 package

differentiate between make and package in Electron Forge config

我有一个设置了很多选项的 Electron Forge 配置文件,它都自动且完美地工作(感谢 Forge 团队!!)。但我发现在某些情况下,我可能希望以不同于完整 npm run make 的方式处理裸 npm run package(据我所知,运行 是 package 脚本的一部分它的过程)。有什么方法可以通过编程方式检测 package 操作是否是 运行 直接从命令行而不是作为 make 过程的一部分,以便我可以根据需要调用不同的 Forge 配置选项?例如有时我只是想为本地测试做一个快速构建并跳过某些不必要的耗时步骤,例如在 macOS 上进行公证和一些 prePackage/postPackage 钩子函数。理想情况下,我正在寻找一种在我的 Forge 配置文件中执行类似操作的方法:

//const isMake = ???
module.exports = {
    packagerConfig: {
        osxNotarize: isMake ? {appleId: "...", appleIdPassword: "..."} : undefined
    },
    hooks: {
        prePackage: isMake ? someFunction : differentFunction
    }
}

您可以通过 process.argv[1]:

let isMake;
if (process.argv[1].endsWith('electron-forge-make.js') {
  isMake = true;
} else {
  isMake = false;
}
module.exports = {
  // ...
}

当调用process.argv时,它returns一个包含两个字符串的数组:第一个是node.js目录,第二个是electron forge模块目录。 make 模块以 electron-forge-make.js 结尾,package 模块以 electron-forge-package.js 结尾。所以你可以看看它的结尾来判断它是package还是make。