Zakładając, że napisałem moduł dla Node.js, który chciałbym zachować jako prywatny. Wiem, że mogę (powinienem) dodać wiersz:
"private": "true"
do package.json
pliku, a także wiem, że mogę npm install
ten moduł użyć ścieżki systemu plików lub łącza do repozytorium git, w tym GitHub.
Wiem również, że mogę umieścić taką ścieżkę do systemu plików lub łącze do repozytorium git package.json
, aby dependencies
część mogła wyglądać mniej więcej tak :
"dependencies": {
"myprivatemodule": "[email protected]:..."
}
Teraz chcę nie link do najnowszej wersji, ale do konkretnej. Jedyną możliwą możliwością jest połączenie z konkretnym zatwierdzeniem przy użyciu jego identyfikatora. Ale jest to o wiele mniej czytelne i gorzej konserwowalne niż przy użyciu numeru wersji takiego jak 0.3.1
.
Więc moje pytanie brzmi: czy można podać taki numer wersji i zmusić npm do przeszukania repozytorium git w poszukiwaniu ostatniego zatwierdzenia zawierającego tę wersję?
Jeśli nie, w jaki sposób rozwiązujesz ten problem w swoich projektach? Czy mieszkasz z identyfikatorami zatwierdzeń, czy jest na to lepsze rozwiązanie?
git tag -a "1.0.0"
i wypchnąłemgit push --tags
, a następnie dodałem#v1.0.0
na końcugit+ssh
zależności. Alenpm update
nic się nie dzieje.v
było konieczne. Po#
The fragment powinien pasować pełną nazwę tagu (lub innego commitsh ) - w twoim przypadku#1.0.0
.npm i {owner}/{project}#{tag}
lub dodać"{library}": "github:{owner}/{project}#{tag}"
do package.json zamiast używać[email protected]
lubgit://github.com
Przyjęta odpowiedź nie działała dla mnie. Oto, co robię, aby pobrać pakiet z github:
Lub dodając go ręcznie w pliku package.json:
źródło
"package": "git+https://github.com/username/package.git#commit"
#tag
który zwykle wskazuje na numer wersjigit tag -a v1.0.1 && git push --tag && git push
jak powiedział w komentarzu Jonathan Lonowski.Jeśli przez wersję masz na myśli tag lub wydanie, github zapewnia linki do ich pobrania. Na przykład, jeśli chcę zainstalować pobieranie wersji 0.3.2 (nie jest dostępna na npm), dodaję do mojej
package.json
poddependencies
:Jedyną wadą w porównaniu z metodą skrótu zatwierdzania jest to, że hash nie gwarantuje zmiany kodu, podczas gdy znacznik może zostać zastąpiony. Na szczęście rzadko się to zdarza.
Aktualizacja:
Obecnie używam metody zwięzłej notacji dla zależności obsługiwanej przez GitHub:
Gdzie zatwierdzenie może być dowolnym zatwierdzeniem, np. Tagiem. W przypadku GitHub możesz nawet usunąć początkową,
github:
ponieważ jest ona domyślna.źródło
Mój przykładowy komentarz do @qubyte powyżej został pocięty, więc oto coś, co jest łatwiejsze do odczytania ...
Opisana powyżej metoda @surjikal działa dla zatwierdzeń gałęzi, ale nie działała dla zatwierdzenia drzewa, które próbowałem włączyć.
Tryb archiwizacji działa również dla zatwierdzeń. Na przykład fetch @ a2fbf83
npm :
przędza :
format :
Oto drzewo zatwierdzające, które wymagało
/archive/
trybu:dla powiązanego zatwierdzenia Vuex
źródło
To polecenie instaluje pakiet npm
username/package
z określonego git commit:Oto
3d0a21cc
pierwsze 8 znaków skrótu zatwierdzenia.źródło
Opisuję tutaj problem, który napotkałem podczas uruchamiania
npm install
- pakiet nie pojawia się wnode_modules
.Problem polegał na tym, że
name
wartość wpackage.json
zainstalowanym pakiecie była inna niż nazwa importowanego pakietu (kluczpackage.json
do mojego projektu).Więc jeśli zainstalowanych jest nazwa projektu
some-package
(wartość nazwą wpackage.json
), a następnie wpackage.json
swojej zapisu projektu:"some-package": "owner/some-repo#tag"
.źródło
name
wymóg nie jest często wymieniany w sieci. (przynajmniej nie mogłem tego ponieść).npm install --save git+https://<remote-github-repo-url>
jest to dość bezpieczny sposób, aby nie napotykać tego problemu w przyszłości.Musiałem uruchomić dwie wersje tfjs-core i stwierdziłem, że obie muszą zostać zbudowane po instalacji.
package.json:
Następnie:
I wreszcie, aby skorzystać z bibliotek:
Działa to świetnie, ale z pewnością jest #hoodrat
źródło
Jeśli robisz to z więcej niż jednym modułem i chcesz mieć większą kontrolę nad wersjami, powinieneś sprawdzić swój prywatny rejestr npm.
W ten sposób możesz npm opublikować swoje moduły w prywatnym rejestrze npm i używać wpisów package.json w taki sam sposób, jak w przypadku modułów publicznych.
https://docs.npmjs.com/files/package.json#dependencies
źródło