[node.js] 사용자 지정 메타 데이터 또는 구성을 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. - 키 이름 선택 :
- 아직 정의되지 않음 (아래 세부 정보)
- 향후 사용을 위해 예약되지 않음 (자세한 내용은 아래 참조)
- 피하기 접두사
_와$ - 맞춤 항목 을 중첩 할 단일 최상위 키 를 사용하는 것이 좋습니다 .
당신이 자신의 도메인 경우 예는 example.org, 사용자 정의 저장할 수 random, 다음과 같이 키를 역 도메인 이름 표기법 최상위 키 내부로 _대체 ., 해당되는 경우, 그리고 -(주석 참조) (예 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://docs.npmjs.com/files/package.json- 사양에 정의 된 키 : http://wiki.commonjs.org/wiki/Packages/1.1
에 관해서는 사용자 정의 키를 선택 하십시오 CommonJS 패키지 사양에 다음과 같이 명시되어 있습니다 (강조 표시).
다음 필드가 있습니다 예약 에 대한 미래의 확장 :
build,default,external,files,imports,maintainer,paths,platform,require,summary,test,using,downloads,uid.패키지 설명자 사양에 대한 확장은 일반 패키지 관리와 관련된 의미가없는 무해한 이름으로 해당 속성의 이름 간격을 지정하여 향후 표준 이름에 대한 충돌을 방지하기 위해 노력해야합니다 .
다음 필드는 패키지 레지스트리 가 재량에 따라 사용할 수 있도록 예약 되어 있습니다.
id,type. 또는 로 시작하는_$모든 속성 은 패키지 레지스트리가 재량에 따라 사용할 수 있도록 예약 되어 있습니다.
답변
JSON의 특성과 Nodejitsu 문서 의이 진술을 감안할 때 나는 그것에 대해 잘못된 것이 없다고 생각합니다.
NPM 자체는 package.json 의 두 필드 만 인식 합니다.
{ "name" : "barebones", "version" : "0.0.0", }
NPM은 여기에 나열된 몇 가지 필드도 고려 합니다 . 유효한 JSON이고 Node.js 또는 NPM을 방해하지 않는 한 모든 것이 정상적이고 유효해야합니다.
package.json 파일에 대한 Node의 인식은 메인 필드로 확장되는 것 같습니다 . Ref.
{ "name" : "some-library", "main" : "./lib/some-library.js" }이것이 ./some-library의 폴더에 있으면 require ( ‘./ some-library’)가 ./some-library/lib/some-library.js를로드하려고 시도합니다.
이것은 node의 package.json 파일 인식 범위입니다.
충돌 가능성을 방지하려면 일부 문자 또는 단어를 키 앞에 붙여야합니다. 밑줄은 일반적인 변형입니다.
