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
하는 것은 확실히 유효한 옵션입니다.
다음 중 하나를 수행하십시오.
- 분기 된 저장소에서 package.json을 업데이트하여 postinstall 요소를 스크립트에 추가하십시오. 여기에서 컴파일 된 출력을 얻는 데 필요한 모든 것을 실행하십시오 (선호).
- package.json을 업데이트하고 node_modules에서 필요한 디렉토리를 업데이트하는 사후 설치를 추가하십시오.
다른 사람 저장소를 포크 한 경우 GitHub를 통한 패키지 설치가 스크립트를 빌드하는 데 필요한 수단을 제공하지 않기 때문에 작동하지 않는 문제를 설명하기 위해 문제를 제기 할 가치가 있습니다. 거기에서 PR을 수락하여 설치 후이 문제를 해결하거나 거부하고 # 2를 수행 할 수 있습니다.
prepare
올바른 방법입니다
소스 파일이있는 저장소가 있지만이를 사용하기 위해 "빌드"단계가 필요한 경우 prepare
해당 "패키지"에 스크립트를 추가하면 모든 경우에 원하는대로 정확하게 수행됩니다 (npm 4 기준).
prepare
: 패키지가 압축되고 게시되기 전npm install
, 인수없이 로컬에서 , git 종속성을 설치할 때 모두 실행합니다 .
빌드 종속성을 넣을 수도 있으며 실행 devDependencies
되기 전에 설치됩니다 prepare
.
다음은 이 방법을 사용하는 내 패키지의 예 입니다.
문제 .gitignore
이 옵션에는 많은 사람들이 참여하는 한 가지 문제가 있습니다. 종속성을 준비 할 때 Npm 및 Yarn은의 섹션에 나열된 파일 만 유지합니다 .files
package.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
'program tip' 카테고리의 다른 글
메모리 펜스 란 무엇입니까? (0) | 2020.08.10 |
---|---|
Angular 2 형제 구성 요소 통신 (0) | 2020.08.10 |
레일 레이크 작업에 넣기 대 로거 (0) | 2020.08.10 |
목록에 의미 론적으로 제목을 추가하는 방법 (0) | 2020.08.10 |
C ++ 디 컴파일러가 있습니까? (0) | 2020.08.10 |