package.json에서 가장 중요한 항목은 name”과 “version” 이다. 필수로 입력되어야하고, 누락된다면 패키지를 설치할 수 없다.
설명을 문자열로 기술한다. npm search로 검색된 리스트에 표시되기 때문에 패키지를 찾아내고 이해하는데 도움이 된다.
패키지를 사용하기 위해 어떻게 권한을 얻는지, 또 어떤 금기 사항이 있는지 알게하기 위해 라이센스를 명시해야한다.
“author”는 한 사람만을 지정하고, “contributors”는 여러 사람을 배열로 지정한다.
“files”항목은 프로젝트에 포홤된 파일의 배열이다. 폴더 이름을 지정하면 폴더 안의 파일도 포함된다.
또한 “.npmignore”라는 파일을 패키지의 루트 혹은 하위 폴더에 둘 수 있는데, 이 파일에 기록된 파일들은 “files”의 배열로 지정되어 있더라도 제외 대상이다.
“main”항목은 프로그램의 시작점이 되는 모듈의 ID이다.
모듈 ID는 패키지 루트에 상대적인 경로를 지정해야 한다.
많은 패키지는 PATH에 설치되는 하나 이상의 실행 파일을 가지고 있다.
실행할 수 있는 패키지를 만들기 위해선 package.json 파일에 bin 항목을 제공해야 한다. 패키지 설치 시에, npm은 bin 항목에 기술된 파일의 심볼릭 링크를 global install인 경우 prefix/bin 에, local install인 경우 ./node_modules/.bin/에 생성하게 된다.
의존성을 규정하는 것은 패키지의 이름과 해당 패키지의 버전 범위를 지정한 객체를 통해 이루어진다. 버전 범위는 하나 혹은 여러개의 공백으로 분리된 설명자 문자열이다. 의존성은 tarball 이나 git URL로도 지정될 수 있다.
테스트 관련 모듈이나 트랜스 파일러 관련 모듈을 dependencies 개체에 추가하면 안된다. 운영이 아닌 개발 단계에서만 필요한 의존성 모듈들은 devDependencies에 설치해야 한다.
패키지 모듈을 이용하는 사람이라면, 패키지 테스트 및 문서 작성에 사용되는 외부 프레임 워크는 다운로드 되지 않아도 된다.
이러한 경우 devDependencies 객체에 디펜던시를 추가하는 것이 좋은 방법이다.