특정 버전으로 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
'sourcecode' 카테고리의 다른 글
클라이언트에 쿠키가 설정되지 않을 수 있는 이유는 무엇입니까? (0) | 2023.10.06 |
---|---|
'window.location.hash.incloses'를 사용하면 IE11에서 "Object가 속성 또는 메서드 'incloses'를 지원하지 않습니다. (0) | 2023.10.06 |
PHP-FPM이 제대로 실행되고 있는지 확인하는 방법은? (0) | 2023.10.06 |
jQuery를 사용하여 cs ":After" 선택기에 액세스합니다. (0) | 2023.10.06 |
Perl의 DBI를 사용하여 SQL 주입 공격을 방지하려면 어떻게 해야 합니까? (0) | 2023.10.06 |