Node.js 向package.json添加自定义元数据或配置,是否有效?
我已经看到(不记得在哪里)一个package.json文件,其中包含以下划线开头的自定义键:Node.js 向package.json添加自定义元数据或配置,是否有效?,node.js,Node.js,我已经看到(不记得在哪里)一个package.json文件,其中包含以下划线开头的自定义键: { "name": "application-name" , "version": "0.0.1" , "private": true , "dependencies": { "express": "2.4.7" , "jade": ">= 0.0.1" } , "_random": true } 你可以这样做吗?它仍然有效吗?如果允许,是否有关于
{
"name": "application-name"
, "version": "0.0.1"
, "private": true
, "dependencies": {
"express": "2.4.7"
, "jade": ">= 0.0.1"
}
, "_random": true
}
你可以这样做吗?它仍然有效吗?如果允许,是否有关于规则的文件
谢谢 考虑到JSON的本质和来自的这条语句,我看不出有任何错误 NPM本身只知道package.json中的两个字段:
{
“姓名”:“赤骨”,
“版本”:“0.0.0”,
}
NPM还关心列出的几个字段。因此,只要它是有效的JSON,并且不干扰Node.js或NPM,一切都应该正常有效
节点对package.json文件的感知似乎扩展到了主字段
如果这是在./some库的文件夹中,那么
require(“./some library”)将尝试加载
./some library/lib/some-library.js
这是节点对package.json文件的感知程度
为了避免可能的冲突,您应该在键的前面加上一些字符或单词。下划线是常见的变体。tl;博士:
- 是的,允许您向
添加自定义条目package.json
- 选择密钥名称:
- 尚未定义(详情如下)
- 未保留以备将来使用(详情如下)
- 避免使用前缀
和\uu
$
- 最好使用一个顶级键,在其中嵌套自定义条目
example.org
,您可以将自定义随机
键存储在反向域名符号中的顶级键中,用
替换
,如果适用,-
(参见注释)(例如org\u example
):
{
“名称”:“应用程序名称”
,“版本”:“0.0.1”
,“私人”:正确
“依赖项”:{
“快车”:“2.4.7”
,“翡翠”:“>=0.0.1”
}
,“组织示例”:{
“随机”:正确
}
}
要读取此类自定义属性,请使用以下技术:
require("./package.json").org_example.random // -> true
npm
的package.json
文件格式主要符合以下要求:
- 当前使用的
键:npm
- 规范中定义的键
构建
,默认
,电子邮件
,外部
,文件
,导入
,维护者
,路径
,平台
,要求
,摘要
,测试
,使用
,下载
,uid
包描述符规范的扩展应通过将其属性与无害的名称隔开,以避免将来的标准名称发生冲突,而无害的名称与通用包管理无关
以下字段是为包注册中心保留的,由其自行决定使用:id
,type
。
所有以\uuu
或$
开头的属性也保留给包注册中心使用
它关心更多的领域:p得益于2年多的后见之明:npm关心更多的领域(节点本身也关心其中的一个子集)-请参阅。不要对自定义属性使用
\
(或$
):“所有以u或$开头的属性也保留给包注册中心,由其自行决定使用。”-请参阅以了解更多信息。我真的建议您阅读。感谢您的深入了解。您有什么理由建议使用“org\u example”
而不是“org.example”
——或类似的XML名称空间http://example.org“
?@tomekwi:您可以使用org.example
或http://example.org
,但是,考虑到JSON键名称也是JavaScript对象属性名称,以后访问这些属性会很尴尬,因为您必须使用类似于pkg['org.example']
的东西,因为更自然的pkg.
语法不适用于它们。@tomekwi:至于@example
:我想如果您使用您/您的组织的npm用户名,这会起作用。请注意,我们在这里讨论的是一种自选的约定,所以我个人会选择反向域表示法,因为它是(a)在其他上下文中的常见做法,(b)比npm用户名“更独特”。@tomekwi:是的,使用\uu
的关键在于,例如。,org\u示例
被识别为单个单词,形成一个常规的JS属性名。您指的是-
(连字符)字符。在域名中,这确实是行不通的。但是,您也可以将-
实例替换为-
实例;虽然这使得转换可能是不可逆的,但我仍然觉得它比http://domain-name.org
,特别是考虑到在域名中使用-
的情况越来越少。然而,这最终是一个偏好的问题。我认为NPM团队应该为此选择一个保留的属性。比如“配置”,我不知道
require("./package.json").org_example.random // -> true