npm WARN package.json: Brak pola repozytorium


808

Zainstalowałem Express.js za pomocą następującego polecenia:

sudo npm install -g express

Otrzymuję następujące ostrzeżenia:

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.

Jestem nowy w Node.js i Express.js. Dlaczego mam powyższe ostrzeżenia? Powinienem być zaniepokojony?


19
Widząc to pytanie rok później, zdaję sobie sprawę, że mentalnie usuwam wszystkie te ostrzeżenia za każdym razem, gdy instaluję pakiety npm. Jest to coś, o czym twórcy pakietów powinni być nieco bardziej ostrożni.
nha

@ nha tak, zwykle widzę te ostrzeżenia podczas wykonywania operacji npm i naprawiam je, jeśli są w pakiecie, który opracowuję.
gustavohenke

29
dla prywatnych repozytoriów, po prostu dodaj "private": truedo package.json
chovy

Odpowiedzi:


1279

To tylko czek od NPM 1.2.20, zgłaszają to jako ostrzeżenie.

Jednak nie martw się, istnieje sooooooo wiele pakietów, które jeszcze nie mają repositorypola w ich package.json. Pole służy do celów informacyjnych.

Jeśli jesteś autorem pakietu, umieść go repositoryw swoim package.json, w ten sposób:

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

Przeczytaj więcej o repositorypolu i zobacz zarejestrowany błąd, aby uzyskać więcej informacji.


Dodatkowo, jak pierwotnie informował @dan_nl , możesz ustawić privateklucz w swoim package.json.
To nie tylko powstrzyma Cię przed przypadkowym uruchomieniem npm publishw Twojej aplikacji, ale także powstrzyma NPM przed drukowaniem ostrzeżeń dotyczących package.jsonproblemów.

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

20
Kilka miesięcy po mojej odpowiedzi i do tej pory nie
wydawałem się

2
NPM 2.14 wyświetla teraz błąd, gdy repositoryjest pusty i privatejest ustawiony na true.
Blaise,

9
@ Blaise, nie otrzymuję żadnych ostrzeżeń w NPM 3.3.3, używającprivate: true
gustavohenke

3
Pytanie, dlaczego domyślnie „prywatne” nie jest, to znaczy, ile projektów npm jest tworzonych, a ile faktycznie opublikowanych, czy naprawdę jest więcej kodu biblioteki niż kodu użytkownika?
Felype

1
Dzięki za prywatne: prawda, jakoś tęskniłem przez te wszystkie lata.
Jeremy Chone

394

możesz także oznaczyć aplikację jako prywatną, jeśli nie planujesz umieścić jej w rzeczywistym repozytorium.

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

51

Jak stwierdził dan_nl, możesz dodać prywatne fałszywe repozytorium w pliku package.json. Nie potrzebujesz nawet nazwy i wersji:

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

Aktualizacja: Ta funkcja jest nieudokumentowana i może nie działać. Wybierz następującą opcję.

Jeszcze lepiej: Ustaw privateflagę bezpośrednio. W ten sposób npm nie pyta o plik README:

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

Zostałem powiadomiony o innym użytkowniku o tej odpowiedzi. Wygląda na repository.privateto, że nie jest to udokumentowane zachowanie (lub nie jest już akceptowane), zgodnie z docs.npmjs.com/files/package.json .
gustavohenke

1
@gustavohenke: Dziękuję, wygląda na to, że masz rację - privateponieważ własność najwyższego poziomu jest i tak lepszą opcją. Zaktualizowałem moją odpowiedź.
wortwart

46

Jeśli otrzymujesz to od siebie package.json, po prostu dodaj repositorydo niego pole. (użyj linku do swojego rzeczywistego repozytorium):

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

Dziękujemy za wyjaśnienie dotyczące korzystania z pełnego linku do pliku projektu github (w tym http://lub https://!
twknab

9

Biegałeś npm init? To polecenie poprowadzi cię przez wszystko ...


9

W Simple word- package.json twojego projektu nie ma właściwości repozytorium, musisz go dodać,

i musisz dodać repozytorium w pliku package.json jak poniżej

wprowadź opis zdjęcia tutaj

i pozwól mi wyjaśnić zgodnie z twoim scenariuszem

musisz dodać pole repozytorium, takie jak poniżej

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

7

Aby uniknąć ostrzeżeń, takich jak:

npm WARN project.com@1.0.0 No repository field.

Musisz zdefiniować repozytorium w projekcie package.json. W przypadku programowania bez publikowania w repozytorium można ustawić "private": truew pliku package.json

Przykład:

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

Dokumentacja NPM na ten temat: https://docs.npmjs.com/files/package.json


6

Jeśli nie chcesz określać repozytorium, możesz dodać następujące wiersze do package.jsonpliku:

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

To działało dla mnie.
Dodając private, nie musisz linkować do repozytorium.


4

pomoże to każdemu z was znaleźć własne poprawne dane

npm ls dist-tag

spowoduje to wyświetlenie poprawnych informacji, dzięki czemu nie zgadniesz lokalizacji pliku wersji itp

cieszyć się :)


1
Otrzymałem odpowiedź jako „
MJ

3

Tak, prawdopodobnie możesz je ponownie utworzyć / załączyć -fna końcu polecenia


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.