LoginSignup
6
8

More than 5 years have passed since last update.

Electron導入ガイド 第1回

Posted at

概要

この記事は私が Electronを手元の環境に導入して動かすまでの作業録です.

導入環境

マシン:MacBookAir
OS:OS X El Capitan 10.11.6

インストール

まずはnode.jsをインストール
私は常にいろんなバージョンを手元に入れておきたいため,PHP,Ruby,Pythonなどなどバージョン管理ツールを入れています.
node.jsの場合はこちらnodebrew
https://github.com/hokaccha/nodebrew

導入手順は公式のREADMEに書いてあるので省略.
びっくりするほど簡単です.

インストールできたら必要なバージョンのnode.jsを入れる.
Electronの現バージョン(2016/10/14時点での)v1.4.3はnode.jsのv6.5.0以上が必要なため,インストール.

$ nodebrew install v6.5.0

まずはelectronのプロジェクトを作成.

$ mkdir my_app && cd my_app

最低限動かすのに必要なファイルは3点

my-app/
├── package.json
├── main.js
└── index.html

package.jsonはnpm initコマンドで作成できます.

作成したpackage.jsonの中身は

{
  "name": "my_app",
  "version": "0.1.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "moroku0519",
  "license": "MIT"
}

こんな感じです.

ちなみに,mainを指定しないとElectronはindex.jsをロードしようとします.

そして,main.jsとindex.htmlは試運転なので特にこだわらず公式のexampleを使いました.

main.js
const {app, BrowserWindow} = require('electron')

// 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 win

function createWindow () {
  // Create the browser window.
  win = new BrowserWindow({width: 800, height: 600})

  // and load the index.html of the app.
  win.loadURL(`file://${__dirname}/index.html`)

  // Open the DevTools.
  win.webContents.openDevTools()

  // Emitted when the window is closed.
  win.on('closed', () => {
    // 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.
    win = 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', () => {
  // On macOS 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', () => {
  // On macOS 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 (win === 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.


index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    We are using node <script>document.write(process.versions.node)</script>,
    Chrome <script>document.write(process.versions.chrome)</script>,
    and Electron <script>document.write(process.versions.electron)</script>.
  </body>
</html>

そして,以下のコマンドで実行できます.

$ .electron

簡単ですね.

スクリーンショット 2016-10-14 15.22.58.png

ちなみにシステム全体にnode.jsをインストールしている場合はこれで動きますが,ローカルにインストールしている場合はパスを指定して実行してあげないといけません.

$ ./node_modules/.bin/electron .

今回はここまで

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8