将自定义元数据或configuration添加到package.json中,是否有效?

我已经看到(不记得在哪里)一个包含以下划线开头的自定义键的package.json文件:

{ "name": "application-name" , "version": "0.0.1" , "private": true , "dependencies": { "express": "2.4.7" , "jade": ">= 0.0.1" } , "_random": true } 

你可以这样做吗? 它仍然有效吗? 如果这是允许的,是否有任何规则的文件?

谢谢!

tl; dr

  • 是的, 您可以将自定义条目添加到package.json
  • select一个关键名称:
    • 尚未定义 (详情如下)
    • 不保留供将来使用(详情如下)
    • 避免前缀_$
    • 最好使用一个顶级密钥嵌套您的自定义条目

例如,如果您拥有域example.org ,则可以按如下方式存储一个自定义的random密钥, 在顶级密钥内以反向域名表示法进行replace. 如果适用, - (见注释) (例如, org_example ):

 { "name": "application-name" , "version": "0.0.1" , "private": true , "dependencies": { "express": "2.4.7" , "jade": ">= 0.0.1" } , "org_example": { "random": true } } 

npmpackage.json文件格式大多符合CommonJS包规范

  • npm目前使用的密钥 : https : npm
  • 在规范中定义的键 : http : //wiki.commonjs.org/wiki/Packages/1.1

至于select自定义键 : CommonJS包规范说明(强调我的):

以下字段保留未来的扩展: builddefaultemailexternalfilesimportsmaintainerpathsplatformrequiresummarytestusingdownloadsuid

对包描述符规范的扩展应该努力通过名称避免未来标准名称的冲突 – 将它们的属性与无关的名称间隔开,这些名称与通用包pipe理无关

以下字段保留给注册pipe理机构以自行决定使用: idtype 。 所有_$开头的属性也保留给包裹注册pipe理机构使用。

鉴于JSON的性质和Nodejitsu文档中的这个声明,我没有看到任何问题。

NPM本身只知道package.json中的两个字段:

 { "name" : "barebones", "version" : "0.0.0", } 

NPM也关心这里列出的几个领域。 所以只要它是有效的JSON,并且不干涉Node.js或NPM,一切都应该是正确和有效的。

Node对package.json文件的认识似乎延伸到了主要领域。 参考。

  { "name" : "some-library", "main" : "./lib/some-library.js" } 

如果这是位于./some-library的文件夹,那么require('./ some-library')会尝试加载./some-library/lib/some-library.js。

这是Node对package.json文件的认识程度。

为了避免可能的冲突,你应该在你的密钥前加上一些字符或单词。 下划线是常见的变体。