package.json中的"保留所有权利"许可

wbe*_*rry 81 licensing node.js npm

我有一个小型的node.js项目,该项目是公司内部的,不会公开发布或与第三方共享.它肯定不会贡献给任何公共包存储库.

但是当我运行时,npm install我总是会收到以下错误:

npm WARN package.json <<myproject>>@0.1.0 license should be a valid SPDX license expression
Run Code Online (Sandbox Code Playgroud)

所需的许可证是:"我们的版权和保留所有权利".我在SPDX许可证列表中找不到任何适用的内容.这个答案中的建议也不起作用.如果我只是licensepackage.json错误更改为删除字段no license field.

如果npm install没有在我们不想使用的许可证参考中,我如何显示没有错误或警告?

kds*_*kds 132

根据新的npm规范,{ "license": "UNLICENSED"} 如果您不希望授予他人在任何条款下使用私人或未发布的包裹的权利,您可以使用.

请参阅此处的详细信息

所以你可能不会得到你提到的错误.

  • @ekkis Unlicense与`{"license":"UNLICENSED"} https://spdx.org/licenses/Unlicense完全相反.(我意识到你看了许可证,看到它不对,我只是觉得这需要在这里拼写以防万一) (9认同)
  • 在同一个npmjs页面中,"考虑设置"private":true以防止意外发布." (7认同)
  • 最好使用“SEE LICENSE IN &lt;filename&gt;”,尽管“UNLICENSED”是一个有效值,但它没有指定您的条件,请参阅下面的 Brandomscript 提供的答案。 (3认同)

bra*_*ipt 40

根据package.json的最新文档:

如果您使用的是未分配SPDX标识符的许可证,或者您使用的是自定义许可证,请使用以下有效的SPDX表达式:

{ "license" : "SEE LICENSE IN <filename>" }

然后包含一个<filename>在包的顶层命名的文件.


Gra*_*Sim 35

还要考虑添加"private": true这将导致 npm 阻止您的包的任何发布。所以在 package.json 中:

  "license": "UNLICENSED",
  "private": true,
Run Code Online (Sandbox Code Playgroud)

参考:https://docs.npmjs.com/cli/v7/configuring-npm/package-json


小智 17

UNLICENSED 意味着它没有获得许可,而末尾没有“d”的“unlicense”是指名为The Unlicense 的许可,这是非常不同的东西。为防止混淆,并且如果您想声明版权,您应该将某人指向您自己的内部许可文件。

绝对不要使用:

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

如果您希望清楚地传达您希望拥有版权声明样式许可,则按照最高投票答案的建议。

来自 UNLICENSE 许可证前两段的剪辑清楚地表明这与 OP 提出版权要求的请求完全没有关系:

这是发布到公共领域的免费且不受阻碍的软件。

任何人都可以出于任何目的、商业或非商业目的,以任何方式自由复制、修改、发布、使用、编译、销售或分发本软件,无论是源代码形式还是编译后的二进制文件。

为了获得最高投票的答案,Node 文档页面声称使用 UNLICENSED 选项是为了使您不会向其他人授予任何权利:

如果您不希望根据任何条款授予他人使用私有或未发布包的权利:

这似乎不是保留权利的安全选择。您可以推断缺少额外的“D”意味着这是两个完全不同的术语,但您不能假设其他人会知道这一点,并且当他们搜索 UNLICENSED 许可证是什么时,他们可能会获得指向The Unlicense的链接.

因此,以下内容:

{ "license": "SEE LICENSE IN <filename>" }
Run Code Online (Sandbox Code Playgroud)

是此时更安全的答案。

  • 我认为这是不正确的。SPDX 许可证列表确实包含您找到的“The Unlicense”条目,它与不授予任何权限的“UNLICENSED”不同。https://spdx.org/licenses/Unlicense.html 因此,虽然拼写错误会产生严重后果(“Unlicense”是不受限制的许可证,“UNLICENSED”保留所有权利),但没有任何歧义。package.json 规范明确指出“未经许可”不授予“在任何条款下”的任何权利。 (5认同)