Zależy od oddziału lub tagu przy użyciu adresu URL git w pliku package.json?

399

Powiedzmy, że rozwidliłem moduł węzła z poprawką błędu i chcę używać mojej stałej wersji, oczywiście w gałęzi funkcji, dopóki poprawka nie zostanie scalona i wydana.

Jak mam odwoływać się do mojej stałej wersji w dependenciesmojej package.json?

hurrymaplelad
źródło

Odpowiedzi:

569

Z dokumentów npm :

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

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

Począwszy od wersji NP. 1.1.65, możesz to zrobić:

<user>/<project>#<branch>
hurrymaplelad
źródło
130
Począwszy od npm 1.1.65, Github URL może być bardziej zwięzły user/project. npmjs.org/doc/files/package.json.html Możesz dołączyć gałąź jakuser/project#branch
dantheta
2
git://github.com/<user>/<project>.git#feature/blahdziałało, ale <user>/<project>.git#feature/blahnie ... być może ich regex musi być bardziej zaawansowany, aby wziąć feature/blahpod uwagę. To był npmv1.4.28
pulkitsinghal
5
Jak podać numer wersji?
Richard,
1
@urrymaplelad czy mogę zrobić to samo dla żądania ściągnięcia? Jeśli tak, to jak brzmi polecenie?
roundrobin
3
Zaktualizowano dokumentację NPM link docs.npmjs.com/files/package.json#github-urls
kellen 10.09.2018
136

na komentarz @ dantheta:

Począwszy od npm 1.1.65, Github URL może być bardziej zwięzłym użytkownikiem / projektem. npmjs.org/doc/files/package.json.html Możesz dołączyć gałąź jak użytkownik / projekt # gałąź

Więc

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

Lub dla tagu v1.12.0 na jscs:

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

Uwaga: jeśli użyjesz npm --save, dostaniesz dłuższy git

Od https://docs.npmjs.com/files/package.json#git-urls-as-dependencies

Adresy URL Git jako zależności

Adresy URL Git mogą mieć postać:

git: //github.com/user/project.git#commit-ish git + ssh: // użytkownik @ nazwa hosta: project.git # commit-ish git + ssh: //user@hostname/project.git#commit- ish git + http: //user@hostname/project/blah.git#commit-ish git + https: //user@hostname/project/blah.git#commit-ish

Zatwierdzenie może być dowolnym znacznikiem, sha lub gałęzią, które można podać jako argument do pobrania z git. Domyślnie jest to master.

Adresy URL GitHub

Począwszy od wersji 1.1.65, adresy URL GitHub mogą być nazywane po prostu „foo”: „user / foo-project”. Podobnie jak w przypadku adresów URL git, można dołączyć sufiks zatwierdzania. Na przykład:

{„name”: „foo”,
„version”: „0.0.0”,
„dependencies”: {„express”: „visionmedia / express”, „mocha”: „visionmedia / mocha # 4727d357ea”}}

justingordon
źródło
2
W zależności od zatwierdzenia sha1 powinna być preferowaną opcją, szczególnie jeśli zależysz od repozytorium, które nie jest pod twoją kontrolą. Gity i znaczniki Git nie są niezmienne (mogą zostać usunięte / zmienione, złośliwie / przypadkowo), podczas gdy (prawie) niemożliwe jest utworzenie kolizji sha1.
jakub.g
1
czy mogę mieć oddział ORAZ zatwierdzenie do zatwierdzenia?
munchschair
45

Jeśli chcesz użyć devellub featurerozgałęzić się lub nie opublikowałeś określonego pakietu w rejestrze NPM, lub nie możesz, ponieważ jest to moduł prywatny, możesz wskazać git://URI zamiast numeru wersji w package.json:

"dependencies": {
   "public": "git://github.com/user/repo.git#ref",
   "private": "git+ssh://[email protected]:user/repo.git#ref"
}

#refCzęść jest opcjonalna i może być gałąź (np master) znacznik (np 0.0.1) lub częściowe lub pełne popełnienia ID.

Fizer Khan
źródło
26

W najnowszej wersji NPM możesz po prostu:

npm install gitAuthor/gitRepo#tag

Jeśli repozytorium jest poprawnym pakietem NPM, zostanie automatycznie aliowane w pliku package.json jako:

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

Jeśli możesz dodać to do odpowiedzi @justingordon, nie ma teraz potrzeby ręcznego aliasingu!

wir
źródło
4
nie, nie jest. Instaluje się niepoprawnie. Jakoś nie zawiera całej struktury katalogów z repozytorium, tylko niektóre pliki, takie jak package.json, yarn.lock, readme i licencja. Nie ma folderów src ani dist.
StalkAlex,
@StalkAlex docs.npmjs.com/cli/publish, a następnie sprawdź instalowane repozytorium dla skryptów kompilacji. Być może są one otagowane lub post-instalacja nie działa dla Ciebie, to problem dla tego konkretnego pakietu i tak mam nadzieję, że to pomoże!
wir
@vortex dzięki, co dokładnie rozumiesz przez tagowanie? Jak to sprawia, że ​​taki problem?
StalkAlex
0

Jeśli to pomaga komukolwiek, próbowałem wszystkiego powyżej (tryb https w / token) - i nadal nic nie działało. Nie otrzymałem żadnych błędów, ale nic nie zostanie zainstalowane w node_modules lub package_lock.json. Gdybym zmienił token lub dowolną literę w nazwie repozytorium lub nazwie użytkownika itp. - Wystąpiłby błąd. Wiedziałem, że mam odpowiedni token i nazwę repozytorium.

W końcu zdałem sobie sprawę, że to dlatego, że nazwa zależności, którą miałem w pakiecie.json, nie zgadzała się z nazwą w pakiecie.json repozytorium, które próbowałem pobrać. Nawet instalacja npm --verbose nie mówi, że jest jakiś problem. Po prostu wydaje się ignorować błąd bez zależności.

MattS
źródło