yarn.lock을 자동 업데이트해주는 Pull Request Bot “Itomaki”

공개는 2018년 5월 15일에 종료됩니다.



Yarn 편리합니다. 설치 속도가 빠르고 잠금 파일이 있으므로 모든 환경에서 동일한 패키지를 설치할 수 있습니다.
나도 매일 뭔가 yarn 명령을 두드리고 있습니다.

그러나 하나만 곤란한 적이 있었습니다.
npm 패키지는 매일 엄청난 기세로 업데이트되므로, yarn.lock의 갱신은 상당히 멘드 쑥 작업입니다.
가능한 한 매일 업데이트하지 않으면 차이가 커지고 업데이트가 더 쉬워집니다 .
(장기간 갱신하지 않으면 더욱 비참합니다 )

그런 멘드 쿠사이 작업을 조금이라도 완화시키려고 회사의 엔지니어 팀에서 “Itomaki(이토마키)”라는 서비스를 만들었습니다.



“이토마키”란



간단히 말해, yarn upgrade 명령으로 갱신되는 yarn.lock 파일을 커밋해, Pull Request 를 던져 주는 서비스입니다.

deppbot이라는 비슷한 서비스에서 아이디어를 얻었습니다 (deppbot은 Gemfile.lock를 자동으로 업데이트하는 서비스입니다).

또한 Itomaki와 유사한 서비스에 Greenkeeper이 있습니다. 원래는 Greenkeeper 를 사용하고 있었습니다만, yarn 에 대응하고 있지 않았기 때문에 자작했습니다.

Greenkeeper도 최근 yarn을 지원했습니다. 같지만 Itomaki는 package.json를 업데이트하지 않고 yarn.lock 만 업데이트한다는 차이가 있습니다.
이것은 "package.json의 패키지 버전을 직접 관리한다"는 개념을 기반으로 합니다.

예를 들어 과거에 [email protected]를 설치하고 사용한다고 가정합니다. package.jsonyarn.lock 파일은 다음과 같아야 합니다.

package.json
{
  "devDependencies": {
    "webpack": "^2.2.0"
  }
}

yarn.lock
webpack@^2.2.0:
  version "2.2.0"
  resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.0.tgz#09246336b5581c9002353f75bcadb598a648f977"

이 경우 Itomaki는 yarn.lock 만 업데이트합니다.

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 직접 업데이트합니다.

package.json
{
  "devDependencies": {
-   "webpack": "^2.2.0"
+   "webpack": "^3.0.0"
  }
}

Itomaki는 다음과 같이 업데이트합니다.

yarn.lock
- 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에서 테스트를 자동화한다고 가정합니다.
이렇게 하면, 프로덕션에서 사용하는 패키지는 자동으로 메이저 업그레이드 하지 않고, 개발에서 사용하는 패키지는 갱신이 있으면 수시로 갱신됩니다.

package.json
{
  "dependencies": {
    "react": "^15.5.4"
  },
  "devDependencies": {
    "mocha": "*"
  }
}

사용법



Itomaki 톱 페이지에서 GitHub 계정으로 로그인합니다.

로그인한 후 대시보드에서 서비스를 받을 리포지토리를 선택합니다.
(package.json, yarn.lock 파일이 상주하는 리포지토리를 선택하십시오)

몇 분 후 Itomaki에서 선택한 리포지토리에 Pull Request를 던집니다.

정기적으로 2일에 한 번씩 Pull Request를 던집니다.
(이미 Itomaki의 Pull Request가 이미 있다면 던지지 않습니다)

실례



회사에서 사용하는 공개 npm 패키지eslint-config-interfirm에서 사용하는 예입니다.



이 패키지 외에도 회사의 리포지토리(private도 있음)나 개인의 취미 프로젝트에서 간간 사용하고 있습니다.

관심이 있다면 꼭 사용해보세요!

좋은 웹페이지 즐겨찾기