【发布时间】:2019-05-24 02:06:03
【问题描述】:
根据this,不可能在带有环境变量的电子应用程序中设置标志。我仍然需要为 dev、staging、pilot 和 prod 构建不同版本的应用程序。
在内部我想使用electron-node-config,因为它很简单。但是因为我无法访问环境变量,所以无法使用node-config。
所以我想到了几个入口脚本,比如
// index.dev.js
require('./main')({ APP_URL: 'localhost:8080' });
// index.staging.js
require('./main')({ APP_URL: 'https://staging.foo.com' });
// pilot.staging.js
require('./main')({ APP_URL: 'https://pilot.foo.com' });
我的main.js 文件看起来或多或少像这样
module.exports = (config) => {
app.on('ready', () => {
mainWindow.loadURL(config.APP_URL);
});
};
但是,在 electron builder 文档中似乎没有指定入口文件的选项,它总是使用index.js 来打包应用程序,并且文档中没有太多关于 js api 的内容除了
const builder = require('electron-builder');
const env = process.env.NODE_ENV;
const entry = `index.${env}.js`;
builder.build({
entry,
appId: 'com.electron.foo',
productName: 'foo',
mac: {
target: 'zip'
},
win: {
target: 'portable'
},
portable: {
artifactName: 'foo.exe'
}
});
所以我尝试像这样设置我的 package.json
"scripts": {
"build:staging": "NODE_ENV=development node scripts/build",
"build:pilot": "NODE_ENV=pilot node scripts/build",
"build:production": "NODE_ENV=production node scripts/build"
}
但是我真的不确定如何设置电子构建器配置的入口文件。如何指定入口文件?
【问题讨论】:
-
如果您在 cmets 上明确指出
scripts/build实际上是您的build.js,那么对于初学者应该会很好。非常感谢这个解决方案
标签: javascript electron electron-builder