Webpack 如何在编译时设置电子变量?
我正在使用electron builder打包React应用程序。我的应用程序使用CreateReact应用程序样板 是否有一种方法可以在编译时设置变量,以便在运行时在主进程的代码中的条件中使用它 我正在寻找一个相当于C的预处理器宏。所以我可以这样做:Webpack 如何在编译时设置电子变量?,webpack,electron,create-react-app,electron-builder,Webpack,Electron,Create React App,Electron Builder,我正在使用electron builder打包React应用程序。我的应用程序使用CreateReact应用程序样板 是否有一种方法可以在编译时设置变量,以便在运行时在主进程的代码中的条件中使用它 我正在寻找一个相当于C的预处理器宏。所以我可以这样做: electron builder--extraConfig BUILD\u TYPE=测试 然后在我的main.js中: if(extraConfig.BUILD_TYPE=='testing'){//do stuff}我以前做过这件事,但我使用
electron builder--extraConfig BUILD\u TYPE=测试
然后在我的main.js中:
if(extraConfig.BUILD_TYPE=='testing'){//do stuff}
我以前做过这件事,但我使用的是electron网页包
,除了您已有的:
electron^11.2.0
electron builder^22.9.1
电子网页^2.8.2
网页^4
其思想是通过webpack.DefinePlugin
公开一个变量,您可以对主进程和渲染器进程都这样做
使用electron-webpack
可以为两个进程提供webpack
配置:
//webpack.main.config.js
const webpack=require('webpack');
module.exports={
插件:[新的webpack.DefinePlugin({{{uuuuuuuuuuuuuuuuuuuuuuuuuuuu玉米饼:true})]
};
//webpack.renderer.config.js
const webpack=require('webpack');
module.exports={
插件:[新的webpack.DefinePlugin({{{uu-TACO}:true}]
};
这两个文件通过package.json
中的一点配置公开给electron webpack
:
{
…
“电子网络包”:{
“主要”:{
“webpackConfig”:“webpack.main.config.js”
},
“渲染器”:{
“webpackConfig”:“webpack.renderer.config.js”
}
}
}
然后在你的主要过程中:
//src/main/index.js
const{app,BrowserWindow}=require('electron')
app.whenReady().然后(()=>{
const mainWindow=新浏览器窗口({webPreferences:{nodeIntegration:true}});
log(uuu BURRITO_uu?我会将electron builder
命令放在一个NPM脚本中,然后预先运行另一个脚本,在文件中设置BUILD\u TYPE
像这样:
package.json
:
“脚本”:{
“distProd”:“node./setBuildType.js prod&&electron builder”,
“distDev”:“node./setBuildType.js dev&&electron builder”,
}
然后在setBuildType.js中:
//process.argv[2]包含类型。
fs.writeFile('./BUILD_TYPE.txt',process.argv[2],函数(errObj){
if(errObj){
console.log(errObj);
}
});
然后从您的应用程序中,通过以下方式获取构建类型
:
//从终端运行时,始终将'BUILD_TYPE'设置为'dev'。
如果(!app.ispackage){
var BUILD_TYPE=fs.readFileSync('./BUILD_TYPE.txt');
}否则{
var BUILD_TYPE='dev';
}
console.log(BUILD_TYPE);//输出“prod”或“dev”。
这将检查它是从安装程序运行还是从终端运行,如果它是从终端运行,那么它将始终将BUILD\u TYPE
设置为dev
谢谢!您是否正在使用create react app…?如果我按照上面的说明操作,我会得到一个错误对实验语法“jsx”的支持当前未启用
然后添加@babel/preset react(https://git.io/JfeDR)转到Babel配置的“预设”部分以启用转换
。有什么想法吗?我没有,但我肯定在我正在进行的项目中使用React和Babel,使用这种方法效果很好。设置Babel和React可能是一个漫长而令人沮丧的旅程!