2016-11-10 5 views
34

이것은 완전히 새로운 질문은 아니지만 지금은 좋은 생각을하고 있습니다. 해결책을 찾는 데 어려움을 겪고 있습니다.npm 분기 된 github repo 설치 및 빌드

angle-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 나에게 전체의 repo를 제공하지만, 다시 내가 명령 npm install angular-translate을 사용할 때와 같은 빌드를하지 않습니다. 미리 게시 된 스크립트를 실행하는 방법을 보았지만 모든 모듈을 설치할 때이 작업을 수행하는 방법을 모르겠습니다. 또한 포크를 npm 레지스트리에 대한 모듈로 게시하려고 시도했지만 다시 빌드가 없으므로 올바른 작업이 아닌지 확실하지 않습니다.

내 무지에 대해 사과드립니다. 이야기. 나는 npm에 대한 엄청난 경험이 없다. 이 문제에 대한 의견을 듣고 싶습니다. 패키지의 소스 코드를 수정해야 할 때 일반적인 문제가 될 수있는 것 같습니다. 어쩌면 더 나은 해결책이 있을까요? 귀하의 도움에 미리 감사드립니다.

답변

38

시도 npm install <ghusername>/<repoName><ghUsername>은 GitHub 사용자 이름 (@ 제외)이고 <repoName>은 저장소 이름입니다. 제대로 설치해야합니다. 대체로 package.json에 의존성을 저장하려면 설치 명령에 --save 또는 --save-dev 플래그를 사용하고 싶을 것입니다.

제대로 작동하지 않는 경우 .npmignore 파일의 내용을 확인하십시오.

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


편집 :

귀하의 문제는 (가 .gitignore에 있기 때문에) 귀하의 경우, dist/가 REPO하기 위해 최선을 다하고되지 않는 것입니다. 그것이 실제 코드가 존재하는 곳입니다. dist/은 패키지가 npm 레지스트리에 게시되기 전에 src/에있는 파일로 작성되지만 dist/은 절대로 repo에 커밋되지 않습니다.

그것은 추한하지만,이 경우에 당신은 실행 후 .gitignore에서 dist/을 제거해야합니다 :

하는 당신은 다음에 할 수 있어야한다 (먼저 npm install를 실행했는지 확인)

npm run build 
git add . 
git commit 
git push 

을 github에서 설치하십시오.

postinstall 스크립트를 사용하여이 작업을 수행하는 다른 방법이있을 수 있지만 가능한지 확실하지 않습니다. 나는 결코 그것을 시도하지 않았다.

+0

답장을 보내 주셔서 감사합니다. Ryan. 시도해 봤지만 첫 번째 npm 설치와 같은 결과를 얻었습니다. 그런 다음 .npmignore 파일을 제거하려고 시도하고 두 번째 결과와 동일한 전체 repo를 얻습니다. 여전히 빌드가 발생하지 않는 문제가 남아 있습니다. – hughesjmh

+0

@hughesjmh Strange. 실제 저장소 URL은 무엇입니까? 나는 이것을 직접 시험해보고 싶다. – RyanZim

+0

OK, 이제 알겠습니다. 나는 내 대답을 편집했다. – RyanZim