nodejsは進化が速く最新の機能がどんどん入ってきます。
個人的にgulpfile.js
や簡単なスクリプトぐらいならリスクも少ないのでes6の機能を素で使うために、どんどんバージョンアップしていきたいです。
当然複数人で開発していると、メンバー内で使っているnodejsのバージョンを揃える必要があります。
つらつらREADMEに書いてもいいんですが、何かうまい方法がないかと考えてみました。
rubyやrbenvであれば、.ruby-version
で指定したり、Gemfile
でも指定できます。
同様にnodejsの場合、package.json
内のengines
プロパティでサポートするenginesを指定するのでこれで解決かと思いましたが、これはライブラリとしてインストールされる時に使われるもののようで、プロジェクト自身がnpm install
した時や実行時にチェックはしてくれるものではないようです。
そこで check-enginesというのを使いたいと思います。これはpackage.json
の内のengines
を見て現在実行しているnodejsがサポートされているものかをチェックしてくれるライブラリみたいです。cliも提供されています。以下のようなメッセージが出力されます。
[Error: Error: node version (4.0.0) does not satisfy specified range (>=5.0.0)]
これとpostinstall
scriptsを組み合わせれば、npm install
した時にチェックできそうです。
最終的に以下のようにすれば、npm install
時に使っているnodejsのバージョンがサポートされていなければエラーメッセージが出るようになりました。
{
"name": "LooksLikeTeenSpirit",
"version": "1.0.0",
"description": "...",
"repository": "...",
"main": "index.js",
"engines": {
"node": ">=4.0.0"
},
"scripts": {
"postinstall": "node_modules/check-engines/bin/check-engines"
},
"author": "Kurt Cobein",
"license": "ISC",
"devDependencies": {
"check-engines": "^1.2.0",
}
}
npm install
はまず欠かせない作業なので問題ないでしょう。
これで無事プロジェクトで使っているnodeのバージョンを合わせることができました。
でも自分が知らないだけで他に何かちゃんとした方法があるような気がするので、
もっといい方法知っていれば、教えてください。