古いバージョンのElectronで作られたアプリのElectronライブラリを更新する
Electron製アプリのElectronのバージョンがだいぶ古くなったので更新してみる。
https://github.com/taku-o/myukkurivoice
Electronのバージョンを上げても、特に機能が増えたりしないのがツライところだが。
後になるほど、更新作業の量が増えたり、インターネット上の資料が参考にならなくなったりするので、
適度に更新していくべきではあるだろう。
まず現在使用中のバージョンを確認する!
バージョンを確かめるにはnpm outdatedコマンドで。
npm outdated -g > Package Current Wanted Latest Location > electron 1.4.12 1.7.9 1.7.9 > electron-packager 8.4.0 9.1.0 9.1.0 > electron-prebuilt 1.4.12 1.4.13 1.4.13 > node-gyp 3.4.0 3.6.2 3.6.2 > npm 3.10.9 5.5.1 5.5.1
順番に更新していく
update nvm
cd ~/.nvm git fetch git pull origin master source ~/.nvm/nvm.sh nvm --version
update node
どのバージョンに更新すべきかは、electronの .node-version見れば良いのだろうか。
nvm ls-remote
nvm install v8.2.1
nvm use v8.2.1
update npm
npm update -g npm npm outdated -g
electron
electronも入れ直しになる。
今回の作業にあたり、下調べしたらelectron-prebuiltとか無くなったらしい?
あと、インストールドキュメントではelectronをローカルにインストールするように書かれていたが、グローバルに入れてしまう。
npm install -g electron npm install -g electron-packager
node modules
アプリで使用していたライブラリも、electronのremoteあたりの書き方が変わったりして
そのままでは動かなくなったりしている。
面倒だから全部installコマンドで更新してしまう。
npm install --save https://github.com/connors/photon npm install --save angular npm install --save angular-input-highlight npm install --save electron-json-storage npm install --save electron-config npm install --save electron-log npm install --save electron-localshortcut npm install --save ref npm install --save ffi npm install --save intro.js npm install --save temp npm install --save wave-recorder npm install --save tunajs
electron-localshortcutのパラメータ修正
electron-localshortcutというnode modulesを使用していたが、
過去に使用していたバージョンと、最新バージョンで、ファンクションのパラメータの渡し方が違っていた。
ソースコードを書き換える。
- var r = localShortcut.register('Command+Q', function() { + var r = localShortcut.register(mainWindow, 'Command+Q', function() { app.quit(); });
photonkitのアイコン置き換え
icon-docsというアイコンが表示されなくなってしまった。
原因追うの面倒だから、別のアイコンに置き換えて対応終わり。
これが遊びと仕事の違いである。てきとー。
npm rebuild
使っているModuleのバージョンと、使おうとしているModuleのバージョンが違うぞ、と怒られる。
表示メッセージを記録していなかったのは致命的なミスである。
Module version mismatch.とか、bindins.jsとか、その辺のメッセージが表示されていたと思う。
Electronのバージョンと、モジュールのバージョンを指定して、npm rebuildすると良い。
electron --version > v1.7.9
npm rebuild --runtime=electron --target=1.7.9 --disturl=https://atom.io/download/atom-shell --abi=54
これで完了!
ひとまずこれで動作したが、しばらく様子見は必要かな。