やれること
Electron-builderのCLIでの実行時引数に--config <追加の設定を書いたファイル.json>
を渡すとpackage.jsonに記入していない設定を追加(上書き)できます。ただし、package.json内の"build"
セクション以下の項目だけが対象です。
例
問題のある状態(隠すべき項目がpackage.jsonに書かれている)
electron--builderでappxをビルドする時、Microsoft storeで発行される"publisher"項目等を追加する必要があります。--config
を使わない場合にはpackage.json
に次のように書くでしょう。
{...(略)..."scripts":{"build-appx":"electron-builder -w appx"}"build":{"artifactName":"APPNAME_${version}_${os}.${ext}","appx":{"publisher":"CN=XXXXXXXXXXXXXXXXX","identityName":"YYYYYPUBLISHERNAME.APPNAME","applicationId":"PUBLISHERNAME.APPNAME","publisherDisplayName":"PUBLISHERNAME","languages":["JA-JP","EN-US"]},"win":{...(略)...}"mac":{...(略)...}}...(略)...}
この状態で
npm run build-appx
コマンドを実行すればappxのbuildが可能です。
ただし、これには問題があります。"publisher"の項目のCN=XXXXXXXXXXXXXXXXX
の部分などは非公開にしたい情報だと思います。ですので、package.jsonに記入しておくのはよろしくないです。誤ってgithubなどに公開したないようにしなければなりません。
--config
を使った対策
そこで、非公開にしたい"appx"
に関する項目を外部ファイルに書いておいて、electron-builderの--config
引数を利用して読み込むことにします。外部ファイルのフォーマットはyml
とjson
が使えるらしいです。今回の例では外部ファイルをappx_setting.json
という名前で作ります。
まず、package.jsonからは隠したい項目である"appx"
に関する部分を取り除きます。さらに、"scripts:{"build-appx"}
の中の引数として--config dist/appx_setting.json
を追加します。こうしてpackage.jsonは以下の様になります。
json
{
...(略)...
"scripts": {
"build-appx": "electron-builder -w appx --config dist/appx_setting.json"
}
"build":{
"artifactName": "APPNAME_${version}_${os}.${ext}",
"win": {
...(略)...
}
"mac": {
...(略)...
}
}
...(略)...
}
隠し設定を書くappx_setting.json
をdist
ディレクトリに作成し、中身は次のように記述します。packge.jsonから取り除いた部分をそのままコピペするだけです。
{"appx":{"publisher":"CN=XXXXXXXXXXXXXXXXX","identityName":"YYYYYPUBLISHERNAME.APPNAME","applicationId":"PUBLISHERNAME.APPNAME","publisherDisplayName":"PUBLISHERNAME","languages":["JA-JP","EN-US"]}}
これで先と同じ
npm run build-appx
コマンドを実行してコンパイルすると、あたかもappx_setting.json
に記述された設定が、packege.jsonの"build"
セクションに追加されたように振る舞います。
注意点
- 忘れずに
appx_setting.json
は.gitignoreに記載して隠しておきましょう。 - 上記の例でbuildを実行すると、生成されるappxのファイル名がpackage.jsonの
"artifactName"
で設定したものとは異なりデフォルトの名前になります。どうやら--config
の振る舞いとして、"build"
をまるまる入れ替えるという振る舞いをするようです。必要な項目はappx_setting.json
の方に書いておきましょう。
さいごに
ElectronアプリをMicrosoft Storeに提出する記事を先日投稿しましたが、CN=XXXXXXXX
等の非公開設定をどうするか、かなり悩みました。今回の方法が見つかって、よかったよかった。他にも色々使いみちがありそうです。