👶

.envファイルの環境変数がコマンドに渡らない

2022/09/30に公開

背景

次のようなことがありました。
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