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": "*"
}

905voto

danilopopeye Punkte 9330

Npm >= 2.0.0

Dieses Merkmal wurde implementiert in der Version 2.0.0 von npm. Lokale Pfade können gespeichert werden mit npm install -S o npm install --save unter Verwendung eines dieser Formulare:

../foo/bar
~/foo/bar
./foo/bar
/foo/bar

Beispiel package.json :

{
  "name": "baz",
  "dependencies": {
    "bar": "file:../foo/bar"
  }
}

npm ls :

app@0.0.1 /private/tmp/app
 somelocallib@0.0.1 -> /private/tmp/somelocallib

npm < 2.0.0

Setzen Sie somelocallib als Abhängigkeit in Ihrem package.json wie gewohnt:

"dependencies": {
  "somelocallib": "0.0.x"
}

Dann laufen npm link ../somelocallib und npm wird die Version installieren, an der Sie gerade arbeiten als Symlink .

Referenz: Link(1)

258voto

Michael Trouw Punkte 4602

Es ist jetzt möglich, lokale Node-Modul-Installationspfade in Ihrem package.json direkt. Aus den Unterlagen:

Lokale Pfade

Seit der Version 2.0.0 können Sie einen Pfad zu einem lokalen Verzeichnis angeben, das ein Paket enthält. Lokale Pfade können gespeichert werden mit npm install -S o npm install --save unter Verwendung eines dieser Formulare:

../foo/bar
~/foo/bar
./foo/bar
/foo/bar

in diesem Fall werden sie auf einen relativen Pfad normalisiert und zu Ihrer package.json . Zum Beispiel:

{
  "name": "baz",
  "dependencies": {
    "bar": "file:../foo/bar"
  }
}

Diese Funktion ist hilfreich für die lokale Offline-Entwicklung und die Erstellung von Tests, die eine npm-Installation erfordern, bei der Sie keinen externen Server ansprechen wollen, sollte aber nicht verwendet werden, wenn Sie Pakete in der öffentlichen Registry veröffentlichen.

106voto

Brian McAuliffe Punkte 2069

Das funktioniert bei mir.

Fügen Sie Folgendes in Ihre package.json-Datei ein

"scripts": {
    "preinstall": "npm install ../my-own-module/"
}

41voto

sreekanth Punkte 497

Auf diese Weise werden Sie lokale Abhängigkeiten hinzufügen:

npm install file:src/assets/js/FILE_NAME

Fügen Sie es der package.json von NPM hinzu:

npm install --save file:src/assets/js/FILE_NAME

Direkt in die package.json einfügen, etwa so:

....
  "angular2-autosize": "1.0.1",
  "angular2-text-mask": "8.0.2", 
  "animate.css": "3.5.2",
  "LIBRARY_NAME": "file:src/assets/js/FILE_NAME"
....

38voto

Taytay Punkte 10693

Wenn Sie dies weiter automatisieren wollen, weil Sie Ihr Modul in die Versionskontrolle einchecken und sich nicht darauf verlassen wollen, dass die Entwickler sich an den npm-Link erinnern, können Sie dies zu Ihrem package.json-Abschnitt "scripts" hinzufügen:

"scripts": {
    "postinstall": "npm link ../somelocallib",
    "postupdate": "npm link ../somelocallib"
  }

Dies fühlt sich mehr als hacky, aber es scheint zu "funktionieren". Habe den Tipp von dieser npm Ausgabe: https://github.com/npm/npm/issues/1558#issuecomment-12444454

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