Electron & React & Redux & TypeScript 앱 제작 워크샵 9일째(최종회)
12630 단어 electron-builderElectron
개요
마지막까지 앱 작성이 완료되었습니다.
이번에는 제품으로 패키징 (Windows에서는 .exe, macOS에서는 .dmg 및 .pkg 파일을 작성) 및 설치 프로그램을 작성합니다.
아이콘 준비
아이콘을 설정하지 않아도 패키징은 할 수 있습니다만, 제품으로서 앱 작성하려면 반드시 필요한 작업이겠지요.
Windows용으로는 .ico 파일, macOS용으로는 .icns 파일이 필요합니다.
각각 기본 이미지 유형은 크기에 맞게 여러 종류를 만들어야 합니다.
이미지 파일의 변환에 대해서는 아래를 참조하십시오.
이번에는 작성한 파일을 프로젝트 폴더에 'icon' 폴더를 만들어 둡니다.
electron-builder 도입
패키지하는 툴로서 electron-packager 도 있습니다만, electron-builder 을 이용하면, 패키지와 인스톨러의 작성까지 할 수 있으므로 편하다고 생각합니다.
> npm install --save-dev electron-builder
main.js 수정
main.js 에서는 index.html 을 읽습니다만, 이것은 하는 패스가 되도록(듯이) 아래와 같이 수정합니다.
(원인은 모르겠지만 내 환경에서는 이렇게해야했습니다)
function createWindow() {
// ブラウザウィンドウの作成
win = new BrowserWindow({
width: 800,
height: 600
})
// index.html をロードする
// --> 変更
const path = require('path');
win.loadFile(path.join(__dirname, './index.html'));
//win.loadFile('index.html')
// <-- 変更
// 起動オプションに、 "--debug"があれば開発者ツールを起動する
if (process.argv.find((arg) => arg === '--debug')) {
win.webContents.openDevTools()
}
// ブラウザウィンドウを閉じたときのイベントハンドラ
win.on('closed', () => {
// 閉じたウィンドウオブジェクトにはアクセスできない
win = null
})
}
패키지 정의 만들기
package.json 내에 electron-builder의 설정을 기술합니다.
{
・・・
"scripts": {
"build": "webpack",
"start": "electron ./ --debug",
"package:mac": "webpack && electron-builder --mac --x64",
"package:windows": "webpack && electron-builder --win --x64",
"package:linux": "webpack && electron-builder --linux --x64"
},
・・・
"build": {
"productName": "TODO",
"appId": "todo.exsample.com",
"directories": {
"output": "./product"
},
"files": [
"./dist/**/*.js",
"./index.html",
"./main.js",
"./icon/**/*"
],
"dmg": {
"contents": [
{
"x": 410,
"y": 150,
"type": "link",
"path": "/Applications"
},
{
"x": 130,
"y": 150,
"type": "file"
}
]
},
"mac": {
"icon": "./icon/todo.icns",
"target": [
"dmg"
]
},
"win": {
"icon": "./icon/todo.ico",
"target": "msi"
}
}
}
각 프로퍼티의 상세나 여기에 쓰여지지 않은 프로퍼티에 대해서는 공식 페이지 를 참조해 주세요.
directories/output에서 패키지 및 설치 프로그램의 출력 대상을 지정합니다.
files는 앱이 작동하는 데 필요한 파일을 지정합니다. "*/"라는 쓰는 방법은 폴더의 깊이에 관계없이 모든 파일을 의미합니다.
mac, win에서 각각의 패키지를 설정하고 있습니다.
script에서 작성을 위한 명령을 정의하고 있습니다.
만들려고
windows의 경우, 다음을 실행하면 product 폴더에 설치 프로그램을 사용할 수 있어야 합니다.
> npm run package:windows
인스톨러로, 레지스트리의 처리나 파일의 카피 등, 다양한 처리를 실시하고 싶은 경우는, 이노 설정 등으로 작성하는 것이 좋다.
electron-builder 로 작성된
win-unpacked
폴더내의 파일 세트로서 인스톨러에 포함하는 것이 좋을 것입니다. 시작하는 exe 또한 여기에 있습니다.요약
Electron 앱 개발에 대해서는 일단 끝납니다.
React나 Redux의 이야기가 많아 Electron에 대한 이야기가 적었을까 생각합니다.
가능하면 메인 프로세스, 렌더 프로세스, 그 사이의 프로세스간 통신이라고도 쓰고 싶었습니다만, 이것은 다른 기회로 하고 싶을까 생각합니다.
Reference
이 문제에 관하여(Electron & React & Redux & TypeScript 앱 제작 워크샵 9일째(최종회)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/EBIHARA_kenji/items/41552d664e7a72d867e3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)