vueã§äœæããwebã¢ããªã±ãŒã·ã§ã³ãelectronã§ããã±ãŒãžã³ã°ããå¿ èŠããã£ãã®ã§ã°ã°ã£ãŠé »ç¹ã«åºãŠããelectron-packagerã䜿ã£ãŠäœæããŠãããã©ãã€ã³ã¹ããŒã©ãŒãäœæããã«ã¯å¥ããã±ãŒãžã䜿ã£ãããã«ãç°å¢ãäžå®å®ã§ãã£ãããšãã©ã¿ãæ·±ãã£ããã ãã©æè¿ã¯electron-builderã䜿ãã®ãå®ãæ©ãçŸå³ãã ã£ãã®ã§èšå®æ¹æ³ãæžãèšãã
ãã®èšäºã®èŠç¹
- electron-packagerã¯å€ã
- electron-builderã䜿ãã
- vueã§äœ¿ããªãvue-cli-plugin-electron-builder ã䜿ãã
- ã€ã³ã¹ããŒã©ãŒåœ¢åŒã®ããã±ãŒãžãããã«äœæã§ãã
- ãã®èšäºãèªãã§ãããããš
- vueãããžã§ã¯ãã«electronã®ãã«ãèšå®ãè¿œå ããæ¹æ³
- electronã®ãã«ãèšå®å€æŽ
- Windowsãã«ãèšå®
ã¡ãªã¿ã«ããã¥ã¡ã³ãããŒãžã¯ä»¥äžã§ã
https://www.electron.build
https://nklayman.github.io/vue-cli-plugin-electron-builder/
vueãããžã§ã¯ãã«electronã®ãã«ãèšå®ãè¿œå ããæ¹æ³
$ vue create example-vue-electron
$ cd example-vue-electron
$ vue add electron-builder
? Choose Electron Version ^3.0.0
$ npm run electron:build
以äžã§ããã±ãŒãžäœæãã§ããããã«ãªã£ããmacç°å¢ã§äœæãããšmacç°å¢åãã®ããã±ãŒãžãäœããã
ã¡ãªã¿ã«
$ npm run electron:serve
ã§electronãèµ·åããŠéçºãã§ããããã«ãªã£ãŠããŸãããæ軜âŠ
electronã®ãã«ãèšå®
electronã®ãã«ãã»ããã£ã³ã°ã®ãµã³ãã«ãšããŠã¢ã€ã³ã³ãæå®ããŸãã
ãã«ãã»ããã£ã³ã°ã¯electron-builderã®ããã©ã«ãã ãšpackage.json
ã ãã©ãvueã§äœ¿çšããããã®vue-cli-plugin-electron-builderã®å Žå㯠vue.config.js
ã«èšå®ããå¿
èŠãããã
以äžã®ãã¡ã€ã«æå®ãè¡ãã
// vue.config.js
module.exports = {
pluginOptions: {
electronBuilder: {
builderOptions: {
// options placed here will be merged with default configuration and passed to electron-builder
}
}
}
}
ã¢ã€ã³ã³ã®æå®ã¯ãã
// vue.config.js
module.exports = {
pluginOptions: {
electronBuilder: {
builderOptions: {
mac: {
icon: 'build/icon.png',
},
}
}
}
}
https://www.electron.build/configuration/dmg
ãã«ããããšã¢ã€ã³ã³ç»åãé©å¿ãããŠããŸã
ã¡ãªã¿ã«å³æå®è¡ã§ããapp圢åŒã®ãã¡ã€ã«ããã«ããããŠããŠãdist_electron/mac/ã«ãã
æ¬æ¥ã§ããã°icnsã¢ã€ã³ã³ãäœæããå¿ èŠãããã®ã§ããelectron-builderãªã512*512ãµã€ãºã®pngç»åãããã°okã§ã
Windowsãã«ãèšå®
windowsåããäœæ
package.jsonã®buildèšå®ã«ä»¥äžã®ãªãã·ã§ã³ãèšå®
"electron:build": "vue-cli-service electron:build --mac --win",
example-vue-electron Setup 0.1.0.exe
ãäœæãããã®ã§ãããèµ·åããã°ã€ã³ã¹ããŒã«ãå¯èœ
è£è¶³: windowsåãã®ã·ã§ãŒãã«ãããèªåäœæãã
windowsåãã ãšã€ã³ã¹ããŒã«åŸã«ã¢ããªã±ãŒã·ã§ã³ãã©ãã«å ¥ã£ãã®ãããããªããªãã®ã§ã·ã§ãŒãã«ããããã¹ã¯ãããã«äœæããããã«èšå®ãããelectron-buiilderã®ãªãã·ã§ã³ã§ååšããã®ã ã(createDesktopShortcut)ãªããäœæãããªãð€ã®ã§ããã±ãŒãžè¿œå ã§èšå®ãã
npm install --save electron-squirrel-startup
// src/background.js
const { app } = require('electron');
// ....
if(require('electron-squirrel-startup')) app.quit();
è£è¶³: Linuxã§macç°å¢ã®ã¢ããªã±ãŒã·ã§ã³ãäœæ
Macã§ãªããšMacã®ã€ã³ã¹ããŒã©ãŒåœ¢åŒã®dmgãäœæã§ããªããdockerç°å¢ãªã©ã®Linuxã§ãã«ããããå Žåã«ã¯Macã®ã¿ãŒã²ãããzipã«å€æŽããå¿ èŠããã
// vue.config.js
module.exports = {
pluginOptions: {
electronBuilder: {
builderOptions: {
mac: {
icon: 'build/icon.png',
target: 'zip',
},
win: {
icon: 'build/icon.png',
}
}
}
}
}
ãŸãšã
以äžã®èšå®ããããªããžããªã¯ããã§å
¬éããŠããŸã
https://github.com/soramugi/example-vue-electron
electron-packagerã§äœæããŠããé ã¯
- vueããã«ã
- ææç©ã® dist/ ãã³ããŒ
- electronã®ãã«ãçšãã£ã¬ã¯ããªã«ããŒã¹ã
- electronã®ãã«ãå®è¡
- ã€ã³ã¹ããŒã©ãŒã®ãã«ãå®è¡
ãš3ã¹ãããèžãã§ããã®ã§ã1ããã±ãŒãžã«ãŸãšãŸã£ãŠèšå®ãç°¡æœãªã®ã§æ¥œã«ãªããŸããã
ããšã¯ä»¥äžã調ã¹ããããš
- ã³ãŒãèå
- AutoUpdateæå®
- Publishæå®
AutoUpdate(èªåã¢ããããŒã)åšãã調æ»éäžã§ããããã±ãŒãžã¯äœæã§ãããã ãã©ã¢ããããŒãããªãã®ã§äœããééã£ãŠãããªé°å²æ°ãæ©ãã«ãŸãšããŠããããâŠ
ç¶ããæžããŸãã : electron-builderã§èªåã¢ããããŒãã«å¯Ÿå¿