3
1

More than 3 years have passed since last update.

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

Posted at

やれること

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等の非公開設定をどうするか、かなり悩みました。今回の方法が見つかって、よかったよかった。他にも色々使いみちがありそうです。

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1