node_modules를 직접 수정하시겠습니까? 당신은 매우 우아하지 않습니다!

1873 단어 npm

node_modules의 파일을 수정해야 하는 이유는 무엇입니까?



일일 개발에서는 node_modules의 코드를 변경할 필요가 거의 없지만 수정해야 하는 상황이 많습니다.

예를 들어, 지난번에 만났던 장면. 인터페이스 전달을 위해 미들웨어 패키지를 사용했는데 문제가 발생했습니다. 이 패키지는 업로드된 파일의 형식을 제한합니다.

사실 파일 형식에 대한 제한을 없애고 모든 파일 형식을 지원하고 싶기 때문에 node_modules에서 이 패키지의 코드를 강제로 수정하고 제한을 해제해야 원하는 효과를 얻을 수 있습니다.

어떻게 변경합니까? 이것은 문제입니다. 아니면 어떻게 바꿔야 최고가 될까요?

1. 직접 수정



즉, node_modules로 직접 가서 해당 패키지의 코드를 찾아 해당 위치에서 코드를 수정한 다음 프로젝트를 다시 시작하면 이해하기 쉽습니다. 내가 원하는 효과를 얻을 수 있습니다.

그러나 사실 이 접근 방식에는 단점이 너무 많습니다!
  • 로컬 환경에서만 사용할 수 있으며 동료는 사용할 수 없습니다.
  • 해당 패키지의 코드는 npm i 명령을 실행한 후 원래 상태로 복원됩니다.

  • 그래서 아무나 해서는 안됩니다.

    2. 패키지를 독립적으로 유지



    업로드 파일의 형식을 제한하는 A라는 패키지를 사용했는데 원하지도 않고 제한을 해제하고 싶은데 어떻게 하면 되나요?

    이렇게 할 수 있습니다. 실제로 패키지 A의 복사본인 새 패키지 B를 작성하고 복사를 마친 후 패키지 B의 제한 사항을 해제한 다음 패키지 B를 npm 플랫폼에 게시합니다.

    지금은 더 이상 내 프로젝트에서 패키지 A를 사용할 필요가 없으며 유지 관리하는 패키지 B만 설치하면 됩니다. 이것으로도 그 효과를 얻을 수 있지만 유지 관리 비용이 증가합니다.

    3. 패치 패키지



    이것은 node_modules에 있는 패키지의 코드를 수정하는 데 특별히 사용되는 도구이며 사용하기도 매우 간단합니다.

    3.1 패치 패키지 설치




    npm i patch-package
    


    3.2 node_modules 수정



    예를 들어 패키지 A를 수정하려면 node_modules에서 직접 수정하고 다음 명령을 실행합니다.
    npx 패치 패키지 A

    이때 디렉토리 패치는 프로젝트의 루트 디렉토리에 나타나며 패키지 A의 패치 파일이 그 안에 나타납니다. 이 파일은 매우 유용할 수 있습니다.

    패치 디렉토리를 Git에 제출하는 것을 잊지 마십시오.

    사실 이때 이미 본인이 수정한 코드를 사용하고 있는데 어떻게 하면 동료들이 그 코드와 동기화를 시킬 수 있을지가 관건이다.

    3.3 "사후 설치": "패치 패키지"

    package.json 파일의 스크립트에 명령 추가

    "postinstall": "patch-package"
    


    이 명령의 기능은 다음과 같습니다. 동료가 npm i를 실행할 때 npm run postinstall 명령이 자동으로 실행됩니다. 즉, 패치 디렉토리를 읽고 해당 패치를 해당 패키지에 넣습니다.

    좋은 웹페이지 즐겨찾기