Coding/React

[Electron + React + Typescript] React로 Electron 사용하기 1

codePam 2022. 12. 12. 19:46
반응형

오랜만에 글을 쓴다 ㅠㅠ 오랜만에 글쓰긴하지만 계속해서 코딩공부는 했습니다....

요번에는 Javascript 라이브러리인 Electron을 사용해볼거예요! html + css + js 로도 사용 할 수 있지만 많이 사용해오던 Reacrt를 이용할것입니다. React 가 더 편하기도 하고... 또 typescript로 개발을 해볼겁니다.


개발 환경 설치

먼저  기존에 typescript + react 환경을 설치하듯이 설치 해줄게요. 아래 내용을 터미널에서 실행하여 기본 환경을 만듭니다.

npx create-react-app electron_practice --template typescript

패키지 설치

그리고 electron_practice 폴더로 이동 해준 뒤 필요한 패키지들을 설치해줍니다.

npm i -D electron electron-builder concurrently cross-env wait-on
npm i electron-is-dev

package.json 수정

그리고 루트 폴더에 있는 package.json 을 아래와 같이 변경해줍니다.

...
"main": "./public/electron.js",
"homepage": "./",
...
"scripts": {
    "react-start": "react-scripts start",
    "react-build": "react-scripts build",
    "react-test": "react-scripts test",
    "react-eject": "react-scripts eject",
    "start-renderer": "cross-env BROWSER=none npm run react-start",
    "start-main": "electron .",
    "compile-main": "tsc ./public/electron.ts",
    "start-main-after-renderer": "wait-on http://localhost:3000 && npm run start-main",
    "dev": "npm run compile-main && concurrently -n renderer, main 'npm:start-renderer' 'npm:start-main-after-renderer'",
    "pack": "npm run compile-main && npm run react-build && electron-builder --dir",
    "build": "npm run compile-main && npm run react-build && electron-builder build",
    "build:osx": "npm run build -- --mac",
    "build:linux": "npm run build -- --linux",
    "build:win": "npm run build -- --win",
    "predist": "npm run compile-main"
 },

electron.ts 생성

그리고 public 폴더에 eletron.ts 파일을 아래와 같이 만들어줍니다.

import * as path from 'path';
import { app, BrowserWindow } from 'electron';
import * as isDev from 'electron-is-dev';

const BASE_URL = 'http://localhost:3000';

let mainWindow: BrowserWindow | null;

function createMainWindow(): void {
  mainWindow = new BrowserWindow({
    width: 1920,

    height: 1080,

    webPreferences: {
      contextIsolation: true,

      nodeIntegration: true,
    },
  });

  mainWindow.once('ready-to-show', () => {
    mainWindow.show();
  });

  if (isDev) {
    mainWindow.loadURL(BASE_URL);

    mainWindow.webContents.openDevTools();
  } else {
    mainWindow.loadFile(path.join(__dirname, '../build/index.html'));
  }

  mainWindow.on('closed', (): void => {
    mainWindow = null;
  });
}

app.on('ready', (): void => {
  createMainWindow();
});

app.on('window-all-closed', (): void => {
  app.quit();
});

app.on('activate', (): void => {
  if (mainWindow === null) {
    createMainWindow();
  }
});

실행 및 컴파일

그 뒤 아래처럼 터미널에서 실행하면 electron.ts 가 electron.js로 컴파일 되며 파일이 실행된다.

npm run dev

위와 같이 React가 뺑글뺑글 돌면서 잘 실행된다!

또 http://localhost:3000 에서도 잘 실행된다.


Build

아래 OS별 스크립트를 터미널에서 실행하게 되면 dist 폴더가 생기고 해당 폴더안에 실행파일이 생긴다. 

npm run build:win		// 윈도우
npm run build:osx		// 맥
npm run build:linux		// 리눅스

 

기본적인 Electron 개발환경 설정 방법이다. 추후 더 올라올 예정~

 

잘못된 정보나 문의사항은

codepam2020@gmail.com 으로 연락주세요!

훈수 대환영입니다!

반응형