将自定义元数据或配置添加到package.json,它有效吗?

时间:2012-04-08 19:05:30

标签: node.js

我看过(不记得在哪里)一个package.json文件,其中自定义键以下划线开头:

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

你被允许这样做吗?它仍然有效吗?如果允许,是否有关于规则的文档?

谢谢!

2 个答案:

答案 0 :(得分:81)

<强> TL;博士

  • 是,您被允许将自定义条目添加到package.json
  • 选择一个密钥名称:
    • 尚未定义(详情如下)
    • 未保留以备将来使用(详情如下)
    • 避免前缀 _$
    • 并且最好使用单个顶级密钥,其中 嵌套您的自定义条目

例如,如果您拥有域example.org,则可以按如下方式存储自定义random密钥,以反向域名表示法存储在顶级密钥中{{1} }替代_,如果适用,. (请参阅评论)(例如,-):

org_example

{ "name": "application-name" , "version": "0.0.1" , "private": true , "dependencies": { "express": "2.4.7" , "jade": ">= 0.0.1" } , "org_example": { "random": true } } 的{​​{1}}文件格式大多符合CommonJS package specification

至于选择自定义键CommonJS package specification州(强调我的):

  

以下字段为保留 未来扩展:package.jsonnpmbuilddefaultemailexternalfilesimportsmaintainerpathsplatformrequire,{{ 1}},summarytest

     

对包描述符规范的扩展应该努力避免将来的标准名称发生冲突,通过名称将它们的属性与没有与一般包管理相关的含义的无害名称隔开

     

以下字段为包注册表保留以供其自行决定使用:usingdownloads。   所有以uidid开头的属性也会保留,以供软件包注册管理机构自行决定使用。

答案 1 :(得分:19)

鉴于JSON的性质以及Nodejitsu documentation的这句话,我认为没有任何问题。

  

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

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

NPM还关注列出here的几个字段。因此,只要它是有效的JSON并且不会干扰Node.js或NPM,一切都应该是正确有效的。

Node对package.json文件的认知似乎延伸到 main 字段。 Ref.

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

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

     

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

为了避免可能的冲突,您应该在键前添加一些字符或单词。下划线是一种常见的变体。