NPM 종속성을 패치하는 방법

4826 단어 npmjavascriptnode
node/react/angular/... 프로젝트에서 작업 중이며 종속성 중 하나에 버그가 있음을 발견했습니다. 당신은 무엇을 할거야?

첫째, 당황하지 마십시오. 이 문제를 해결하는 데 사용할 수 있는 몇 가지 옵션이 있습니다.

패키지 관리자

The easiest solution, and only applicable if the project is not time-critical, is to open an issue on the package's Github/Gitlab repository and hope the package maintainer fixes the bug soon.

Unfortunately, this will take a while and, you've got a project deadline at some point.

💰: $100 (credits) for you to start your cloud journey with DigitalOcean!

포크 및 수정

In my opinion, if you are using open source software try to contribute. Hence, start with fixing the bug in the package yourself. 😀

Fork the broken package’s repository and create a new branch and fix the issue. Push your changes and update your package.json . For example:

"dependencies": {
  "broken-package": "USERNAME/broken-package#BRANCH-WITH-FIX"
}

Now everybody will get a patched version installed when they run npm install or npm update . This has a good side (bugfix), and a not-so-good side (you have to maintain your fork).

Next step is to open a PR/MR with the bugfix on the repository of the package and eventually the PR gets accepted, merged and, a package update published to npm. In this case, simply revert your dependency declaration for the broken-package in package.json and run npm install broken-package .

패치 패키지 사용

Yes, you've read right, there is an NPM package to fix broken packages. 😀

patch-package 앱 작성자는 즉시 npm 종속성을 수정하고 유지할 수 있습니다.

작동 방식:

# fix a bug in one of your dependencies
vim node_modules/some-package/brokenFile.js

# run patch-package to create a .patch file
npx patch-package some-package

# commit the patch file to share the fix with your team

git add patches/some-package+3.14.15.patch
git commit -m "fix brokenFile.js in some-package"


patch-package에 의해 생성된 패치는 npm(>=5)을 사용할 때 자동으로 정상적으로 적용됩니다.

추가postinstall script:

 "scripts": {
   "postinstall": "patch-package"
 }


플래그patch-package(패키지는 프로덕션에 사용됨) 또는 --save를 사용하여 --save-dev를 설치합니다.

npm i patch-package --save-dev


패치 만들기:

npx patch-package package-name


패치 패키지를 처음 사용하는 경우 앱의 루트 디렉터리에 patches라는 폴더가 생성됩니다. 내부에는 package-name+0.44.0.patch 또는 이와 유사한 파일이 있을 것입니다. 이는 일반적인 이전 버전package-name과 고정 버전 간의 차이입니다. 수정 사항을 팀과 공유하려면 이것을 커밋하세요.

포크를 통한 패치 사용의 이점:
  • 때때로 포크에 추가 빌드 단계가 필요함
  • 종속성이 변경되면 알림을 받고 수정 사항이 여전히 유효한지 확인해야 합니다.

  • 패치를 종속된 코드와 같은 위치에 두십시오.

  • 패치는 일반적인 검토 프로세스의 일부로 검토할 수 있지만 포크는 그렇지 않을 수 있습니다.

  • TL;DR

    There are three options to fix an NPM dependency:

    • Open a bug ticket on the repository of the maintainer
    • Fork & Fix
    • Create a patch and fix it

    Thanks for reading and if you have any questions , use the comment function or send me a message .

    If you want to know more about Node , 이것들을 보세요 Node Tutorials .

    참조(그리고 큰 감사):

    Josh Sutphin , Patch-Package

    좋은 웹페이지 즐겨찾기