“当运行 `npm install` 时,'x个包正在寻求资金' 是什么意思?”

523
当在一个React项目上运行npm install时,我通常会得到"x个包正在寻找资金"的提示。你知道这是什么意思吗?

11
这个问题现在正在Meta上被讨论,讨论的内容是它是否符合主题。请将所有关于它是否属于主题的讨论都放在那里进行,而不是在这里留下评论。 - Cody Gray
11个回答

776
当你在命令提示符中运行npm update时,完成后会建议你键入一个新命令npm fund
运行npm fund会列出由需要资金支持其IT项目的公司或组织创建的所有已安装的模块和软件包。您将看到一个网页列表,您可以通过这些网页向它们捐款。因此,“资助”意味着“您安装的Angular软件包可选择从您那里获得资金,并帮助支持他们的业务”。
基本上,这是一个需要捐款或资助其项目的模块列表,其中列出了网站,您可以在这些网站上输入信用卡信息来支付费用。

32
请注意,这是一个npm的功能,它不仅适用于Angular。你在使用React、Vue或其他任何东西时也会收到同样的提示信息。 - alcfeoh
85
直到现在,我认为 npm fund 与依赖关系解析有关。因此,这个答案得到了一票支持。 - Jordan Mann
1
有趣。看到消息时我也想到了,但为了确定我还是查了一下谷歌。 - Leonardo Maffei
6
我也有同样的想法。我认为大多数使用 Node 的人也认为 npm 资助会解决一些关于软件包依赖性的问题。 - Nikhil Saini

186

npm 决定新增一个命令:npm fund,该命令将为 npm 用户提供更多的可见性,以了解哪些依赖正在积极寻求资金支持。

npm install 在最后也会显示一条消息,以让用户知道有依赖正在寻找资金支持,它看起来像这样:

$ npm install
packages are looking for funding.
run `npm fund` for details.

运行npm fund <package>将会在你的浏览器中打开该给定包所列出的网址。

更多详细信息请查看这里


30
npm 是一个软件包管理器,因此它应该专注于管理软件包的业务,而不是“让请求资金的人可见”。这应该是另一个命令,类似于“show-who-need-funds”。 - Gianluca Ghettini
42
问题在于现有的软件包已经在安装过程中打印要求资助/捐赠的消息。让npm打印一条消息被确定为比让20个不同的软件包各自打印请求捐赠更好。基本上,唯一的选择是:添加此功能、让软件包继续打印它们自己的消息,或禁止这样的消息而不提供任何替代方案。他们真的不想通过强制实行最后一个选项来惹恼软件包开发人员,因此他们选择了第一个选项。 - Kevin Cathcart
4
@GianlucaGhettini 我认为从一个包中请求资金也是管理包的一部分,所以npm在这个功能上并没有做错。 - Erisan Olasheni
7
我认为管理软件包意味着安装/卸载/更新软件包。就这样。你是否见过"ls" Linux命令要求执行其他操作,比如创建、删除、重命名文件吗? - Gianluca Ghettini
@Kevin Cathcart “让软件包继续打印自己的消息”有什么问题吗?我认为保持npm更轻量化会更好,少即是多,更安全可靠。 - Zombies

160
首先,尽量在你可以的时候支持开源开发者,他们在这些软件包上投入了相当多的(免费)时间。但是,如果你想要摆脱资金支持的信息,你可以配置NPM来关闭这些信息。执行此操作的命令是:
npm config set fund false --location=global

如果你只想关闭特定项目的话,可以在项目目录中运行以下命令:
npm config set fund false 

有关为什么实施这个的详细信息,请参阅@Stokely's@ArunPratap's的回答。

讲得很清楚,你开始得很好:请支持他们,但是如果我想得对的话,好吧,忘掉它,走自己的路,这就是诀窍;) - Timo
11
乍一看可能是这样,但关闭它还有其他原因。例如,我的公司支持几个软件包的作者,所以没必要每次他们运行更新时都在所有开发团队的屏幕上打扰他们的信息。(我们在项目的.npmrc文件中设置fund=false来实现这一点。) - Jeroen Landheer
4
还有一个原则问题。我不喜欢看到滋生于开源文化中的虐待语气——带着权利和怨恨的痕迹。这不是过去的样子了。上面答案中加粗文本就能看出来... - odigity
1
@odigity 我希望我能够+两次... - BillRuhl

35

您可以通过以下方式跳过资金:

npm install --no-fund YOUR PACKAGE NAME
例如:
npm install --no-fund core-js
如果您需要安装多个软件包:
npm install --no-fund package1 package2 package3

2
alias npmi='npm install --no-fund' - Lauren Yim
9
更好的写法:alias npm='npm --no-fund' - mbomb007
2
更好的方法是在Linux上执行以下命令:echo "npmf='npm install --no-fund'" >> ~/.bash_aliases && source ~/.bash_aliases - mhannani
7
更好的做法是:npm config set fund false --global(来自Jeroen Landheer在这个问题中的回答)。 - derpedy-doo
3
甚至更好的方式是“卸载Node和npm”。 - Plochie
显示剩余3条评论

19

首先,这不是一个错误或警告。基本上,这是一条信息,如果您希望向为您的项目构建的软件包/工具人或个人捐款,可以通过捐款来支持他们。要查看已安装/使用的软件包,请在终端中输入:

npm fund
并列列出捐赠的软件包名称及其网站链接列表。希望这对您有所帮助。

3

这些是开源项目(或开发者),他们需要捐赠来资助他们的业务。

在npm中,命令npm fund会列出你可以进行捐赠的网址。

在composer中,命令composer fund也会做同样的事情。

虽然上面提到了一些选项可以用来去除捐赠信息,但如果您能支持这个事业,请尽力。


2
npm config set false --global 
npm config set fund false

10
欢迎来到 StackOverflow。虽然这些命令可能会回答问题,但提供关于它们如何解决问题以及为什么要这样做的额外背景信息将提高答案的长期价值。此外,已经有一个被接受的答案了。 - Sven Eberth
1
这个答案有一个错误,第一个命令应该是 npm config set fund false --location=global 而不是 (遗漏了 "fund" 并使用了过时的语法) - 另外,如果您使用第一个命令,则无需使用第二个命令。 - spamove

2
npm fund [<pkg>]

此命令检索有关如何为给定项目的依赖项提供资金的信息。如果未提供软件包名称,它将以树形结构列出所有正在寻求资金的依赖项,其中列出了资金类型和要访问的网址。
可以使用以下方式禁用该消息:npm install --no-fund


1
npm install --silent

似乎压制了资金问题。


4
问题并不是要压制信息,而是要理解它的意义! - Uzair_07

0
以下代码可用于解决“无资金”错误。
npm config set fund false --location=global

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接