如何让纱线不对许可证字段发出警告?

k0p*_*kus 22 javascript node.js package.json yarnpkg

在运行yarn install时,即使我已定义了一个许可证,每次没有许可证时都会看到警告:

$ jq . package.json 
{
  "name": "license-example",
  "version": "1.0.0",
  "main": "index.js",
  "license": "UNLICENSED",
  "dependencies": {
    "lodash": "^4.17.4",
    "moment": "^2.18.1"
  }
}
Run Code Online (Sandbox Code Playgroud)

根据npm定义应该是有效的:

最后,如果您不希望授予他人在任何条款下使用私人或未发布的包裹的权利:

{ "license": "UNLICENSED" }
Run Code Online (Sandbox Code Playgroud)

这是输出:

yarn install
yarn install v0.27.5
warning ../package.json: No license field
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.09s.
Run Code Online (Sandbox Code Playgroud)

我的主要目标是让警告消失,但我也不想提供无效的开源许可证来使警告继续进行,即使它是一个永远不会在外面看到的内部项目.

如何在没有出现警告的情况下将纱线项目标记为预防措施?

k0p*_*kus 42

Yarn和npm默认行为是它们查找父目录.

package.json在我的主文件夹中有一个过时的和遗忘的没有许可证字段:

~/package.json
Run Code Online (Sandbox Code Playgroud)

yarn install在我的项目中运行时:

~/my-project/package.json
Run Code Online (Sandbox Code Playgroud)

然后,纱线也在我的主目录中找到了一个并重新输出了该错误.我误认为是我的项目package.json.

警告通过..在父文件夹的路径前面清除.

warning ../package.json: No license field
Run Code Online (Sandbox Code Playgroud)

删除过时的后,package.json我得到预期的输出:

yarn install v0.27.5
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.88s.
Run Code Online (Sandbox Code Playgroud)

  • 在您的软件是专有的并且不打算向公众许可或发布的典型情况下,将“private”:true添加到“package.json”文件是防止出现此警告的正确方法。接受的答案是一个相当极端的边缘情况。请参阅下面的其他答案。 (5认同)
  • 很有帮助!让我感到困惑的是,写这些警告的人是否真的讨厌他们的工作......为什么不简单地写一个更清晰的温暖,比如“警告 ../package.json **在父目录中**:没有许可证字段”? (4认同)
  • 呵呵,相关:每次打开外壳程序时都会发出此警告,结果是我在主目录中执行yarn后有一个package.json(因为cd很难)。感谢您的回答! (2认同)
  • 谢谢你,我的主目录中有 package.json,这就是我收到警告的原因。 (2认同)

Kee*_*asa 13

我收到以下警告以及其他一些许可警告。

warning package.json: No license field
warning react-material-dashboard@0.3.0: No license field
Run Code Online (Sandbox Code Playgroud)

我所做的只是将package.json文件的private属性更新为true.

{
  "name": "some-application-name",
  "author": "Keet Sugathadasa",
  "email": "email",
  "license": "MIT",
  "version": "0.0.1",
  "private": true,
  ...
}
Run Code Online (Sandbox Code Playgroud)

有了这个,No license field当我这样做时,我不再收到任何警告yarn install。要了解原因,请参阅此问题

{"private": true} 意味着,npm 将拒绝发布它,以防止意外发布私有存储库。

有关这方面的更多信息,请参阅以下链接。 https://docs.npmjs.com/files/package.json#private https://flaviocopes.com/package-json/#private


Sha*_*ala 8

我遇到了同样的错误,我发现当我们添加package.json或时yarn,某些文件可以位于系统根目录中。因此,错误来自系统根。您只需删除这些文件即可,错误将不再存在。

  1. 只需cd ~,然后你就可以找到package.json和yarn.lock。
  2. rm -rf package.json 或 rm -rf yarn.lock


小智 8

我是反应新手,但我发现最简单的方法是:只需将"private": true, 添加到您的package.json文件中。就是这样。


小智 6

在尝试了多种解决方案后,我发现root中有以下文件,需要删除:

cd ~
~$ rm -rf package.json
~$ rm -rf yarn.lock
~$ rm -rf package-lock.json
Run Code Online (Sandbox Code Playgroud)


小智 6

仔细看看消息:

警告 ../package.json: 没有许可证字段

它指的是一个更高一级目录的 package.json。
通过输入许可证字段或 privat: true 或删除它来修复该问题,因为它可能不应该在那里 ;-)

  • 哇。谢谢。我没注意。我的是../../package.json。到底为什么yarn要在目录树上向上走两层?这似乎是非常奇怪的行为,因为我在运行命令的同一文件夹中有一个 package.json 。 (5认同)
  • 由于某种原因,我的主目录中有一个很小的“package.json”。多年来我一直忍受着这个警告。谢谢! (3认同)