※この記事はブログからの転載記事です。
はじめに
前回記事を読んでくださった方はご存知だと思いますが、僕はKindleを便利にするためのアプリケーションをNW.jsを用いて開発しています。
この度ついに、exe化することに成功しましたので、今回はNW.jsをいざ使ってみたときに躓いたポイントを紹介していきたいと思います!
つまづきポイント
つまづきポイント①: 3rd製node_moduleもビルド対象!
...まぁ、冷静に考えれば「そりゃそうだ」なんですけどね。
NW.jsの紹介記事で、ビルド対象をsrc
フォルダに移動させる必要があることを紹介しました。
このとき、src
に移動したソースファイル内でrequire
されているモジュールについても、src
フォルダにインストールされている必要があります。
上記のようにnode_modules
フォルダがsrc
フォルダ内に生成されている状態でしたら、
そのnode_modules
フォルダにインストールされているモジュールはrequire
できるようになります。
このsrc
フォルダへモジュールのインストールは
src
フォルダをカレントフォルダにした状態でnpm install
するだけです。
つまづきポイント②: Nodeモジュール化してないコードは見えちゃう!
もし、index.html
にほぼすべての処理を記載していたとします。
すると、この次に紹介する「右クリックすると意図しないメニューが出る」の対策をしていない場合では、
F12
を押すと、index.html
に記載されていたり、
script
タグに記述されているファイルについてはソースが丸裸になります。
なるべくNode.jsのコードは外部モジュール化したほうが良いでしょう。
つまづきポイント③: 右クリックすると意図しないメニューが出る
NW.jsはデフォルトでChrome DevToolsが有効な状態でビルドされます。
Chrome DevToolsが有効な状態だと、NW.js上にて生成されたウィンドウの空欄上を右クリックすると、
再起動とか検証とかいろいろ見られたくない場所へのメニューが出現してしまいます。
これは製品として嫌なので、
src
フォルダ内のpackage.json
に"chromium-args" : "--disable-devtools"
の記述を追加してChrome DevToolsを無効にする必要があります。
つまづきポイント④: process.argvが使えない!
NW.jsでprocess.argv
を利用すると、いくら配列を渡しても、
process.argv.length
が1
になります。公式のリファレンスにてnw.App.argv
の利用がアナウンスされているっぽいので、nw.App.argv
を利用してください。
使い方はprocess.argv
同様です。
締め
ネイティブアプリ化といえばElectronだったり、React Nativeばかりがもてはやされて、なかなかNW.jsの日本語の情報が少ないですが...
是非、皆さんNW.jsを使ってみてください!
あんなシンプルな方法でビルドができてしまったり、まだまだポテンシャルがありそうな気がしてドキがムネムネです!