将自定义元数据或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 } }
npm
的package.json
文件格式大多符合CommonJS包规范 :
-
npm
目前使用的密钥 : https :npm
- 在规范中定义的键 : http : //wiki.commonjs.org/wiki/Packages/1.1
至于select自定义键 : CommonJS包规范说明(强调我的):
以下字段保留给未来的扩展:
build
,default
,external
,files
,imports
,maintainer
,paths
,platform
,require
,summary
,test
,using
,downloads
,uid
。对包描述符规范的扩展应该努力通过名称避免未来标准名称的冲突 – 将它们的属性与无关的名称间隔开,这些名称与通用包pipe理无关 。
以下字段保留给注册pipe理机构以自行决定使用:
id
,type
。 所有以_
或$
开头的属性也保留给包裹注册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文件的认识程度。
为了避免可能的冲突,你应该在你的密钥前加上一些字符或单词。 下划线是常见的变体。