NPM 패키지를 최신 상태로 유지하는 방법을 생각합니다.

여러분은 프런트 엔드에서 사용하는 NPM 패키지를 업데이트합니까?

저는 의식이 낮기 때문에 약 1년 정도 방치했습니다. .

방치하면 차이가 큰 버전 업의 위험이 증가하거나
패키지 보안 위험이 발견되면 즉시 해결할 수 없게 될 수 있으므로,
정기적으로 업데이트하는 것이 좋습니다.

이번에는 다음 두 가지를 소개합니다.
  • 버전이 업데이트 된 패키지를 정기적으로 통지하는 메커니즘 만들기
  • yarn upgrade-interactive로 버전 업

  • NPM 패키지를 통지/갱신하는 서비스는 이미 있습니다만, 통지하는 것만으로 간단하게 구현할 수 있으므로 만들어 보겠습니다

    버전 업이 이루어진 패키지를 정기적으로 통지하는 메커니즘을 작성



    준비



    Slack과 CircleCI를 함께 사용하여 HookURL 게시

    htps : // my. scck. 코 m/아 ps
    여기에서 CircleCI 검색 및 추가

    HookURL을 복사하십시오.https://hooks.slack.com/services/...
    HookURL을 CircleCI 환경 변수에 등록하십시오.

    SETTINGS -> Projects -> 대상 GitHub 리포지토리 선택 -> 설정 아이콘 클릭 -> Environment Variables -> Add Variable

    이번에는 SLACK_WEBHOOK_URL이라는 변수 이름으로 등록

    CircleCI 리노베이션



    수정 부분만 발췌합니다

    .circleci/config.yml
    version: 2
    jobs:
      outdated:
        <<: *setup-docker
        steps:
          - checkout
          - restore_cache:
              name: Download and cache dependencies
              keys:
                - v1-dependencies-{{ checksum "package.json" }}
                - v1-dependencies-
          - run:
              name: Install
              command: yarn install
          - run:
              name: Outdated
              command: |
                PAYLOAD=`cat << EOF
                {
                  "attachments": [
                    {
                      "pretext": "outdated",
                      "text": '$(yarn outdated --json | $(yarn bin)/format-yarn-outdated)',
                      "mrkdwn_in": ["text"]
                    }
                  ]
                }
                EOF`
                curl -X POST -d "payload=$PAYLOAD" $SLACK_WEBHOOK_URL
    
    ...
    
    workflows:
      version: 2
      nightly:
        triggers:
          - schedule:
              cron: '00 0 * * *'
              filters:
                branches:
                  only:
                    - master
        jobs:
          - outdated
    

    흐름
  • workflows triggers 기능을 사용하여 cron을 사용하여 정기 작업을 등록합니다.
    (시간은 UTC이므로 위의 예라면 오전 9시에 실행된다)
  • outdated 작업에서 HookURL 에 cURL
  • $(yarn outdated --json | $(yarn bin)/format-yarn-outdated)가하고있는 일은yarn outdated를 Slack에서 쉽게 볼 수 있도록 다음 패키지를 사용하여 처리합니다.
    htps //w w. 음 pmjs. 코 m / Pac 카게 / 야 r-o-t t-d fur r

    보충
  • CircleCI 2.0 이상
  • 사용하는 Docker 이미지는 Node.js 기반 녀석

  • 결과



    도착했다!

    그렇지만 Slack 로 Markdown 볼 수 있게 했지만, 테이블은 대응하고 있지 않네. .
    하지만 yarn outdated의 결과를 정기적으로 통지 할 수 있게 되었으므로, 우선은 오케이입니다

    1일 1회의 통지라고 많기 때문에, 주 1회라든지라도 좋을까 생각한다 ( cron: '00 0 * * 1' )

    yarn upgrade-interactive를 사용한 버전 업그레이드



    패키지의 갱신을 정기적으로 통지해 왔으므로, 이번은 실제로 버전 업하는 작업입니다

    지금까지 패키지의 최신 버전을 확인하고 yarn upgrade [email protected]yarn upgrade-interactive 를 사용하면, 이것들을 정리해 할 수 있습니다 (게다가 복수 패키지를 정리해)

    시도하려면 package.json이있는 루트 디렉토리에서 yarn upgrade-interactive를 실행해보십시오.

    그러면 다음과 같은 화면이됩니다.


    버전 업하고 싶은 패키지를 Space 키로 선택
    전체 선택은 a 키



    실행은 Enter 키

    옵션없이 upgrade-interactive를 실행하면 package.json 범위 내에서만 버전 업그레이드가 발생합니다.
    그래서 yarn.lock 만 업데이트하십시오.

    최신 레지스트리를보고 버전 업그레이드를 원하면 --latest 옵션을 사용하여 실행하십시오.
    yarn upgrade-interactive --latest
    

    메이저 버전 업 된 패키지도 나오게 되었을까 생각합니다
    그건 그렇고, --latest 옵션을 사용하여 패키지를 업데이트 한 경우 yarn.lock과 package.json을 모두 업데이트하십시오.

    좋은 웹페이지 즐겨찾기