sourcecode

package.json의 git URL을 사용하여 분기 또는 태그에 의존합니까?

codebag 2023. 5. 3. 21:24
반응형

package.json의 git URL을 사용하여 분기 또는 태그에 의존합니까?

예를 들어 버그 수정이 있는 노드 모듈을 포크했다고 가정하면 버그 수정이 병합되어 릴리스될 때까지 기능 분기에서 내 고정 버전을 사용하고 싶습니다.

다음에서 내 고정 버전을 어떻게 참조합니까?dependencies나의package.json?

솔루션 1

git URL을 사용하여 npm 문서에서:

https://github.com/<user>/<project>.git#<branch>

https://github.com/<user>/<project>.git#feature\/<branch>

사용 안 함git://GitHub에 대한 프로토콜, 더 이상 지원되지 않습니다.

솔루션 2

NPM 버전 1.1.65 이후에는 짧은 github URL을 사용할 수 있습니다.

<user>/<project>#<branch>

@dantheta의 코멘트에 따라:

npm 1.1.65 기준으로 Github URL은 보다 간결한 사용자/프로젝트가 가능합니다.npmjs.org/doc/files/package.json.html user/project#backup처럼 브랜치를 부착할 수 있습니다.

그렇게

"babel-eslint": "babel/babel-eslint",

또는 jscs의 태그 v1.12.0의 경우:

"jscs": "jscs-dev/node-jscs#v1.12.0",

참고로, npm --save를 사용하면 더 긴 git를 얻을 수 있습니다.

출처: https://docs.npmjs.com/cli/v6/configuring-npm/package-json#git-urls-as-dependencies

종속성으로 Git URL

Giturl은 다음과 같은 형식입니다.

git+ssh://git@github.com:npm/cli.git#v1.0.27 git+ssh://git@github.com:npm/cli#semver:^5.0 git+https://isaacs@github.com/npm/cli.git
git://github.com/npm/cli.git#v1.0.27

한다면#<commit-ish>제공된 경우 해당 커밋을 정확히 복제하는 데 사용됩니다.만약 > 커밋-ish가 형식을 가지고 있다면#semver:<semver>,<semver>유효한 semver 범위 또는 정확한 버전일 수 있으며, npm은 레지스트리 종속성과 마찬가지로 원격 저장소에서 해당 범위와 일치하는 태그 또는 ref를 찾습니다.둘 다 아니면#<commit-ish>또는#semver:<semver>마스터가 사용됩니다.

GitHub URL

버전 1.1.65에서 GitHub URL은 단순히 "foo": "user/foo-project"로 지칭할 수 있습니다.git URL과 마찬가지로 commit-ish 접미사를 포함할 수 있습니다.예:

{
 "name": "foo",
 "version": "0.0.0",
 "dependencies": {
   "express": "expressjs/express",
   "mocha": "mochajs/mocha#4727d357ea",
   "module": "user/repo#feature\/branch"
 }
}```

사용할 경우devel또는feature지점, 또는 특정 패키지를 NPM 레지스트리에 게시하지 않았거나 개인 모듈이기 때문에 게시할 수 없습니다. 그러면 다음을 가리킬 수 있습니다.git://사용자의 버전 번호 대신 URIpackage.json:

"dependencies": {
   "public": "git://github.com/user/repo.git#ref",
   "private": "git+ssh://git@github.com:user/repo.git#ref"
}

#ref부분은 선택 사항이며, 분기일 수 있습니다(예:master, 태그(예:0.0.1) 또는 부분 또는 전체 커밋 ID입니다.

최신 버전의 NPM에서는 다음을 수행할 수 있습니다.

npm install gitAuthor/gitRepo#tag

repo가 유효한 NPM 패키지인 경우 패키지에서 자동 별칭이 지정됩니다.json as:

{ "NPMPackageName": "gitAuthor/gitRepo#tag" }

@justingordon의 답변에 이것을 추가할 수 있다면 지금 수동 에일리어스가 필요하지 않습니다!

특정 커밋을 사용하려는 경우 이를 사용할 수 있습니다.

템플릿:

github:{UserName}/{RepoName}#{CommitId}

패키지의 사용 예.json:

"react": "github:facebook/react#e40893d097f6894b4768d749f796302c57161734"

만약 누군가에게 도움이 된다면, 저는 위의 모든 것을 시도했습니다. (https와 토큰 모드) - 여전히 아무 것도 작동하지 않았습니다.오류는 없었지만 node_modules 또는 package_lock.json에는 아무 것도 설치되지 않았습니다.토큰이나 레포 이름 또는 사용자 이름의 문자 등을 변경한 경우 오류가 발생합니다.그래서 저는 제가 올바른 토큰과 레포 이름을 가지고 있다는 것을 알았습니다.

나는 마침내 그것이 내 패키지에 있는 종속성의 이름 때문이라는 것을 깨달았습니다.json이 패키지의 이름과 일치하지 않습니다.내가 뽑으려고 했던 레포의 아들.npm install --verbose에서도 문제가 없다고 합니다.오류 없이 종속성을 무시하는 것 같습니다.

언급URL : https://stackoverflow.com/questions/16350673/depend-on-a-branch-or-tag-using-a-git-url-in-a-package-json

반응형