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": "*"
}
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": "*"
}
Odpowiedzi:
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.html
npm 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:
Lokalne ścieżki
Od wersji 2.0.0 możesz podać ścieżkę do lokalnego katalogu zawierającego pakiet. Ścieżki lokalne można zapisać za pomocą
npm install -S
lubnpm install --save
przy użyciu dowolnej z następujących form:../foo/bar ~/foo/bar ./foo/bar /foo/bar
w takim przypadku zostaną znormalizowane do ścieżki względnej i dodane do Twojej
package.json
. Na przykład:{ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
Ta funkcja jest pomocna przy tworzeniu lokalnego trybu offline i tworzeniu testów, które wymagają instalacji npm tam, gdzie nie chcesz trafić na serwer zewnętrzny, ale nie należy jej używać podczas publikowania pakietów w rejestrze publicznym.
"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
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
.gitignore
w folderze modułu, utworzył .npmignore
i przy pierwszym uruchomieniu zastosował 777 rekurencyjnie na wszystkich folderach oprócz node_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ć za npm 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:
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
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
postinstall
i postupdate
zamiast preinstall
i preupdate
?
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:
....
"angular2-autosize": "1.0.1",
"angular2-text-mask": "8.0.2",
"animate.css": "3.5.2",
"LIBRARY_NAME": "file:src/assets/js/FILE_NAME"
....
Oto pakiet.json, którego będziesz używać w projekcie głównym:
"dependencies": {
"express": "*",
"somelocallib": "file:./somelocallib"
}
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
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)
Zwróć się do swojego mistrza package.lock
i somelocallib/package.lock
do menedżera kodu źródłowego.
Następnie użyj pliku Docker:
FROM node:10
WORKDIR /app
# ...
COPY ./package.json ./package-lock.json ./
COPY somelocallib somelocallib
RUN npm ci
RUN (cd node_modules/zkp-utils/ && npm ci)
# ...
Używam nawiasów w moich (cd A && B)
konstrukcjach, aby uczynić operację idempotentną.
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.
To działało dla mnie: najpierw upewnij się, że katalogi npm mają odpowiedniego użytkownika
sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules
Następnie w katalogu package.json połącz katalog
"scripts": {
"preinstall": "npm ln mylib ../../path/to/mylib"
},
"dependencies": {
"mylib" : "*"
}
npm install
.
Właściwie, począwszy od npm 2.0, istnieje teraz obsługa lokalnych ścieżek (patrz tutaj ).
Ciekawe ... przynajmniej w systemie Windows (mój npm to 3. coś) Musiałem zrobić:
"dependencies": {
"body-parser": "^1.17.1",
"module1": "../module1",
"module2": "../module2",
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ć”:
d:\build\module1> rmdir "./node_modules" /q /s && npm install
d:\build\module2> rmdir "./node_modules" /q /s && npm install
d:\build\nodeApp> rmdir "./node_modules" /q /s && npm install
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 .......
Dwa kroki do pełnego rozwoju lokalnego: