CircleCIでyarnを使う

世間はnpm互換のパッケージマネージャであるyarnで盛り上がっているようです。

ヘーシャではCircleCIでnpmなプロジェクトをいっぱいビルドしているので早速雑に試してみた。

circle.yml

とりあえずcircle.ymlはこんな感じ

machine:
  node:
    version: 4.6.0

  post:
    - curl -o- -L https://yarnpkg.com/install.sh | bash

dependencies:
  cache_directories:
    - "~/.yarn-cache"

  pre:
    - yarn --version

  override:
    - yarn install

test:
  override:
    - echo test

キャッシュディレクトリとして ~/.yarn-cache を指定しておくのがミソ。

ちなみにyarn本体は ~/.yarn ディレクトリにbinディレクトリも作成され、install.shの中のyarn_linkを実行することでPATHが通される。~/.yarn をキャッシュするのも検討したが、PATHをexportしてもCircleCIだとコマンド毎にprofileを読み直すのでyarn: command not foundになる。ステップ毎にPATH通すのもダルいし。なのでやっぱりmachineフェーズの中で毎回ヤンヤンするで良さそう。

yarn感想

Yarn速かった

2016/11/24 追記

どうやらyarnのバージョンアップに伴い、yarn0.17系からキャッシュディレクトリが変更になったようです。

~/.yarn-cache/ を CI でキャッシュしてはいけない - Qiita

というわけで、circle.ymlもこのように変わりますね!

machine:
  node:
    version: 4.6.0

  post:
    - curl -o- -L https://yarnpkg.com/install.sh | bash

dependencies:
  cache_directories:
    - "~/.cache/yarn"

  pre:
    - yarn --version

  override:
    - yarn install

test:
  override:
    - echo test