npm WARN package.json: Немає поля репозиторію


808

Я встановив Express.js за допомогою наступної команди:

sudo npm install -g express

Я отримую такі попередження:

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.

Я новачок у Node.js та Express.js. Чому я маю вищезазначені попередження? Чи варто хвилюватися?


19
Бачачи це питання через рік, я розумію, що подумки стираю всі ці попередження щоразу, коли встановлюю пакети npm. Це щось, що розробники пакунків повинні бути дещо уважнішими.
Nha

@nha так, я зазвичай бачу ці попередження, коли роблю якусь операцію npm, і виправляю їх, якщо вони є в пакеті, який я розробляю.
gustavohenke

29
для приватних репостів, просто додайте "private": trueв package.json
chovy

Відповіді:


1279

Це лише перевірка на NPM v1.2.20, вони повідомляють про це як попередження.

Однак, не хвилюйтеся, є SOOOOOOO багато пакетів , які до сих пір не мають repositoryполя їх package.json. Поле використовується в інформаційних цілях.

У випадку, якщо ви автор пакету, repositoryвведіть своє package.json, наприклад:

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

Прочитайте більше про repositoryполе та перегляньте зареєстровану помилку, щоб отримати докладнішу інформацію.


Крім того, як спочатку повідомляв @dan_nl , ви можете встановити privateключ у своєму package.json.
Це не тільки зупинить вас від випадкового запуску npm publishу вашій програмі, але й зупинить NPM від друку попереджень щодо package.jsonпроблем.

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

20
Через кілька місяців після моєї відповіді, і я досі не маю жодних проблем :)
gustavohenke

2
NPM 2.14 тепер друкує помилку, коли repositoryвона порожня і privateвстановлена ​​на true.
Блейз

9
@Blaise, я не отримую жодних попереджень про NPM 3.3.3, використовуючиprivate: true
gustavohenke

3
Питання: чому за замовчуванням не "приватний", я маю на увазі, скільки проектів npm створюється порівняно з кількістю насправді опублікованих, чи дійсно більше бібліотечного коду, ніж код користувача?
Феліпе

1
Дякую приватному: правда, якимось чином я пропустив цей протягом усіх цих років.
Джеремі Чоне

394

ви також можете позначити програму як приватну, якщо ви не плануєте розміщувати її у фактичному сховищі.

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

51

Як зазначено dan_nl, ви можете додати приватне підроблене сховище в package.json. Вам навіть ім'я та версія не потрібні:

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

Оновлення: Ця функція недокументована і може не працювати. Виберіть наступний варіант.

Ще краще: встановіть privateпрапор безпосередньо. Таким чином npm також не запитує файл README:

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

Повідомлено про цю відповідь іншого користувача. Схоже, repository.privateце не задокументоване поведінка (або вона більше не приймається), згідно з docs.npmjs.com/files/package.json .
gustavohenke

1
@gustavohenke: Дякую, здається, ти маєш рацію - так privateяк власність вищого рівня все одно є кращим варіантом. Оновлено мою відповідь.
wortwart

46

Якщо ви отримуєте це самостійно package.json, просто додайте до нього repositoryполе. (скористайтеся посиланням на власне сховище):

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

Дякуємо за роз’яснення щодо використання повного посилання на файл проекту github (включаючи http://або https://!
twknab


9

У простому word- package.json вашого проекту немає властивості сховища, ви повинні його додати,

і вам доведеться додати сховище у пакунок.json, як показано нижче

введіть тут опис зображення

і дозвольте мені пояснити відповідно до вашого сценарію

вам доведеться додати поле сховища приблизно на кшталт нижче

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

7

Щоб уникнути попереджень:

npm WARN project.com@1.0.0 No repository field.

Ви повинні визначити сховище у проекті package.json. У випадку, коли ви розвиваєтесь без публікації до сховища, ви можете встановити його "private": trueу package.json

Приклад:

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

Документація NPM про це: https://docs.npmjs.com/files/package.json


6

Якщо ви не хочете вказувати сховище, ви можете додати у package.jsonфайл такі рядки :

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

Це працювало для мене.
Додавши private, вам не потрібно посилатися на репо.


4

це допоможе всім вам знайти власне правильне використання деталей

npm ls dist-tag

це покаже правильну інформацію, щоб ви не здогадалися про розташування файлу версії тощо

насолоджуйтесь :)


1
Я отримав відповідь як "--порожня
MJ

3

Так, ймовірно, ви можете повторно створити його, включивши -fв кінець своєї команди


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.