[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의 조언을받는 것이 더 나을 것입니다. 하지만 원하는 경우 방법은 다음과 같습니다.
package.json
파일을 편집하여 편집 하려는 종속성을 제거하십시오.- 프로젝트
/node_modules
로 이동하여 커밋 할 수있는 저장소의 다른 곳으로 폴더를 이동합니다. 그래서 지금/node_modules/dependency
은/dependency
cd
종속성 디렉토리에 입력하고npm link
cd
프로젝트 디렉토리의 루트에 입력 하고npm link dependency
외부에서이 작업을 수행하는 것이 중요합니다./node_modules
/dependency
모든 것이 작동했다면 이제 /node_modules/dependency
. 이제 프로젝트를 실행하여 작동하는지 확인할 수 있습니다.