node_modules를 변경해야 하는 경우 어떻게 해야 합니까?

4073 단어 nodenpmelectron
나는 노드/전자 위에 응용 프로그램을 구축하고 있으며 최근 전자 업데이트로 인해 일부 종속성이 손상되어 모든 기능을 유지하면서 최신 버전으로 업그레이드할 수 없습니다.

이러한 경우 올바른 동작은 종속성에 접근하고 문제를 열거나 풀 요청을 제출하는 것이지만 종속성이 더 이상 유지되지 않거나 해당 저장소의 개발 프로세스가 중단되거나 느려지면 어떻게 됩니까? 개발을 계속 진행해야 합니까?

그것이 내가 직면한 시나리오였다. 내가 필요로 하는 변경 사항은 매우 현지화되어 있었지만, 백만 번을 시도해도 내 종속성 포크에서 작동하도록 만들 수 없었습니다. 설상가상으로, 리포지토리의 마지막 커밋은 6개월이 넘었고, 일주일 동안 열어본 문제에 대한 답변의 흔적이 없습니다.

그때 앱 작성자가 npm 종속성을 즉시 수정하고 유지할 수 있는 패키지인 patch-package 을 찾았습니다.


ds300 / 패치 패키지


깨진 노드 모듈을 즉시 수정 🏃🏽‍♀️💨







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"

Patches created by patch-package are automatically and gracefully applied when you use npm(>=5) or yarn.

No more waiting around for pull requests to be merged and published. No more forking repos just to fix that one tiny thing preventing your app from working.

설정

In package.json

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

Then

npm

npm i patch-package
프로덕션 환경에서 npm을 실행할 필요가 없는 경우 --save-dev를 사용할 수 있습니다. 만약에
당신은 웹 프론트 엔드를 만들고 있습니다.…

View on GitHub

README에는 필요한 모든 정보가 있지만 여기서 아이디어를 요약하겠습니다.
  • 패치 패키지 설치(npm 또는 yarn 사용)

  • 패치 패키지에 대한 호출을 포함하도록 scripts에서 package.json 규칙을 업데이트합니다.

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

  • node_modules에서 직접 종속성에 필요한 변경을 수행합니다
  • .

  • 수정한 패키지를 지정하여 patch-package를 호출합니다.

    (npx | yarn) patch-package package-name
    

    마지막 명령은 patches/에 패치 파일(diff)을 생성합니다. 이는 공개 종속성과 변경된 버전 간의 diff입니다.
  • 새 패치 파일을 포함하여 변경 사항을 커밋하면 모든 것이 예상대로 작동합니다.

  • 이제 당신(또는 누군가)이 리포지토리에 install을 호출할 때마다 patch-package가 호출되어 해당 변경 사항을 적용합니다.



    문제 해결됨!

    당신은 어때요? 비슷한 조치를 취해야 했던 적이 있습니까?

    좋은 웹페이지 즐겨찾기