Chcę zrobić coś takiego, więc npm install
instaluje również package.json
z ../somelocallib
lub co ważniejsze jego zależnościami.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Ta funkcja została zaimplementowana w wersji 2.0.0 npm. Przykład:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
Każda z następujących ścieżek jest również poprawna:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
Pakiet lokalny zostanie skopiowany do prefiksu ( ./node-modules
).
Umieść jak zwykle somelocallib
zależność package.json
:
"dependencies": {
"somelocallib": "0.0.x"
}
Następnie uruchom, npm link ../somelocallib
a npm zainstaluje wersję, nad którą pracujesz, jako dowiązanie symboliczne .
app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib
Odniesienie: link (1)
npm dedup
do rozwiązania tego problemu. npmjs.org/doc/cli/npm-dedupe.htmlnpm install <folder>
opis mówi: Zainstaluj pakiet w katalogu jako dowiązanie symboliczne w bieżącym projekcie.Można teraz bezpośrednio określić lokalne ścieżki instalacji modułów węzła
package.json
. Z dokumentów:źródło
"bar": "file:///home/user/src/foo/bar"
node:onbuild
obrazy kopiują tylko bieżący katalog, a tym samym pomijają wszystko../foo
.npm install
z którego pochodzi, lub inne repozytorium git w sieci LAN? Kiedy próbuję powyższej i npm zainstalować z git + ssh, wygląda na to, że zajrzał do katalogu node_modules i nie próbował przejść przez git + ssh, mimo że tak właśnie instaluję pakiet najwyższego poziomu.To działa dla mnie.
Umieść następujące elementy w pliku package.json
źródło
.gitignore
w folderze modułu, utworzył.npmignore
i przy pierwszym uruchomieniu zastosował 777 rekurencyjnie na wszystkich folderach oprócznode_modules
. Ale tak, zainstalował zależności. Używanie npm w wersji 1.4.14."dependencies": { "my-own-module": "file:../my-own-module" }
?npm link
jest to, że nie trzeba tego robić zanpm install
każdym razem, aby aktualizować zależności.Jeśli chcesz dalej to zautomatyzować, ponieważ sprawdzasz moduł w kontroli wersji i nie chcesz polegać na pamiętaniu przez programistów linku npm, możesz dodać to do sekcji „skryptów” package.json:
Wydaje się to nie do zniesienia, ale wydaje się, że „działa”. Mam wskazówkę dotyczącą tego problemu npm: https://github.com/npm/npm/issues/1558#issuecomment-12444454
źródło
postinstall
ipostupdate
zamiastpreinstall
ipreupdate
?W ten sposób dodasz zależności lokalne:
npm install file:src/assets/js/FILE_NAME
Dodaj go do package.json z NPM:
npm install --save file:src/assets/js/FILE_NAME
Dodaj bezpośrednio do package.json w następujący sposób:
źródło
Projekt główny
Oto pakiet.json, którego będziesz używać w projekcie głównym:
Tam
./somelocallib
jest odwołanie do folderu biblioteki w stosunku do głównego projektu paczka.json .Odniesienie: https://docs.npmjs.com/files/package.json#local-paths
Podprojekt
Obsługuj zależności biblioteki.
Oprócz biegania
npm install
będziesz musiał uruchomić(cd node_modules/somelocallib && npm install)
.Jest to znany błąd związany z NPM.
Odniesienie: https://github.com/npm/npm/issues/1341 (szukając bardziej aktualnego odniesienia)
Uwagi dla dokera
Zwróć się do swojego mistrza
package.lock
isomelocallib/package.lock
do menedżera kodu źródłowego.Następnie użyj pliku Docker:
Używam nawiasów w moich
(cd A && B)
konstrukcjach, aby uczynić operację idempotentną.źródło
Wiem, że to
npm install ../somelocallib
działa.Nie wiem jednak, czy składnia wyświetlana w pytaniu będzie działać od
package.json
...Niestety, doc wydaje się wspomnieć tylko o URL jako zależności.
Spróbuj
file:///.../...tar.gz
, wskazując na skompresowaną bibliotekę lokalną ... i powiedz nam, czy działa.źródło
To działało dla mnie: najpierw upewnij się, że katalogi npm mają odpowiedniego użytkownika
Następnie w katalogu package.json połącz katalog
źródło
npm install
.Właściwie, począwszy od npm 2.0, istnieje teraz obsługa lokalnych ścieżek (patrz tutaj ).
źródło
Ciekawe ... przynajmniej w systemie Windows (mój npm to 3. coś) Musiałem zrobić:
Kiedy to zrobiłem
npm install ../module1 --save
, powstały ścieżki bezwzględne, a nie względne według dokumentacji.Pomyślałem trochę więcej i uznałem, że
../xxx
to wystarczy.Konkretnie mam moduły węzłów lokalnych sprawdzone, aby powiedzieć d: \ build \ module1, d: \ build \ module2 i mój projekt węzła (aplikacji) w d: \ build \ nodeApp.
Aby „zainstalować”:
Pakiet.json modułu 1 ma zależność „moduł2”: „../module2”; moduł2 nie ma zależności lokalnej; nodeApp ma zależności „moduł1”: „../module1” i „moduł2”: „../module2”.
Nie jestem pewien, czy to działa tylko dla mnie, ponieważ wszystkie 3 foldery (moduł1, moduł2 i nodeApp) znajdują się na tym samym poziomie .......
źródło
Dwa kroki do pełnego rozwoju lokalnego:
źródło