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 2014年

@nha是的,我通常会在执行一些npm操作时看到这些警告,如果在我正在开发的程序包中,请予以修复。
gustavohenke

29
对于私有存储库,只需将其添加"private": true到package.json
chovy

Answers:


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 2013年

2
NPM 2.14现在repository为空时会打印错误,并将private其设置为true。
布莱斯2015年

9
@Blaise,使用private: true
gustavohenke,2016年

3
问题,为什么不是默认的“私有”,我的意思是创建了多少个npm项目与实际发布了多少个项目,库代码真的比用户代码多吗?
Felype

1
感谢私人:是的,以某种方式,这些年来我都错过了这一年。
Jeremy Chone

394

如果您不打算将应用程序放置在实际的存储库中,则还可以将其标记为私有。

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

51

如dan_nl所述,您可以在package.json中添加一个私有的假存储库。您甚至不需要它的名称和版本:

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

更新:此功能未记录,可能无法使用。选择以下选项。

更妙的是:private直接设置标志。这样npm也不要求自述文件:

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

已收到有关此答案的其他用户的通知。repository.private根据docs.npmjs.com/files/package.json,看起来好像没有记录的行为(或者不再被接受)。
gustavohenke '18

1
@gustavohenke:谢谢,看来您是对的- private顶级属性还是更好的选择。更新了我的答案。
wortwart

46

如果您是从自己那里得到的package.json,只需将repository字段添加到其中。(使用指向您实际存储库的链接):

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

感谢您澄清使用完整的github项目文件链接(包括http://https://
twknab


9

您项目的Simple word- package.json没有存储库属性中,您必须添加它,

并且您必须在package.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
我为“--empty响应
MJ

3

是的,可能您可以通过-f在命令末尾添加来重新/创建一个


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.