[node.js] npm을 통해 설치된 노드 모듈을 편집하는 방법은 무엇입니까?

차례로 validator 모듈을 사용하는 node_swiz 모듈을 사용하고 있습니다.

유효성 검사기 모듈을 변경하고 싶지만 npm 설치를 사용하여 모듈 / 종속성을 설치했습니다.

node_modules 내부의 유효성 검사기 모듈을 변경할 수 있습니까? 아니면 heroku에 게시하거나 다음에 npm install을 실행할 때 node_modules 종속성이 다시 생성되고 최신 버전이 생성됩니까?

구조는 다음과 같습니다.

myNodeApplication
  - node_modules
     - swiz
         - node_modules
            - validator [this is the library I want to edit]

도와 주셔서 감사합니다!



답변

파일을 직접 편집 할 수 있지만 npm이 업데이트 될 때마다 덮어 쓰게됩니다. 가장 좋은 방법은 소스로 바로 이동하는 것입니다.

변경 사항이 전체 모듈의 기능에 영향을 미치고 다른 사용자에게 유용 할 수있는 경우 github의 원본 소스에 기여하고 구현할 변경 사항을 찾을 수 있습니다.

이것이 필요한 독점 기능이고 모듈 개발에 도움이되지 않는 경우 가장 좋은 방법은 github에서 포크하고 변경하는 것입니다. NPM을 사용하여 github에서 직접 항목을 설치할 수 있으며이 방법을 사용하면 원래 소스의 사용자 지정 버전에 향후 변경 사항을 통합 할 수 있습니다.

github에서 직접 설치하려면 다음 명령을 사용하십시오.

npm install https://github.com/<username>/<repository>/tarball/master


답변

patch-package 를 사용하여 노드 모듈을 변경하고 유지할 수 있습니다 .

먼저 내부 패키지를 변경 node_modules한 다음 <package name>방금 변경 한 패키지의 이름을 사용하여 다음 명령을 실행하면 됩니다.

npx patch-package <package name>

그런 다음 patch-package는 patches변경 사항을 나타내는 파일이 있는 폴더 를 만듭니다 . 그런 다음이 파일을 git에 커밋 할 수 있으며 나중에 실행하여 npx patch-package(인수없이) 패치를 복원 할 수 있습니다 .

선택 단계 :

“npm install”을 실행할 때 종속성을 자동으로 패치하려면 package.json의 스크립트 섹션에 다음을 추가하십시오.

"postinstall": "npx patch-package" 


답변

새 모듈을 게시하고 싶지 않았고 npm install변경 사항을 덮어 쓰고 싶지도 않았습니다 . 이 두 가지 문제에 대한 해결책을 찾았지만 @Sdedelbrock의 조언을받는 것이 더 나을 것입니다. 하지만 원하는 경우 방법은 다음과 같습니다.

  1. package.json파일을 편집하여 편집 하려는 종속성을 제거하십시오.
  2. 프로젝트 /node_modules로 이동하여 커밋 할 수있는 저장소의 다른 곳으로 폴더를 이동합니다. 그래서 지금 /node_modules/dependency/dependency
  3. cd 종속성 디렉토리에 입력하고 npm link
  4. cd프로젝트 디렉토리의 루트에 입력 하고 npm link dependency 외부에서이 작업을 수행하는 것이 중요합니다./node_modules/dependency

모든 것이 작동했다면 이제 /node_modules/dependency. 이제 프로젝트를 실행하여 작동하는지 확인할 수 있습니다.


답변