npm WARN package.json: Kein Repository-Feld


809

Ich habe Express.js mit dem folgenden Befehl installiert:

sudo npm install -g express

Ich erhalte folgende Warnungen:

npm WARN package.json range-parser@0.0.4 No repository field.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json methods@0.0.1 No readme data.
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json pause@0.0.1 No repository field.
npm WARN package.json bytes@0.2.0 No repository field.
npm WARN package.json github-url-from-git@1.1.1 No repository field.
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.

Ich bin neu bei Node.js und Express.js. Warum habe ich die oben genannten Warnungen? Sollte ich besorgt sein?


19
Wenn ich diese Frage ein Jahr später sehe, stelle ich fest, dass ich all diese Warnungen jedes Mal, wenn ich npm-Pakete installiere, mental lösche. Dies ist etwas, worüber Paketentwickler vielleicht etwas vorsichtiger sein sollten.
nha

@nha Ja, ich sehe diese Warnungen normalerweise, wenn ich eine npm-Operation durchführe, und behebe sie, wenn sie in dem Paket enthalten sind, das ich entwickle.
Gustavohenke

29
Für private Repos fügen "private": trueSie einfach zu package.json hinzu
chovy

Antworten:


1279

Es ist nur eine Überprüfung ab NPM v1.2.20, sie melden dies als Warnung.

Keine Sorge, es gibt sooooooo viele Pakete, die das repositoryFeld noch nicht in sich haben package.json. Das Feld wird zu Informationszwecken verwendet.

Im Fall , dass Sie ein Paket Autor, setzen die repositoryin Ihrer package.json, wie folgt aus :

"repository": {
  "type": "git",
  "url": "git://github.com/username/repository.git"
}

Lesen Sie mehr über das repositoryFeld und lesen Sie den protokollierten Fehler für weitere Details.


Darüber hinaus können Sie, wie ursprünglich von @dan_nl gemeldet , den privateSchlüssel in Ihrem festlegen package.json.
Dies verhindert nicht nur, dass Sie versehentlich npm publishin Ihrer App ausgeführt werden, sondern verhindert auch, dass NPM Warnungen bezüglich package.jsonProblemen druckt .

{
  "name": "my-super-amazing-app",
  "version": "1.0.0",
  "private": true
}

20
Ein paar Monate nach meiner Antwort und ich habe noch keine Probleme bisher :)
Gustavohenke

2
NPM 2.14 gibt jetzt einen Fehler aus, wenn er repositoryleer und privateauf true gesetzt ist.
Blaise

9
@Blaise, ich bekomme keine Warnungen in NPM 3.3.3 mitprivate: true
gustavohenke

3
Frage, warum ist nicht "privat" die Standardeinstellung? Ich meine, wie viele npm-Projekte erstellt werden und wie viele tatsächlich veröffentlicht werden. Gibt es wirklich mehr Bibliothekscode als Benutzercode?
Felype

1
Danke für das Private: stimmt, irgendwie habe ich dieses all die Jahre verpasst.
Jeremy Chone

394

Sie können die Anwendung auch als privat markieren, wenn Sie nicht vorhaben, sie in einem tatsächlichen Repository abzulegen.

{
  "name": "my-application",
  "version": "0.0.1",
  "private": true
}

51

Wie dan_nl sagte, können Sie in package.json ein privates gefälschtes Repository hinzufügen. Sie brauchen nicht einmal Name und Version dafür:

{
  ...,
  "repository": {
    "private": true
  }
}

Update: Diese Funktion ist nicht dokumentiert und funktioniert möglicherweise nicht. Wählen Sie die folgende Option.

Besser noch: Setzen Sie die privateFlagge direkt. Auf diese Weise fragt npm auch nicht nach einer README-Datei:

{
  "name": ...,
  "description": ...,
  "version": ...,
  "private": true
}

Wurde über einen anderen Benutzer über diese Antwort informiert. Sieht aus wie repository.privatenicht Verhalten dokumentiert (oder es wird nicht mehr akzeptiert), nach docs.npmjs.com/files/package.json .
Gustavohenke

1
@gustavohenke: Danke, es scheint, Sie haben Recht - privateda Top-Level-Immobilien sowieso die bessere Option sind. Meine Antwort wurde aktualisiert.
Wortwart

46

Wenn Sie dies von sich selbst erhalten package.json, fügen Sie einfach das repositoryFeld hinzu. (Verwenden Sie den Link zu Ihrem eigentlichen Repository):

"repository" : { 
   "type" : "git",
   "url" : "https://github.com/npm/npm.git"
 }

Vielen Dank für die Klarstellung, den vollständigen Link zur Github-Projektdatei zu verwenden (einschließlich http://oder https://!
twknab

9

Haben Sie laufen npm init? Dieser Befehl führt Sie durch alles ...


9

In Simple word- package.json Ihres Projekts ist die Eigenschaft des Repositorys nicht vorhanden. Sie müssen es hinzufügen.

und Sie müssen Repository in Ihrer package.json wie unten hinzufügen

Geben Sie hier die Bildbeschreibung ein

und Lassen Sie mich anhand Ihres Szenarios erklären

Sie müssen ein Repository-Feld wie unten hinzufügen

  "repository" : {     
     "type" : "git",
      "url" : "http://github.com/npm/express.git" 
   }

7

Um Warnungen zu vermeiden wie:

npm WARN project.com@1.0.0 No repository field.

Sie müssen das Repository in Ihrem Projekt package.json definieren. Wenn Sie ohne Veröffentlichung im Repository entwickeln, können Sie dies "private": truein package.json festlegen

Beispiel:

{
  "name": "test.loc",
  "version": "1.0.0",
  "private": true,
  ...
  "license": "ISC"
}

NPM-Dokumentation dazu: https://docs.npmjs.com/files/package.json


6

Wenn Sie kein Repository angeben möchten, können Sie der package.jsonDatei die folgenden Zeilen hinzufügen :

"description":"",
"version":"0.0.1",
"private":true,

Das hat bei mir funktioniert.
Durch Hinzufügen privatemüssen Sie keine Verknüpfung zu einem Repo herstellen.


4

Dies wird Ihnen allen helfen, Ihre eigenen korrekten Details zu finden

npm ls dist-tag

Dadurch werden die richtigen Informationen angezeigt, sodass Sie den Speicherort der Versionsdatei usw. nicht erraten

genießen :)


1
Ich erhielt eine Antwort als '--empty
MJ

3

Ja, wahrscheinlich können Sie eine neu erstellen, indem Sie sie -fam Ende Ihres Befehls einfügen


1

Verwenden Sie npm install -g
angle -cli anstelle von npm install -g @ nagular / cli, um Angular zu installieren

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.