ESM アジャイル事業部 開発者ブログ

永和システムマネジメント アジャイル事業部の開発者ブログです。

JavaScript のパッケージマネージャ Yarn を Idobata で使った雑感

こんにちは、hibariya です。npm と互換性のある新しいパッケージマネージャ Yarn が話題ですね。idobata.io でも npm の代わりに Yarn を使うようになり、CI やデプロイが数十秒早くなりました。

今日は Yarn を試すなかで気になったポイントをまとめてみます。なお、これを書いている時点で既に 0.16.00.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 を使ってみて気になった点を紹介しました。みなさんの開発の手助けになればと思います。