現在開発中のブラウザゲームをSteamで公開すべく、アプリケーションとしてパッケージ化するライブラリとして、NW.jsの使い方を調査していました。
出てくる情報が、Windows環境で実行しているものだったり、情報が古かったりしたので、今回色々調べてわかったことをまとめたいと思います。
Mac環境でNW.jsを用いたデスクトップアプリケーションを作る手順
NW.jsのSDKをダウンロードして、そこにファイル一式を置く方法もあるのですが、Macでやるとかなり遠回りだったので、今回ご紹介するコマンドで進めるやり方を推奨します。
フォルダ構成は以下のとおりとします。
srcの中に、自分の作りたいアプリケーションのHTML, CSS, JSを配置します。
root
├── node_modules
├── package-lock.json
├── package.json (npm用)
└── src(この中に自分の作ったWebアプリを入れる)
├── index.html
└── package.json (マニフェストファイル)
ポイントとなるのは、package.jsonが2つある、ということです。
私はここを見落として何時間も溶かしました。
npm用のpackage.jsonを追加
プロジェクトファイル直下でnpm initして、package.jsonファイルを追加し、以下のようにscriptを変更します。
{
"name": "Example",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "nw src/",
"build": "nwbuild --platforms win32,win64,osx64,linux32,linux64 --outDir build --glob=false src/"
},
"author": "",
"license": "ISC",
}
scriptの中で、開発用(dev)とビルド用(build)のコマンドを指定しました。
上の例では、devの場合、src/の部分が、アプリケーションのソースコードが格納されているディレクトリへのパスで、このディレクトリ内のコードがアプリケーションとして実行されます。
--platformsでプラットフォームを指定できます。
--outDirで、出力先を指定できます。この場合、buildというフォルダの中にアプリが生成されます。
--glob=falseというおまじないを書いておかないと、package.json not found in srcDir file glob patterns.という謎のエラーが発生します。
マニフェストファイルとなるpackage.jsonを追加
2つ目のpackage.jsonを追加します。
これは、先ほどと異なる同名ファイルですのでご注意を。
NW.jsが読み取るためのものなので、これはrootでなく、srcフォルダの中に置きます。
root
├── node_modules
├── package-lock.json
├── package.json
└── src
├── index.html
└── package.json (これだよ!)
最小構成はこちら。
{
"name":"Example",
"main":"index.html"
}
nameはアプリ名、
mainはエントリポイントです。
nwとnw-builderのインストール
以下の二つのコマンドを叩き、プロジェクトにnwとnw-builderをインストールします。
npm i nw --nwjs_build_type=sdk --save-dev
npm i nw-builder --save-dev
※ちなみに一つ目のコマンドで、--nwjs_build_type=sdkという引数をつけてインストールしておくことで、アプリケーションを立ち上げたときに、F12キーを叩くと開発者モードでデバッグ可能になります。
package.jsonに、以下のdevDependenciesが追加されているはずです。
"devDependencies": {
"nw": "^0.78.1",
"nw-builder": "^4.3.9"
}
のような形で追加されているはず。
起動する
npm run devを叩いてみましょう。
アプリが立ち上がるはずです。やったね!
ビルドする
npm run buildを叩くと、buildフォルダ内にアプリが生成され、最終的には、こんな感じのディレクトリ構成になっているはずです。
root
├── build
│ ├── credits.html
│ └── example.app(これが出来上がったアプリ!)
├── cache
│ ├── manifest.mac.arm.json
│ └── nwjs-v0.78.1-osx-arm64
├── node_modules
│ └── (モジュール群)
├── package-lock.json
├── package.json
└── src
├── index.html
└── package.json
まとめ
結構色々なところで躓いて、めっちゃ大変でした。
が、最終的にNW.jsの仕組みを少し深く理解できてよかったです。
今回の記事が、MacでNW.jsを使ったアプリ制作をしてみたい人の参考になれば幸いです。
ちなみに次回の記事では、非推奨のやり方ではありますが、builderを使わずに、自分でファイルをセットする方法もご紹介します。
0 コメント