Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8835

Electron-builder実行時にpackage.jsonに記入したくない非公開設定を追加する

$
0
0

やれること

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引数を利用して読み込むことにします。外部ファイルのフォーマットはymljsonが使えるらしいです。今回の例では外部ファイルを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.jsondistディレクトリに作成し、中身は次のように記述します。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等の非公開設定をどうするか、かなり悩みました。今回の方法が見つかって、よかったよかった。他にも色々使いみちがありそうです。


Viewing all articles
Browse latest Browse all 8835

Trending Articles