Posted at

direnv/dotenvを使ってnpm run-scriptからS3にDeployする


使うもの


  • s3-deploy-dotenv
    $ npm install —save-dev s3-deploy-dotenv

  • direnv、dotenv
    Macなら $ brew install direnv dotenv


手順


1. プロジェクトルートに .env つくる

   # S3 リージョン

S3_REGION=ap-northeast-1
# S3 アクセスキー ID
S3_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXX
# S3 シークレット アクセスキー
S3_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXX
# バケット名
S3_BUCKET={{S3バケット名}}

# デプロイするルートディレクトリ ex) dist
S3_LOCAL_DIR={{ディレクトリパス}}
# デバッグモード 任意
S3_DEBUG_MODE=true


2. npm scriptsに追加

   ...

"deploy": "s3-deploy-dotenv",
...


3. 実行

$ npm run deploy


環境ごとにわけたい

プロダクション環境を分ける場合...


1. プロジェクトルートに .env.production をつくる

   S3_BUCKET={{プロダクションバケット名}}

上書きしたい値のみ記入でOK.


2. npm scriptsに追加

   ...

"prod:deploy": "source .env.production && s3-deploy-dotenv && direnv reload",
...

やってること


  • sourceコマンドで.env.productionを読み込みグローバル変数が上書きされる

  • S3 デプロイの実行

  • .envの環境変数に戻す


3. 実行

$ npm run prod:deploy