npm WARN package.json: pas de champ de référentiel

810

J'ai installé Express.js avec la commande suivante:

sudo npm install -g express

Je reçois les avertissements suivants:

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.

Je suis nouveau sur Node.js et Express.js. Pourquoi ai-je les avertissements ci-dessus? Devrais-je m'inquiéter?

JR Galia
la source
19
En voyant cette question un an plus tard, je me rends compte que j'efface mentalement tous ces avertissements à chaque fois que j'installe des packages npm. C'est quelque chose que les développeurs de packages devraient peut-être faire un peu plus attention.
nha
@nha ouais, je vois généralement ces avertissements lorsque je fais une opération npm et les corrige si c'est dans le package que je développe.
gustavohenke
29
pour les dépôts privés, ajoutez simplement "private": trueà package.json
chovy

Réponses:

1281

C'est juste une vérification à partir de NPM v1.2.20, ils signalent cela comme un avertissement.

Cependant, ne vous inquiétez pas, il y a tellement de paquets qui n'ont toujours pas de repositorychamp dans leur package.json. Le champ est utilisé à des fins d'information.

Dans le cas où vous êtes un auteur de package, mettez le repositorydans votre package.json, comme ceci:

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

En savoir plus sur le repositorychamp et voir le bogue enregistré pour plus de détails.


De plus, comme indiqué à l'origine par @dan_nl , vous pouvez définir la privateclé dans votre package.json.
Cela vous empêchera non seulement d'exécuter accidentellement npm publishdans votre application, mais empêchera également NPM d'imprimer des avertissements concernant les package.jsonproblèmes.

{
  "name": "my-super-amazing-app",
  "version": "1.0.0",
  "private": true
}
Gustavohenke
la source
20
Quelques mois après ma réponse et je n'ai pas semblé avoir de problèmes jusqu'à présent :)
gustavohenke
2
NPM 2.14 affiche désormais une erreur lorsqu'il repositoryest vide et privateest défini sur true.
Blaise
9
@Blaise, je ne reçois aucun avertissement dans NPM 3.3.3 en utilisantprivate: true
gustavohenke
3
Question, pourquoi n'est-ce pas "privé" par défaut, je veux dire combien de projets npm sont créés contre combien sont réellement publiés, y a-t-il vraiment plus de code de bibliothèque que de code utilisateur?
Felype
1
Merci pour le privé: c'est vrai, en quelque sorte, j'ai manqué celui-ci toutes ces années.
Jeremy Chone
394

vous pouvez également marquer l'application comme privée si vous ne prévoyez pas de la placer dans un référentiel réel.

{
  "name": "my-application",
  "version": "0.0.1",
  "private": true
}
dan_nl
la source
51

Comme indiqué dan_nl, vous pouvez ajouter un faux dépôt privé dans package.json. Vous n'avez même pas besoin de nom et de version pour cela:

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

Mise à jour: cette fonctionnalité n'est pas documentée et peut ne pas fonctionner. Choisissez l'option suivante.

Mieux encore: réglez privatedirectement le drapeau. De cette façon, npm ne demande pas non plus de fichier README:

{
  "name": ...,
  "description": ...,
  "version": ...,
  "private": true
}
millepertuis
la source
J'ai été informé d'un autre utilisateur de cette réponse. Il semble que le repository.privatecomportement ne soit pas documenté (ou qu'il ne soit plus accepté), selon docs.npmjs.com/files/package.json .
gustavohenke
1
@gustavohenke: Merci, il semble que vous ayez raison - privatecar la propriété de premier niveau est de toute façon la meilleure option. Mis à jour ma réponse.
wortwart
46

Si vous obtenez cela par vous-même package.json, ajoutez-y simplement le repositorychamp. (utilisez le lien vers votre référentiel réel):

"repository" : { 
   "type" : "git",
   "url" : "https://github.com/npm/npm.git"
 }
Brendan Nee
la source
Merci d'avoir clarifié l'utilisation du lien complet du fichier de projet github (y compris http://ou https://!
twknab
9

As-tu couru npm init? Cette commande vous fait traverser tout ...

achoukah
la source
9

Dans Simple word- package.json de votre projet n'a pas de propriété de référentiel vous devez l'ajouter,

et vous devez ajouter un référentiel dans votre package.json comme ci-dessous

entrez la description de l'image ici

et laissez-moi vous expliquer selon votre scénario

vous devez ajouter un champ de référentiel comme ci-dessous

  "repository" : {     
     "type" : "git",
      "url" : "http://github.com/npm/express.git" 
   }
Shashwat Gupta
la source
7

Pour éviter des avertissements tels que:

npm WARN project.com@1.0.0 No repository field.

Vous devez définir le référentiel dans votre projet package.json. Dans le cas où vous développez sans publication dans le référentiel, vous pouvez définir "private": truedans package.json

Exemple:

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

Documentation NPM à ce sujet: https://docs.npmjs.com/files/package.json

Alex
la source
6

Si vous ne souhaitez pas spécifier de référentiel, vous pouvez ajouter les lignes suivantes au package.jsonfichier:

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

Cela a fonctionné pour moi.
En ajoutant private, vous n'avez pas besoin de créer un lien vers un référentiel.

Rubin bhandari
la source
4

cela vous aidera tous à trouver vos propres informations correctes

npm ls dist-tag

cela montrera alors les informations correctes afin que vous ne deviniez pas l'emplacement du fichier de version, etc.

prendre plaisir :)

Ian Croasdell
la source
1
J'ai reçu une réponse comme '--empty
MJ
3

Oui, vous pouvez probablement en recréer un en l'incluant -fà la fin de votre commande

Jsalim
la source
1

utilisez npm install -g angular-cli au lieu de
npm install -g @ nagular / cli pour installer Angular

Alnebras Murtada
la source