program tip

npm 설치 및 분기 된 github 저장소 빌드

radiobox 2020. 8. 10. 07:52
반응형

npm 설치 및 분기 된 github 저장소 빌드


이것은 완전히 새로운 질문은 아니지만 지금은 좋은 곳을 찾고 있었고 해결책을 찾는 데 어려움을 겪고 있습니다.

angular-translate라는 앵귤러 앱에 모듈을 사용하고 있습니다. 그러나 모든 것이 원하는 방식으로 작동하도록 소스 코드를 약간 수정해야했으며 이제 이러한 변경 사항을 npm install. 동료가 소스 코드의 저장소를 포크하고 포크 된 저장소를 종속성으로 가리 키도록 제안했습니다. 예를 들어 이러한 방법으로 시도했습니다.

npm install https://github.com/myRepo/angular-translate
npm install https://github.com/myRepo/angular-translate/archive/master.tar.gz

첫 번째는 빌드없이 이와 같은 디렉토리를 제공합니다. package.json, .npmignore 및 일부 마크 다운 파일

-angular-translate
   .npmignore 
   .nvmrc
    CHANGELOG.md 
    package.json
    etc

두 번째 npm install는 전체 저장소를 제공하지만 명령을 사용할 때와 같은 빌드를 얻지 못합니다 npm install angular-translate. prepublish 스크립트를 실행하는 것에 대한 이야기를 보았지만 모든 모듈을 설치할 때 어떻게해야할지 모르겠습니다. 또한 포크를 npm 레지스트리에 자체 모듈로 게시하려고 시도했지만 다시 빌드가 없으며 이것이 올바른 작업인지 모르겠습니다.

나는 주제에 대한 나의 무지에 대해 사과드립니다. npm에 대한 경험이 많지 않습니다. 이 문제에 대한 피드백을 받고 싶습니다. 패키지의 소스 코드를 수정해야 할 때 일반적인 문제가 될 수 있습니까? 더 나은 해결책이 있을까요? 도움을 주셔서 미리 감사드립니다.


를 시도해보십시오 npm install <ghusername>/<repoName>. <ghUsername>여기서은 (는 @) GitHub 사용자 이름이고은 <repoName>저장소의 이름입니다. 올바르게 설치해야합니다. --save또는 --save-dev플래그를 install 명령과 함께 사용 하여 package.json.

제대로 작동하지 않으면 .npmignore파일 내용을 확인 하십시오.

설치 명령이 오래 걸리더라도 당황하지 마십시오. git 저장소에서 설치하는 것은 npm 레지스트리에서 설치하는 것보다 느립니다.


편집하다:

귀하의 문제는 귀하의 경우에 dist/repo에 커밋되지 않는다는 것입니다 ( .gitignore. 이것이 실제 코드가있는 곳입니다. 패키지가 npm 레지스트리에 게시되기 전에 dist/파일에서 빌드 src/되지만 dist/repo에 커밋되지 않습니다.

그것은 추한하지만,이 경우에는 제거해야합니다 dist/으로부터 .gitignore실행 다음과 :

npm run build
git add .
git commit
git push

( npm install먼저 실행했는지 확인하십시오 )

그러면 github에서 설치할 수 있습니다.

postinstall스크립트를 사용하여이 작업을 수행하는 다른 방법이있을 수 있지만 가능한지 잘 모르겠습니다. 나는 그것을 시도한 적이 없습니다.


npm 5를 사용하는 사람들을위한 업데이트 :

npm @ 5부터 prepublish스크립트는 더 이상 사용되지 않습니다.

사용하여 prepare빌드 단계를하고 prepublishOnly업로드 전용을 위해.

"prepare": "npm run build"스크립트에 a 추가하면 모든 문제가 해결되었습니다.


@RyanZim의 훌륭한 답변을 피기 백 postinstall하는 것은 확실히 유효한 옵션입니다.

다음 중 하나를 수행하십시오.

  1. 분기 된 저장소에서 package.json을 업데이트하여 postinstall 요소를 스크립트에 추가하십시오. 여기에서 컴파일 된 출력을 얻는 데 필요한 모든 것을 실행하십시오 (선호).
  2. package.json을 업데이트하고 node_modules에서 필요한 디렉토리를 업데이트하는 사후 설치를 추가하십시오.

다른 사람 저장소를 포크 한 경우 GitHub를 통한 패키지 설치가 스크립트를 빌드하는 데 필요한 수단을 제공하지 않기 때문에 작동하지 않는 문제를 설명하기 위해 문제를 제기 할 가치가 있습니다. 거기에서 PR을 수락하여 설치 후이 문제를 해결하거나 거부하고 # 2를 수행 할 수 있습니다.


prepare 올바른 방법입니다

소스 파일이있는 저장소가 있지만이를 사용하기 위해 "빌드"단계가 필요한 경우 prepare해당 "패키지"에 스크립트를 추가하면 모든 경우에 원하는대로 정확하게 수행됩니다 (npm 4 기준).

prepare: 패키지가 압축되고 게시되기 전 npm install, 인수없이 로컬에서 , git 종속성을 설치할 때 모두 실행합니다 .

빌드 종속성을 넣을 수도 있으며 실행 devDependencies되기 전에 설치됩니다 prepare.

다음은 이 방법을 사용하는 내 패키지의 입니다.


문제 .gitignore

이 옵션에는 많은 사람들이 참여하는 한 가지 문제가 있습니다. 종속성을 준비 할 때 Npm 및 Yarn은의 섹션에 나열된 파일 유지합니다 .filespackage.json

하나는 볼 수있는 files모든 파일에 기본적으로 포함되어 있으며이 완료 생각합니다. 무엇 쉽게 누락되어 있다는 것입니다 .npmignore 주로 재정의 files지시를 하고 , 경우에 .npmignore존재하지 않는, .gitignore대신 사용됩니다.

당신이 나열된 내장 된 파일이있는 경우 그래서, .gitignore당신의 내장 파일을 나열하지 않는 온전한 사람 등을 files하고, 사용하지 않는 .npmignore파일을 prepare같다 깨진 .

files빌드 된 파일 만 포함하도록 수정 하거나 빈을 추가하면 .npmignore모든 설정이 완료된 것입니다.


원래 답변 : https://stackoverflow.com/a/57503862/4612476


명령을 사용하십시오 npm install git+https://git@github.com/myRepo/angular-translate.git. 감사.

참고URL : https://stackoverflow.com/questions/40528053/npm-install-and-build-of-forked-github-repo

반응형