一般公開は 2018/5/15 で終了します。
Yarnって便利ですよね。インストールスピードは速いし、Lockファイルがあるのでどの環境でも同じパッケージをインストールできます。
私も毎日何かしらの yarn
コマンドを叩いてます。
しかし、一つだけ困ったことがありました。
npmパッケージは毎日すごい勢いで更新されるので、yarn.lock
の更新は結構メンドくさい作業です。
できるだけ毎日更新しないと、差分が大きくなって更新がさらにメンドくさくなります 。
(長期間更新しないとさらに悲惨です )
そんなメンドくさい作業を少しでも和らげようと、会社のエンジニアチームで “Itomaki(いとまき)”というサービスを作りました。
“Itomaki”とは
簡単に言うと、yarn upgrade
コマンドで更新される yarn.lock
ファイルをコミットして、Pull Request を投げてくれるサービスです。
deppbot という似たようなサービスから、アイデアを得ました(deppbot は Gemfile.lock
を自動更新してくれるサービスです)。
また、Itomaki と似たようなサービスに Greenkeeperがあります。元々は Greenkeeper を使っていたのですが、yarn に対応していなかったので自作しました。
Greenkeeper も最近 yarn に対応したようですが、Itomaki は package.json
は更新せず、yarn.lock
のみを更新するという違いがあります。
これは「package.json
にあるパッケージのバージョンは自分で管理する」という考え方に基づいています。
例えば、過去に webpack@2.2.2
をインストールして使っているとします。package.json
と yarn.lock
ファイルは次のようになっているはずです。
{
"devDependencies": {
"webpack": "^2.2.0"
}
}
webpack@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.0.tgz#09246336b5581c9002353f75bcadb598a648f977"
この場合、Itomaki は yarn.lock
のみを更新します。
webpack@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.0.tgz#09246336b5581c9002353f75bcadb598a648f977"
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.6.1.tgz#2e0457f0abb1ac5df3ab106c69c672f236785f07"
wepback@3
にアップグレードしたい場合は、自分で package.json
を更新します。
{
"devDependencies": {
- "webpack": "^2.2.0"
+ "webpack": "^3.0.0"
}
}
Itomaki は次のように更新してくれます。
- webpack@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.0.tgz#09246336b5581c9002353f75bcadb598a648f977"
+ webpack@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.0.0.tgz#ee9bcebf21247f7153cb410168cab45e3a59d4d7"
Tips
個人的には、次のような設定をよく使っています。Travis などのCIでテストを自動化していることが前提です。
こうすれば、本番で使うパッケージは自動でメジャーアップグレードせず、開発で使うパッケージは更新があれば随時更新されます。
{
"dependencies": {
"react": "^15.5.4"
},
"devDependencies": {
"mocha": "*"
}
}
使い方
Itomaki のトップページから GitHub アカウントでログインします。
ログイン後、ダッシュボードでサービスを受けたいリポジトリを選択します。
(package.json
, yarn.lock
ファイルが存在するリポジトリを選択してください)
数分後、Itomaki から選択したリポジトリに Pull Request が投げられます。
定期的には、2日に1回のペースで Pull Request が投げられます。
(すでに Itomaki の Pull Request がある場合は、投げられません)
実例
会社で使っている公開 npm パッケージ eslint-config-interfirm での使用例です。
このパッケージの他にも、会社のリポジトリ(private もあり)や個人の趣味プロジェクトでガンガン使用しています。
興味があれば、ぜひ使ってみてください!