npm scriptでdotenvが使いたい

2020/07/06
node.js

環境の構成  |  Firebase によるとfirebase functionsでAPIキーとかの環境変数を使う場合は

firebase functions:config:set someservice.key="XXXXXXX"

ってやる必要があるんですけど、これをnpmスクリプトから.envファイルを使って実行するメモです

  • node 10.21.0
  • typescript 3.8.0
  • ts-node 8.10.2
  • dotenv 8.2.0

方法ですが、jsにコマンドラインを叩くスクリプトを書いて実行すればできるんじゃない?  と思ってやったらできました。

依存のインストール

npm install dotenv ts-node

.env

SOME_ID=XXXXXXXXX
SOME_API_KEY=XXXXXXXXX

npmから実行するスクリプト

setConfig.ts

import * as dotenv from "dotenv";
import * as util from "util";
import * as childProcess from "child_process";

const exec: (command: string) => Promise<void> = async (command: string) => {
  const {stdout, stderr} = await util.promisify(childProcess.exec)(command);
  console.log(stdout);
  console.error(stderr);
}

dotenv.config();

const setConfig = async () =>{
  try{
    await exec(`firebase functions:config:set some.id=${process.env.SOME_ID}`);
    await exec(`firebase functions:config:set some.apikey=${process.env.SOME_API_KEY}`);
  
    await exec(`firebase functions:config:get`);
  }
  catch(e){
    console.error(e);
  }
}

setConfig();

package.json

package.json

{
  ...
  "scripts":{
    "config": "ts-node setConfig.ts"
  }
  ...
}

もっとスマートな方法がありそうな気もしますね。

© 2019-2020 hassakulab.com, built with Gatsby