[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
  }
}

npmpackage.json파일 형식은 대부분 CommonJS 패키지 사양을 따릅니다. .

에 관해서는 사용자 정의 키를 선택 하십시오 CommonJS 패키지 사양에 다음과 같이 명시되어 있습니다 (강조 표시).

다음 필드가 있습니다 예약 에 대한 미래의 확장 : build, default, email, 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 파일 인식 범위입니다.

충돌 가능성을 방지하려면 일부 문자 또는 단어를 키 앞에 붙여야합니다. 밑줄은 일반적인 변형입니다.


답변