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"
}
...
}
もっとスマートな方法がありそうな気もしますね。