sourcecode

특정 버전으로 Git에서 npm 설치

copyscript 2023. 10. 6. 21:55
반응형

특정 버전으로 Git에서 npm 설치

비공개로 하고 싶은 Node.js 모듈을 작성했다고 가정합니다.줄을 추가할 수 있다는 것을 알고 있습니다.

"private": "true"

package.json파일을 작성하고, 그리고 내가 할 수 있다는 것도 알아요.npm install파일 시스템 경로 또는 GitHub을 포함한 Git 저장소에 대한 링크를 사용하는 이 모듈.

는 또한 링크를 에 수 을 알고 있습니다.package.json , , , , , dependencies부품은 다음과 같이 보일 수 있습니다.

"dependencies": {
  "myprivatemodule": "git@github.com:..."
}

지금 제가 원하는 것은 최신 버전이 아니라 특정 버전으로 링크하는 것입니다.제가 아는 유일한 가능성은 아이디를 사용하여 특정 커밋에 링크하는 것입니다.다와 더 .0.3.1.

그래서 제 질문은:어쨌든 그런 버전 번호를 지정하고 이 버전이 포함된 최신 커밋에 대해 npm이 git 저장소를 검색하도록 하는 것이 가능합니까?

그렇지 않다면 프로젝트에서 이 문제를 어떻게 해결합니까?커밋 아이디를 가지고 사십니까? 아니면 이에 대한 더 나은 해결책이 있습니까?

인정된 대답은 저에게 통하지 않았습니다.

github에서 패키지를 꺼내기 위해 하는 작업은 다음과 같습니다.

npm install --save "git://github.com/username/package.git#commit"

또는 패키지에 수동으로 추가합니다.json:

"dependencies": {
  "package": "git://github.com/username/package.git#commit"
}

입니다 전체는 여기 npm설명서:

https://docs.npmjs.com/cli/v9/configuring-npm/package-json?v=true#git-urls-as-dependencies

종속성은 에서 설명자를 지정하는 것만으로 설치할 수 있어야 합니다.

프로젝트를 공개적으로 공유하지 않는 대신 자신의 레지스트리를 생성하고 사용할 수 있습니다.

그러나 레지스트리에 없는 경우 URL 또는 Git URL로 참조해야 합니다.Git URL이 있는 버전을 지정하려면 URL 조각으로 태그와 같은 적절한 버전을 끝에 포함합니다.

를 들어, 이름이 :0.3.1:

"dependencies": {
  "myprivatemodule": "git@github.com:...#0.3.1"
}

참고: 위 토막글은 질문에 게시된 것과 동일한 기본 URL을 보여줍니다.

()...)은 다음 항목에 기입해야 합니다.

"myprivatemodule": "git@github.com:{owner}/{project}.git#0.3.1"

SSH 액세스를 사용할 수 없는 경우에는 다른 주소 형식이 필요합니다.

"myprivatemodule": "git://github.com/{owner}/{project}.git#0.3.1"

OS에 따라 Github에서 복제한 다른 폴더의 종속성도 사용할 수 있습니다.

버전이 태그 또는 릴리스를 의미하는 경우 github에서 다운로드 링크를 제공합니다.예를 들어, 페치 버전 0.3.2를 설치하려면(npm에서는 사용할 수 없음), 다음 버전에 추가합니다.package.json아래dependencies:

"fetch": "https://github.com/github/fetch/archive/v0.3.2.tar.gz",

커밋 해시 접근 방식과 비교할 때 유일한 단점은 해시가 변경된 코드를 나타내지 않도록 보장되는 반면 태그는 대체될 수 있다는 것입니다.다행스럽게도 이런 일은 거의 일어나지 않습니다.

업데이트:

요즘 제가 사용하는 접근 방식은 GitHub 서비스 종속성에 대한 컴팩트한 표기법입니다.

"dependencies": {
  "package": "github:username/package#commit"
}

커밋은 태그와 같은 커밋한 것이 될 수 있습니다.깃허브의 경우 이니셜을 삭제할 수도 있습니다.github:기본이기 때문에.

이 명령은 npm 패키지를 설치합니다.username/package특정 git 커밋에서:

npm install https://github.com/username/package#3d0a21cc

여기서3d0a21cc커밋 해시의 첫 8자입니다.

의 @qubyte에 대한 제 예시적인 코멘트가 잘려서, 여기에 읽기 쉬운 것이 있습니다.

에서 설명한 @surjikal 메서드는 분기 커밋에서는 작동하지만, 다음과 같은 트리 커밋에서는 작동하지 않았습니다.


보관 모드는 커밋에도 적용됩니다.예를 들어 @a2fbf83를 가져옵니다.

npm:

npm install  https://github.com/github/fetch/archive/a2fbf834773b8dc20eef83bb53d081863d3fc87f.tar.gz

원사:

yarn add  https://github.com/github/fetch/archive/a2fbf834773b8dc20eef83bb53d081863d3fc87f.tar.gz

형식:

 https://github.com/<owner>/<repo>/archive/<commit-id>.tar.gz


Here's the 나무를 commit that required the /archive/ mode:

yarn add  https://github.com/vuejs/vuex/archive/c3626f779b8ea902789dd1c4417cb7d7ef09b557.tar.gz

관련 vuex 커밋을 위해

tfjs-core의 두 가지 버전을 실행해야 하는데 둘 다 설치 후 구축해야 한다는 것을 알게 되었습니다.

꾸러미의json:

"dependencies": {
  "tfjs-core-0.14.3": "git://github.com/tensorflow/tfjs-core#bb0a830b3bda1461327f083ceb3f889117209db2",
  "tfjs-core-1.1.0": "git://github.com/tensorflow/tfjs-core#220660ed8b9a252f9d0847a4f4e3c76ba5188669"
}

그러면:

cd node_modules/tfjs-core-0.14.3 && yarn install && yarn build-npm && cd ../../
cd node_modules/tfjs-core-1.1.0  && yarn install && yarn build-npm && cd ../../

마지막으로 라이브러리를 사용하는 방법:

import * as tf0143 from '../node_modules/tfjs-core-0.14.3/dist/tf-core.min.js';
import * as tf110 from '../node_modules/tfjs-core-1.1.0/dist/tf-core.min.js';

이것은 잘 작동했지만 가장 확실한 것은 #후드쥐입니다.

달리기를 할 때 직면한 문제를 여기에 설명합니다.npm install- 패키지가 에 나타나지 않습니다.node_modules.

문제는 그 문제는.name에 가치를 두다package.json설치된 패키지의 이름이 가져온 패키지의 이름과 다릅니다(키 인).package.json(나의 프로젝트).

설치된 프로젝트 이름이some-package(이름 값이 해당됨)package.json) 그 다음에package.json당신의 프로젝트의 글:"some-package": "owner/some-repo#tag".

둘 이상의 모듈로 이 작업을 수행하고 버전에 대한 더 많은 제어권을 가지려면 개인 npm 레지스트리를 갖는 것을 고려해야 합니다.

이렇게 하면 모듈을 개인 npm 레지스트리에 게시하고 패키지를 사용할 수 있습니다.json 항목은 공개 모듈의 경우와 동일한 방식으로 입력합니다.

https://docs.npmjs.com/files/package.json#dependencies

언급URL : https://stackoverflow.com/questions/14187956/npm-install-from-git-in-a-specific-version

반응형