730 Stimmen

Lokale Abhängigkeit in package.json

Ich möchte etwas in dieser Art machen, also npm install installiert auch die package.json de ../somelocallib oder, was noch wichtiger ist, seine Abhängigkeiten.

"dependencies": {
    "express": "*",
    "../somelocallib": "*"
}

5voto

H_I Punkte 385

Ich weiß, dass npm install ../somelocallib funktioniert.

Ich weiß jedoch nicht, ob die Syntax, die Sie in der Frage zeigen, auch von package.json ...

Leider, doc scheint nur URL als Abhängigkeit zu erwähnen.

Versuchen Sie file:///.../...tar.gz und verweist auf eine gezippte lokale Bibliothek... und sagen Sie uns, ob es funktioniert.

4voto

Paul Duncan Punkte 161

Curious.....zumindest unter Windows (mein npm ist 3.something) musste ich tun:

"dependencies": {
 "body-parser": "^1.17.1",
 "module1": "../module1",
 "module2": "../module2",

Als ich eine npm install ../module1 --save führte dies zu absoluten Pfaden und nicht zu relativen Pfaden, wie in der Dokumentation beschrieben.

Ich habe noch ein wenig herumprobiert und festgestellt, dass ../xxx war ausreichend.

Konkret habe ich die lokalen Knotenmodule ausgecheckt, um d zu sagen: \build\module1 , d: \build\module2 und mein Node-Projekt (Anwendung) in d: \build\nodeApp.

Zum 'Installieren', I:

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

Die package.json von module1 hat eine Abhängigkeit von "module2": "../module2"; module2 hat keine lokale Abhängigkeit; nodeApp hat Abhängigkeiten von "module1": "../module1" und "module2": "../module2".

Nicht sicher, ob dies nur für mich funktioniert, da alle 3 Ordner (module1, module2 und nodeApp) auf der gleichen Ebene sitzen.......

3voto

Artyom Punkte 2447

Ich wollte einen Satz lokaler Abhängigkeiten verwenden, die in TypeScript geschrieben sind, und keine der Antworten hier hat für mich funktioniert. npm install würde sich einfach weigern, die Abhängigkeiten zu erstellen.

Ich musste auf die Verwendung von tsconfig.json um die Pakete zu meinem Projekt hinzuzufügen ohne sie als Abhängigkeiten zu kennzeichnen. Mein Anwendungsfall wird zusätzlich durch die Tatsache erschwert, dass einige Abhängigkeiten voneinander abhängen, und ich wollte todos von ihnen aus dem lokalen Ordner stammen.

Hier ist meine Lösung:

// tsconfig.json
{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@tiptap/*": [
        "tiptap/packages/*/src"
      ]
    }
  }
}

In dem obigen Beispiel habe ich einen lokalen Projektunterordner mit dem Namen tiptap/ und es gibt viele Pakete in tiptap/packages/* . Die "paths" Option werden alle @tiptap/foo Einfuhren in ./tiptap/packages/foo/src sowohl für meine eigenen Dateien als auch für die Dateien in tiptap/ .

Das ist keine gute Lösung, aber es ist die einzige, die bei mir funktioniert hat.

3voto

scc Punkte 9643

Das hat bei mir funktioniert: Stellen Sie zunächst sicher, dass die npm-Verzeichnisse den richtigen Benutzer haben

sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules

Dann verlinken Sie in Ihrer package.json das Verzeichnis

"scripts": {
 "preinstall": "npm ln mylib ../../path/to/mylib"
}, 
"dependencies": {
  "mylib" : "*"
}

2voto

John Tribe Punkte 1067

Es gibt viele yalc die bei der Verwaltung lokaler Pakete hilft. Es half mir mit lokalen Lib, die ich später bereitstellen. Packen Sie das Projekt einfach mit dem .yalc-Verzeichnis (mit oder ohne /node_modules). Also einfach tun:

npm install -g yalc  

in directory lib/$ yalc publish 

im Projekt:

project/$ yalc add lib

project/$ npm install 

Das war's.

Wenn Sie etwas aktualisieren möchten:

lib/$ yalc push   //this will updated all projects that use your "lib"

project/$ npm install 

Packen und Bereitstellen mit Docker

tar -czvf <compresedFile> <directories and files...>
tar -czvf app.tar .yalc/ build/ src/ package.json package-lock.json

Hinweis: Denken Sie daran, Folgendes hinzuzufügen .yalc Verzeichnis.

inDocker:

FROM node:lts-alpine3.9

ADD app.tar /app

WORKDIR /app
RUN npm install

CMD [ "node", "src/index.js" ]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X