herokuにNode.jsのアプリをデプロイする
package.jsonをよんでデプロイしてくれる
heroku localでローカルに展開できる
当然npm installしていないとエラーになるので注意
heroku openでデプロイ先のURLを開く
デフォルトでは/、第二引数で指定すれば/指定したpathにアクセスする
yarnを使いたい場合はengineに記述しておく heroku configでconfの設定ができる
KEY=VALUE format
Start every new project with npm init
Use a smart .npmrc
上の2つはyarnを使うのでとばす
Hop on the ES6 train
Stick with lowercase
PSRみたいにクラス名とファイル名を一致させる規約もあるけど使っちゃだめ 理由:Node.jsがクロスプラットフォームだから
OSXやWindowsはmyclassとMyClassを同じに扱うがLinuxは別に扱う
ポータビリティのため
代わりに、lowercaseを使おう
Cluster your app
nodeのランタイムは1CPU、約1.5GBのメモリに制限されているので、クラスタ化されてないアプリをつよつよサーバにいれてもリソースの無駄
マルチコアをつかったり1.5GB以上のメモリを使いたいので、クラスタサポートをアプリに組み込もう
nodeはクラスタをサポートしている
もしも今、よわよわハードで1つのプロセスしか動かさないとしても、将来に対応するハメになるからやっとくといいよ
自分のアプリが必要なプロセスの数を決定する方法は?
テストをすること
クラスタのプロセス管理の実装はnpmにいろいろある。自分にあったclusterの抽象化を選ぼう
Be environmentally aware
環境変数の利点をうまく使おう
Foreman is a manager for Procfile-based applications. Its aim is to abstract away the details of the Procfile format, and allow you to either run your application directly or export it to some other process management format.
ローカル開発が楽になる
Avoid garbage
デフォルトのメモリ制限が1.5GBぐらいで、未使用のメモリを再生する前に、制限に完全に達するまで待つことがあります
With its default limit of about 1.5 GB, it sometimes waits until it absolutely has to before reclaiming unused memory.
翻訳怪しいkadoyau.icon
これは1.5GBよりメモリが少ない環境でアプリを動かしたいとき特に重要
Hook things up
npmのライフサイクルスクリプトは自動化のために便利なhook ビルド前になんかしたいならpreinstall
ビルド後になんかしたいならpostinstall
環境変数も使える
hookのスクリプトが大きくなりすぎた場合は別ファイルに切り出せる
Only git the important bits
余計なもの(コンパイル結果やnode_modules)は.gitignoreして
理由
ネイティブでコンパイルする依存関係があると間違ったアーキテクチャでビルドしたバイナリが含まれてしまうので、ポータビリティがおちる