こんにちは、hibariya です。npm と互換性のある新しいパッケージマネージャ Yarn が話題ですね。idobata.io でも npm の代わりに Yarn を使うようになり、CI やデプロイが数十秒早くなりました。
今日は Yarn を試すなかで気になったポイントをまとめてみます。なお、これを書いている時点で既に 0.16.0 と 0.16.1 がリリースされ、既に解決したものもあります。ぜひ最新版へアップデートしましょう。
yarn run
のスペースの扱い
0.15.1 までは、スペースを含めてコマンドの一部として扱われてしまうようで、オプションや引数を渡す使い方ができませんでした。そのため package.json に以下のような scripts
を用意して yarn run
で実行すると失敗していました。
"scripts": { "build": "ember build", "start": "ember server", "install-build": "bower install --silent --allow-root && ember build" },
yarnpkg/yarn#809 で修正され、0.16.0 のリリースに含まれています。
CircleCI + Docker で yarn install
できない
CircleCI 上で動かした Docker コンテナの中で yarn install
が失敗することがあります。yarnpkg/yarn#918 と同じ現象と思われます。
ESM では Idobata をオンプレミスで使う 方法を提供していて、その手段のひとつとして Docker 上での動作環境もメンテナンスしています。CI での動作確認は必要なので、いったん、 Docker 上では npm を使うような対策を施しました。
Heroku で Yarn を使う
heroku-buildpack-nodejs の Support for Yarn package manager で対応が進められており、今のところは yarn ブランチで試せます。
heroku buildpacks:set https://github.com/heroku/heroku-buildpack-nodejs#yarn
Engine Yard 環境に Yarn を入れる
idobata.io は Engine Yard 上で動作しており、Engine Yard の環境は Gentoo Linux です。Gentoo 上で Yarn をパッケージ管理できて、ひとまずお手軽な方法を、と検討した結果、ebuild ファイルを作り ローカルの overlay として使うようにしました。
おわりに
現時点の Yarn を使ってみて気になった点を紹介しました。みなさんの開発の手助けになればと思います。