tak0kadaの何でもノート

発声練習、生存確認用。

医学関連は 医学ノート

electron-packagerの使い方

devdocsのスタンドアロンなアプリが欲しいと思い探したところ、electronを利用したものとしてragingwind/devdogsegoist/devdocs-appを見つけた。electronはnodejsとchromiumを使用しているのでjavascriptを書くだけでデスクトップアプリケーションを作成できるもの。

これをパッケージングしようと考えて調べた所、asar、electron-packagerの記事を見つけた。

asarはelectron以外をパッケージング、electron-packagerはelectronごとパッケージングするという違いがある。以下はdevdocs-appが一応動くことを確認した際のメモ。

1. とりあえず動くことの確認

  • まずcloneしたディレクトリに入ってnpm installして必要なパッケージをダウンロードする
    • warningが出る場合がある
  • ここでelectron .とするとアプリが起動する

2. パッケージング

  • asarはasar pack . ./myappとしてみたが実行時のエラーが出て起動できず
  • electron-packager: 実行ファイルと共有ライブラリを作ることが出来た
  • electron-packager ./devdogs/ --out=myapp --platform=linux --arch=x64 --icon=./devdogs/res/devdogs.png --electron-version=1.4.15 --prune=true --overwrite
  • versionについてはelectron -vで確認した
  • 共有ライブラリなどが入ったフォルダがmyapp/XXX-linux-x64に出来る
  • devdocs-appはXXX-linux-x64フォルダを移動しても実行できた
  • devdogsはエラーが出た
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Cannot find module 'configstore'
    at Module._resolveFilename (module.js:455:15)
    at Function.Module._resolveFilename (/home/tak0kada/bin/devdogs-app/Devdogs-linux-x64/resources/electron.asar/common/reset-search-paths.js:35:12)
    at Function.Module._load (module.js:403:25)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/home/tak0kada/bin/devdogs-app/Devdogs-linux-x64/resources/app/index.js:6:21)
    at Module._compile (module.js:556:32)
    at Object.Module._extensions..js (module.js:565:10)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)