Mam aplikację, która ma zwykły zestaw zależności od modułów stron trzecich (np. „Express”) określonych w pliku package.json w zależności. Na przykład
"express" : "3.1.1"
Chciałbym zbudować własny kod modułowo i mieć pakiet lokalnych (czyli w systemie plików, w którym aktualnie jestem) modułów zainstalowanych przez pakiet.json. Wiem, że mogę zainstalować moduł lokalny, uruchamiając:
npm install path/to/mymodule
Nie wiem jednak, jak to zrobić za pomocą struktury zależności package.json. Użycie --save
opcji w tym poleceniu polega po prostu na umieszczeniu "mymodule": "0.0.0"
w pliku package.json (nie odwołuje się do lokalizacji ścieżki pliku). Jeśli następnie usunę zainstalowaną wersję z modułów node_modules i spróbuję ponownie zainstalować z pliku package.json, zakończy się ona niepowodzeniem (ponieważ szuka „mymodule” w rejestrze centralnym i nie wygląda lokalnie).
Jestem pewien, że jest to sposób na powiedzenie "dependencies": {}
strukturze, że chcę ją zainstalować ze ścieżki systemu plików, ale nie wiem jak.
Czy ktoś jeszcze miał ten problem? Dzięki.
package.json
z tym, co mamy wGemfile
.Odpowiedzi:
npm install
teraz obsługuje toAby to działało,
mymodule
musi być skonfigurowane jako moduł z własnympackage.json
. Zobacz Tworzenie modułów NodeJS .Począwszy od npm 2.0 lokalne zależności są obsługiwane natywnie. Zobacz odpowiedź danilopopeye na podobne pytanie . Skopiowałem tutaj jego odpowiedź, ponieważ to pytanie zajmuje bardzo wysoką pozycję w wynikach wyszukiwania w Internecie.
synchronizowanie aktualizacji
Po
npm install
skopiowaniumymodule
donode_modules
zmianymymodule
źródła nie będą automatycznie widoczne w projekcie zależnym.Istnieją dwa sposoby aktualizacji projektu zależnego
Zaktualizuj wersję,
mymodule
a następnie użyjnpm update
: Jak widać powyżej,package.json
wpis „zależności” nie zawiera specyfikatora wersji, tak jak w przypadku normalnych zależności. Zamiast tego, dla lokalnych zależności,npm update
po prostu próbuje się upewnić, że zainstalowana jest najnowsza wersja, zgodnie z określeniemmymodule
'spackage.json
. Zobacz odpowiedź chriskelly na ten konkretny problem .Zainstaluj ponownie za pomocą
npm install
. Spowoduje to zainstalowanie cokolwiek wmymodule
źródłowej ścieżce, nawet jeśli jest ono starsze lub ma sprawdzoną alternatywną gałąź, cokolwiek.źródło
"mymodule":"file:mymoduledir"
npm install --save ../my-local-repo
import { HelloWorld } from "my-test-lib";
, ale pojawia się błąd „Nie mogę znaleźć modułu”. Proszę spojrzeć na stackoverflow.com/questions/46818083/...import { HelloWorld } from "my-test-lib";
Zobacz: Lokalna zależność w pakiecie.json
Wygląda na to, że odpowiedź brzmi
npm link
: https://docs.npmjs.com/cli/linkźródło
symlink
jaki sposób projekt nadrzędny będzie wiedział, jak odbudować, gdy zakończy się budowanie zależności?W końcu nie mogłem znaleźć zgrabnego sposobu, więc wybrałem katalog o nazwie,
local_modules
a następnie dodałem ten skrypt bashscript do pliku package.json w skryptach-> preinstalacjiźródło
Po wielu problemach z
npm link
poleceniem (sugerowane rozwiązanie do tworzenia lokalnych modułów bez publikowania ich w rejestrze lub utrzymywania osobnej kopii w folderze node_modules), zbudowałem mały moduł npm, aby pomóc w rozwiązaniu tego problemu.Poprawka wymaga dwóch łatwych kroków .
Pierwszy:
Po drugie, dodaj to do
package.json
:Więcej szczegółów na https://www.npmjs.com/package/lib-manager . Mam nadzieję, że to komuś pomoże.
źródło
Jeśli można po prostu opublikować moduły preinstalowane w module node_modules wraz z innymi plikami, możesz to zrobić w następujący sposób:
Możesz także zapisać swój moduł na git i powiedzieć swojemu pakietowi macierzystemu.json, aby zainstalował zależność z git: https://npmjs.org/doc/json.html#Git-URLs-as-Dependencies
źródło