如果我的代码只供我所在公司使用,那么在package.json的许可字段中应该填写什么?

209

NPM 2.11.3

我正在Node中构建一个库。这个库仅供我目前工作的公司使用。我认为这意味着许可证为“无”。但是当我使用npm init时,它要求我使用SPDX许可证。“None”或“Unlicensed”不是有效选项。

npm WARN package.json data_monitoring_api@0.1.0 license should be a valid SPDX license expression

在NPM GitHub问题跟踪器上有一些关于此问题的讨论,但我找不到任何明确回答此问题的内容。也许NPM不支持这个概念,但这似乎很奇怪。

在这种情况下,我应该填写什么字段?我想摆脱与此相关的npm警告。

虽然文档说UNLICENSED是有效的,但它仍然会发出警告:

$ cat package.json | grep licen
  "license": "UNLICENSED",

$ npm install 
npm WARN package.json data_monitoring_api@0.1.0 license should be a valid SPDX license expression

我认为这是你要找的答案:http://programmers.stackexchange.com/questions/285885/which-spdx-license-is-equivalent-to-all-rights-reserved - Simon Groenewolt
看起来是@SimonGroenewolt,你想把它作为答案吗? - jcollum
NPM问题讨论此主题:https://github.com/npm/npm/issues/8918#issuecomment-138059254 - jcollum
现在这已经不重要了。NPM已经放弃试图强制您的许可证,现在允许使用SEE LICENSE IN LICENSE.txt,您将其设置为版权所有20xx年由xxx保留所有权利。未授予任何许可证。 - Charles Merriam
1
查尔斯这不一直是一个选项吗? - jcollum
4个回答

233
使用UNLICENSED根据npm文档

最后,如果您不希望以任何条件授予他人使用私有或未发布的软件包的权利:

{
  "license": "UNLICENSED"
}

这与被混淆地称为"无许可证"的许可证不同。

96
在撰写时,未经许可(请参见问题中的代码示例)不是选项,请参阅jcollum的答案。将private添加到package.json将有所帮助:
"private": true

22
这与许可证无关,你可能想将一个受版权保护的模块发布到你自己的注册表中:https://dev59.com/WGw05IYBdhLWcg3wUAM0如果在你的package.json中设置了"private": true,那么npm将拒绝发布它。这是一种防止私人代码库意外发布的方式。 - pdem
2
这曾经是技术上正确的答案,因为Node团队似乎不理解有时需要“发布”一些不是自由软件的东西。随着UNLICENSED的添加,这种说法已经不再正确。 - tekHedd
这篇帖子并没有回答问题。我编辑了这篇帖子,以便回答问题并解释private实际上是什么意思(与许可证无关),但不幸的是我的编辑被撤销了。 - Flimm
不支持 Node 14。 - Sergey Khmelevskoy
2
我看到很多人说这对他们没有帮助,但它实际上为我删除了错误信息。这是我改变的唯一一件事。使用yarn 1.22.19和node 16.17。 - Jtcruthers
显示剩余2条评论

13

在此链接找到的表格的第二列,https://spdx.org/licenses/,您可以看到所有不同的SPDX格式,可用于您的package.json

列的名称是Identifier,以防万一。谢谢,希望有所帮助。


3
这是正确的,但请注意在链接中加入以下内容:“SPDX许可证列表是自由和开源以及其他协作软件或文档中常见的许可证和例外情况列表。” 这意味着SPDX不适用于公司版权许可证。 - pdem
我收到一个关于 "license": "CC-PDDC" 的警告。 - Dima Korobskiy

4

对于我来说,无论我在代码中放置什么许可证都不起作用。但后来我发现,父目录中有一个无效的package.json文件。删除它后,这解决了所有问题。


1
很奇怪,npm居然会读取父目录中的package.json文件。这里似乎有些问题。 - jcollum
1
我刚刚也遇到了同样的问题。感谢您提供的解决方法。 - mhlavacka
1
是的,这没有任何意义,但我也遇到了同样的问题。我有一个杂项的 package.json 在上面三层目录里,我一直收到有关它的警告。删除它,警告就消失了。 - jyurek
1
我也遇到了同样的问题,并且困扰了一段时间。确实很奇怪。 - Radu Iamandi
1
救命稻草,谢谢。花了几个小时研究该在字段中放什么,结果问题出在父文件夹中... - Devis L.

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