2015-03-23 12 views
5

Mamy projekt node.js z kilkoma modułami, który obejmuje wiele repozytoriów Git. Moduły mają zależności między nimi.Węzeł.JS: Praca z wieloma repozytoriami Git

Na przykład:

common modułu znajduje się w swoim repozytorium. execution moduł znajduje się w oddzielnym repozytorium i ma zależność (npm) od common.

Tak więc struktura katalogów w execution obejmuje (po wykonaniu npm install) pod pod node_modules.

Naszym problemem jest to, że gdy programiści pracują nad execution, muszą również zmodyfikować common. Aby "zobaczyć" ich zmiany, mają jedną z dwóch opcji, z których obecnie korzystamy: zmodyfikuj node_modules/common (co jest brzydkie, niepotwierdzone itp.) Lub zmodyfikuj repozytorium common, a następnie push + npm install ich zmiany (które , podczas gdy czystsze, jest dość kłopotliwe).

Co mamy zastanawiasz się czy istnieje lepsza alternatywa dla tego procesu pracy ...

+0

Czy rozważałeś posiadanie jednego repo na git (monorepo)? – milan

Odpowiedz

3

Zakładam, że używają ich jako zależność używając package.json, który pozwala wymagać od nich z imienia i nie ścieżkę. (Masz również gadżety dotyczące obsługi wersji z tym). Nie mogłem znaleźć żadnej opcji, aby usunąć krok instalacji npm, ale znalazłem coś, co może usunąć krok git push i sprawi, że twoja instalacja będzie szybsza.

Lokalne zależności.
Używanie lokalnych ścieżek jako zależności, które mogą być twoim innym repozytorium git, możesz wprowadzić zmiany bezpośrednio do repozytorium git Twojej zależności. Pozwala to na zmianę kodu i przetestowanie go bez popychania. (Chociaż musisz zrobić npm zainstalować ponownie w głównym module, który powieli kopię roboczą twojej zależności w twoich modułach węzła).

Ostrożność: należy zachować ostrożność, aby wprowadzić ostateczne zmiany wprowadzone w kodzie zależności po zakończeniu pracy nad obydwoma, w przeciwnym razie inni deweloperzy mogą przejść w niespójny stan.

Jak dodać lokalnych zależności

"dependencies" : { 
     "here" : "file:./test/git/repo/here#0.0.1" 
} 

Zauważ, że funkcja ta lokalna zależność została dodana do KMP w wersji 2.0. Może być konieczne zaktualizowanie węzła, jeśli nie masz już npm 2.0+

+0

Cześć Vishwanath, Dzięki. Spróbuję tego (konkretnie, zamierzamy dać devDependencies strzał, więc ta konfiguracja nie wpłynie na produkcję). Po sprawdzeniu poprawności przyjmuję odpowiedź. – Gadi

5

Można uniknąć modyfikowania pliku package.json za pomocą polecenia npm link. Spowoduje to automatyczną konfigurację pakietu execution w celu dowiązania symbolicznego do katalogu node_modules/common do lokalnego klonu o numerze common.

Jak korzystać z tej metody

  1. Wewnątrz common typu katalogu: npm link.Spowoduje to utworzenie globalnego odwołania do folderu common w npm, identyfikowanego przez common (przy założeniu, że common jest dokładną nazwą pakietu węzłów).
  2. Wewnątrz twojego katalogu execution: npm link common. Spowoduje to dowiązanie symboliczne do folderu node_modules/common do lokalnej kopii katalogu .

Po zakończeniu wprowadzania zmian w folderze common, trzeba zaktualizować ten pakiet on-line, a następnie zmienić package.json z execution pkt do zaktualizowanej wersji common.

Wolę tę metodę od tej sugerującej, aby skierować package.json do lokalnego repozytorium, ponieważ pozostawia ona Twój package.json w nieprawidłowym stanie, który możesz przypadkowo zatwierdzić i przepchnąć.