React Starter Kit + electron + electron builder サーバーとデスクトップまとめる メモ
18882 ワード
このメモについて
react + express環境を使いたかった
それをelectronでデスクトップアプリにしたかった
環境
win10 64bit
node 12.14.0
npm 6.9.0
electron 7.1.7
react-starter-kit
git clone -o react-starter-kit -b master --single-branch https://github.com/kriasoft/react-starter-kit.git MyApp
cd MyApp
npm install
electron + electron-builder
- Install
npm install -D electron electron-builder
/src/electron-starter.js
const application = require('./application');
+ let app = require('../build/server').default;
global.application = new application();
global.application.run();
/src/application.js
const { app, BrowserWindow, Menu } = require('electron');
const path = require('path');
const url = require('url');
+ const port = process.env.PORT ? process.env.PORT - 100 : 3000;
+ process.env.ELECTRON_START_URL = `http://localhost:${port}`;
module.exports = class Application {
createWindow() {
this.mainWindow = new BrowserWindow({
width: 1366,
height: 768,
});
this.startUrl = process.env.ELECTRON_START_URL || url.format({
pathname: path.join(__dirname, '/../build/index.html'), // 警告:このファイルを移動する場合ここの相対パスの指定に注意してください
protocol: 'file:',
slashes: true,
});
this.mainWindow.loadURL(this.startUrl);
this.mainWindow.on('closed', function () {
this.mainWindow = null;
});
this.mainWindow.webContents.openDevTools();
const template = [{
label: 'Application',
submenu: [
{ label: 'About Application', selector: 'orderFrontStandardAboutPanel:' },
{ type: 'separator' },
{ label: 'Quit', accelerator: 'Command+Q', click: () => { app.quit(); } }
]}, {
label: 'Edit',
submenu: [
{ label: 'Undo', accelerator: 'CmdOrCtrl+Z', selector: 'undo:' },
{ label: 'Redo', accelerator: 'Shift+CmdOrCtrl+Z', selector: 'redo:' },
{ type: 'separator' },
{ label: 'Cut', accelerator: 'CmdOrCtrl+X', selector: 'cut:' },
{ label: 'Copy', accelerator: 'CmdOrCtrl+C', selector: 'copy:' },
{ label: 'Paste', accelerator: 'CmdOrCtrl+V', selector: 'paste:' },
{ label: 'Select All', accelerator: 'CmdOrCtrl+A', selector: 'selectAll:' }
]},
];
Menu.setApplicationMenu(Menu.buildFromTemplate(template));
}
ready() {
app.on('ready', this.createWindow);
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
if (this.mainWindow === null) {
this.createWindow();
}
});
}
run() {
this.ready();
}
};
- electron-builder 設定ファイル
/build-win.js
const builder = require('electron-builder');
builder.build({
config: {
appId: 'local.MyApp',
win: {
target: 'zip',
},
+ files: [
+ 'build/**/*',
+ 'src/electron-starter.js',
+ 'src/application.js',
+ 'node_modules/**/*',
+ ],
},
});
package.json
/package.json追記
{
…
+ "main": "src/electron-starter.js",
+ "homepage":"./",
…
"scripts":
{
…
+ "electron": "electron ."
…
}
…
}
実行
npm run build --release
npm run electron
終わり
Author And Source
この問題について(React Starter Kit + electron + electron builder サーバーとデスクトップまとめる メモ), 我々は、より多くの情報をここで見つけました https://qiita.com/edo53299752/items/cdff65f53088d05f5450著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .