👶
.envファイルの環境変数がコマンドに渡らない
背景
次のようなことがありました。
GitHub GraphQL APIから@graphql-codegen/cliにて型生成させるために、以下のようにベアラートークンを環境変数で渡しているのに、認証がされずうまくいきませんでした。
import { CodegenConfig } from '@graphql-codegen/cli';
const config: CodegenConfig = {
overwrite: true,
schema: [
{
'https://api.github.com/graphql': {
headers: {
authorization: `Bearer ${process.env.GITHUB_BEARER_TOKEN}`,
},
},
},
],
:
なお、今回の例では、以下のgenerateスクリプトから呼び出していますが、環境変数が読み込まれていません。
:
"scripts": {
"dev": "next dev",
:
"generate": "graphql-codegen --config codegen.ts"
},
:
解決方法
env-cmdをインストールします。以下はpnpmの場合の例です。
$ pnpm i -D env-cmd
generateスクリプトをenv-cmdを使って、次のように書き換えることによって、指定したenvファイルの内容が続くコマンドに渡されます。
:
"scripts": {
"dev": "next dev",
:
"generate": "env-cmd -f ./.env.local graphql-codegen --config codegen.ts"
},
:
Discussion