「MongoDB + Express + React + nodeの良いboilerplateないかな〜。。」
「mern-starterがあるじゃないか!」
と思ったけどherokuでどうやって実行させるんだろ〜、とあれこれやったのでその備忘です。
<注意>以下手順を行なった時のmern-starterのバージョンは2.0.0
です。
手順
webpackをdevDependenciesからdependenciesに持ってくる
"webpack": "2.1.0-beta.8",
を"devDependencies"
から"dependencies"
に移動。
なぜかwebpackがserver.bundle.js(ビルドされたサーバーサイドのファイル)でrequireされているため。
クライアントでbuildする
$ npm run clean
$ npm run build
$ npm run build:server
distフォルダが作成され、その下にクライアント・サーバー両方のファイルがビルドされて配置される。
distフォルダを.gitignoreから外す
dist
をコメントアウトまたは削除する。
一つ前の手順で作ったファイルをherokuにあげるため。
Procfileの作成
web: npm run start:prod
これによりherokuでNODE_ENV=production
という環境変数を設定した状態でサーバーが起動される。
MONGO_URLをMONGODB_URIに変更する
mongoURL: process.env.MONGO_URL || 'mongodb://localhost:27017/mern-starter',
のMONGO_URL
をMONGODB_URI
に書き換える。
herokuで使うmLab MongoDBアドオンがURLの環境変数としてMONGODB_URI
を自動で設定するため。
herokuのappを設定
$ heroku create [app_name]
$ heroku addons:create mongolab:sandbox --app [app_name]
でherokuのappを作成してMongoDBのアドオンを追加。
herokuにpushする
$ git add .
$ git commit -anm "first commit"
$ git push heroku master
以上
https://[app_name].herokuapp.com/
にアクセスして確認する。
環境
端末はMacBook Air(macOS Sierra)です。
$ sw_vers -productVersion
10.12
$ npm -v
3.8.3
$ node -v
v5.10.1