Node.js
Heroku
gulp

gulpやgruntでbuildしたファイルをHerokuにどうdeployするか

More than 1 year has passed since last update.

gulpやgruntでbuildされたファイルは通常gitignoreしてあるので困った

3通り方法見つけました。
自分は一番目の方法でしばらくやってみることにしました。

deploy用の一時branchを作る

#!/bin/bash
set -e

# Create new deploy branch based on master
git checkout -b deploy
# gulp comands to build our site
gulp build
# the dist/ directory is in my .gitignore, so forcibly add it
git add -f build/
git commit -m "Deploying to Heroku"
# Push it up to heroku, the -f ensures that heroku won't complain
git push heroku -f deploy:master
# Return to the last branch
git checkout -
# Delete current deploy branch
git branch -D deploy

一時的にdeployブランチを作成し、そこでbuild後にgitignoreしてあるファイルをforce addしています。
pushし終えたら元のブランチに戻って一時ブランチを削除しています。

この方法でいいなと思ったのは、少しの変更をいちいちcommitしないでもherokuにpush出来てしまうという点です。
開発初期段階ではいちいちcommit&pushするのが嫌だったので。。

参考: http://stackoverflow.com/questions/13784600/how-to-deploy-node-app-that-uses-grunt-to-heroku

heroku上でbuildを実行(postinstallにgulpコマンドを記述)

  "scripts": {
    "postinstall": "gulp build",
    "start": "node build/server.js",
  }

heroku上でpakageのinstallが完了したあとにpostinstallが実行されます。
なのでpostinstallにgulpコマンドを書くという方法もありです。
ただ、コマンド実行に必要なpackageを"devDependencies"ではなくて"Dependencies"に記述しないとダメなようです。

参考: https://medium.com/@adambretz/heroku-gulp-c96dc3a8044d

ローカルでBuildしたファイルをそのままpushする

ローカルでbuildを実行し、buildされたファイルをgitignoreせずにpushするという方法でもいけると思います。