23
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

electron-builderでElectronアプリのビルド

巷ではelectron-packagerが流行っているみたいですが、微妙にやりたいことができなかったので探していたら、electron-builderというのを見つけました。
その際の導入手順などを個人用のメモとして残そうかと思います。

とりあえず動けばいいとします、詳しいことを知りたい方は公式サイトを見てください。

なお、Electronでの開発はできている前提とします。

インストール

ぼくはnpmでインストールしました。

npm i -D -g electron-builder

i(install)はインストールコマンドで、
-D(--save-dev)はpackage.jsonのdevDependenciesに自動で記載するの意で、
-gはglobal環境にインストールするの意です。(任意)

globalインストールした時にパスが通ってなくて悩んだことがあるので、どこかで動かないときはそのへんを調べてみるといいかもしれません。

フォルダー構成を変える

特にいじらなくても動くようですが、ビルド用とアプリ用で設定を変えられるようなので使ってみます。

今までに作っていたフォルダ群は、/appを作ってその中に入れてあげます。

/appと同じ階層でnpm initを実行してあげます。

ビルド用コードを書く

コマンドでもできると思いますが、せっかくなのでNode.jsで書こうと思います。

/appと同じ階層にファイルを作ってください。

build-win.js
'use strict';

const builder = require('electron-builder');
const fs = require('fs');
const packagejson = JSON.parse(fs.readFileSync('./app/package.json', 'utf8'));

builder.build({
    platform: 'win',
    config: {
        'appId': `com.example.${packagejson.name}`,
        'win': {
            'target': 'zip',
        },
    },
});
build-mac.js
~~()~~
    platform: 'mac',
    config: {
        'appId': `com.example.${packagejson.name}`,
        'mac': {
            'target': 'zip',
        },
    },
~~()~~

mac版をビルドするときは、win版の中身を置き換えればできるはずです。

appIDcom.example.${packagejson.name}の部分は適宜置き換えておいてください。

とりあえず動かす用なので、細かい設定などは全くしません。
前述の通り公式サイトを見てください。

ビルドしてみる

先程用意したコードを実行してあげましょう。

先程ファイルを作ったディレクトリーで、以下のコマンドを実行します。

node build-win

ファイル名を変えていた場合は適宜置き換えてください。

そうするといろいろログが出て、/dist/内にビルドされたアプリがあると思います。

終わり

メモ用&浅い知識なので適当なところがあるかもしれませんが、ご了承ください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
23
Help us understand the problem. What are the problem?