electron + React로 5분 안에 HelloWorld

연구에서 데스크톱 응용 프로그램을 만들 필요가 있었기 때문에 시험에 electron을 만져 보았습니다.

환경


  • macOS High Sierra 10.13.6
  • Zsh
  • Node.js v10.13.0

  • Node.js 설치



    이번에는 nodebrew를 사용하여 설치합니다.
    $ brew install nodebrew
    $ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zshrc`
    $ mkdir -p ~/.nodebrew/src
    $ nodebrew install v10.13.0
    $ nodebrew use v10.13.0
    

    설치할 수 있는지 확인.
    $ node -v
    v10.13.0
    

    좋아 보인다.

    특히 버전의 지정은 없습니다만, 공식 다운로드 의 추천판이 v10.13.0 이었으므로 이것으로 했습니다. (다른 패키지 등에서 에러가 나면 다른 버전으로 바꾸려고합니다 ...)

    Yarn 설치



    npm 대신 이번에는 yarn을 사용합니다.
    $ brew install yarn
    

    설치할 수 있는지 확인.
    $ yarn -v
    1.12.1
    

    좋아 보인다.

    create-react-app 사용



    커맨드로 하나로 React 어플리케이션의 병아리를 만들 수 있는 강한 패키지입니다. 이번에는 이것을 사용합니다.
    $ yarn global add create-react-app
    $ create-react-app electron_sample
    

    앱이 만들어졌습니다. 시작해 보겠습니다.
    $ cd electron_sample
    $ yarn start
    
    localhost:3000 에 접속해, 이런 느낌이 되면 OK입니다.


    electron 도입



    yarn을 사용하여 설치합니다.
    $ yarn add electron --dev
    

    그런 다음 package.json 를 편집합니다.

    package.json
    {
      "name": "electron_sample",
      "version": "0.1.0",
      "private": true,
      "main": "src/electron-starter.js",
      "dependencies": {
        "react": "^16.6.0",
        "react-dom": "^16.6.0",
        "react-scripts": "2.1.1"  
      },
      "scripts": {
        "start": "react-scripts start",
        "build": "react-scripts build",
        "test": "react-scripts test",
        "eject": "react-scripts eject",
        "electron": "electron ."
      },
      "eslintConfig": {
        "extends": "react-app"
      },
      "browserslist": [
        ">0.2%",
        "not dead",
        "not ie <= 11",
        "not op_mini all"
      ],
      "devDependencies": {
        "electron": "^3.0.7"
      }
    }
    
    "main": "src/electron-starter.js","electron": "electron ." 의 2행을 추가하는 느낌입니다.

    그런 다음 src/electron-starter.js를 만들고 편집합니다.
    ( 여기 소스 에서 복사했습니다)

    src/electron-starter.js
    const electron = require('electron');
    // Module to control application life.
    const app = electron.app;
    // Module to create native browser window.
    const BrowserWindow = electron.BrowserWindow;
    
    const path = require('path');
    const url = require('url');
    
    // Keep a global reference of the window object, if you don't, the window will
    // be closed automatically when the JavaScript object is garbage collected.
    let mainWindow;
    
    function createWindow() {
        // Create the browser window.
        mainWindow = new BrowserWindow({width: 800, height: 600});
    
        // and load the index.html of the app.
        mainWindow.loadURL('http://localhost:3000');
    
        // Open the DevTools.
        mainWindow.webContents.openDevTools();
    
        // Emitted when the window is closed.
        mainWindow.on('closed', function () {
            // Dereference the window object, usually you would store windows
            // in an array if your app supports multi windows, this is the time
            // when you should delete the corresponding element.
            mainWindow = null
        })
    }
    
    // This method will be called when Electron has finished
    // initialization and is ready to create browser windows.
    // Some APIs can only be used after this event occurs.
    app.on('ready', createWindow);
    
    // Quit when all windows are closed.
    app.on('window-all-closed', function () {
        // On OS X it is common for applications and their menu bar
        // to stay active until the user quits explicitly with Cmd + Q
        if (process.platform !== 'darwin') {
            app.quit()
        }
    });
    
    app.on('activate', function () {
        // On OS X it's common to re-create a window in the app when the
        // dock icon is clicked and there are no other windows open.
        if (mainWindow === null) {
            createWindow()
        }
    });
    
    // In this file you can include the rest of your app's specific main process
    // code. You can also put them in separate files and require them here.
    
    $ yarn start 다른 창에서 $ yarn electron 그러면 데스크톱 앱 창이 시작됩니다.



    OK!! 좋을 것 같습니다.

    참고 기사


  • Mac에 Node.js 설치
  • npm 호환 JavaScript 패키지 관리자 Yarn 시작
  • electron + React(create-react-app)로 앱을 만들기 시작한다.
  • How to build an Electron app using create-react-app. No webpack configuration or “ejecting” necessary.
  • Writing Your First Electron App
  • 좋은 웹페이지 즐겨찾기