prosource

npm을 통해 설치된 노드 모듈을 편집하려면 어떻게 해야 합니까?

probook 2023. 7. 27. 22:07
반응형

npm을 통해 설치된 노드 모듈을 편집하려면 어떻게 해야 합니까?

저는 node_swiz 모듈을 사용하고 있으며, 이 모듈은 validator 모듈을 사용합니다.

validator 모듈을 변경하고 싶은데 npm install을 사용하여 모듈/의존성을 설치했습니다.

node_modules 내부의 Validator 모듈만 변경할 수 있습니까? 아니면 node_modules 종속성이 다시 생성되어 herku에 게시하거나 다음에 npm 설치를 실행할 때 최신 버전을 얻을 수 있습니까?

구조는 다음과 같습니다.

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/<branch>

패치 패키지를 사용하여 노드 모듈을 변경하고 유지할 수 있습니다.

이 작업은 먼저 내부 패키지를 변경하여 수행할 수 있습니다.node_modules다음 명령을 실행합니다.<package name>방금 변경한 패키지의 이름입니다.

npx patch-package <package name>

그러면 패치 패키지가 생성됩니다.patches변경 사항을 나타내는 파일이 들어 있는 폴더입니다.그런 다음 이 파일을 git에 커밋할 수 있으며 패치는 나중에 실행하여 복원할 수 있습니다.npx patch-package(인수 없음).

선택적 단계:

패키지의 스크립트 섹션에 다음을 추가합니다.json: "npm 설치"를 실행할 때 종속성을 자동으로 패치합니다.

"postinstall": "npx patch-package" 

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

  1. 를 합니다.package.json편집할 종속성을 제거하는 파일입니다.
  2. 프젝트이다에 들어가 ./node_modules폴더를 저장소에서 커밋할 수 있는 다른 위치로 이동합니다.그래서 지금/node_modules/dependency에 있음/dependency
  3. cd에 를 합니다.npm link
  4. cd에 " 젝트토디리렉및유루형이트동다합니로의프로이다니▁into합동루트로▁type유"를 입력합니다.npm link dependency 이 작업을 외부에서 수행하는 것이 중요합니다./node_modules그리고./dependency

모든 것이 제대로 작동했다면 이제 다음에서 생성된 심볼 링크가 있어야 합니다./node_modules/dependency이제 프로젝트를 실행하여 작동하는지 확인할 수 있습니다.

Github repo를 포크하고 필요한 변경을 하면 다음과 같이 패키지를 설치할 수 있습니다.

npm install git+https://github.com/visionmedia/express.git

언급URL : https://stackoverflow.com/questions/13300137/how-to-edit-a-node-module-installed-via-npm

반응형