Package.json 생성기

package.json
다음

npm init을 실행하고 열한 개의 프롬프트에 답하는 대신, 폼을 채우면 깔끔하고 올바르게 구조화된 package.json을 돌려받습니다. 이 생성기는 필수 필드(name, version), 자주 쓰는 필드(scripts, dependencies, devDependencies, engines), 그리고 패키지를 찾고 게시할 수 있게 만드는 부가 요소(repository, bugs, keywords, license)를 다룹니다.

package.json 생성 방법

  1. 1

    이름과 버전 입력

    이름은 npm 규칙을 따릅니다: 소문자, URL 안전, 214자 미만. 버전은 semver입니다(예: 0.1.0).

  2. 2

    모듈 유형 선택

    CommonJS(기본) 또는 "type": "module"을 통한 ESM. Node.js 14+ 프로젝트에 중요합니다.

  3. 3

    스크립트 추가

    start, build, test, lint: `npm run <name>`으로 실행되는 명령들.

  4. 4

    의존성 나열

    런타임 패키지는 dependencies에, 도구는 devDependencies에.

  5. 5

    메타데이터 설정

    설명, 작성자, 라이선스, 저장소 URL, 키워드.

  6. 6

    출력 복사

    프로젝트 루트의 새 package.json에 붙여 넣으세요.

가장 중요한 필드

필드 필수? 비고
name 예 소문자, 1~214자, URL 안전
version 예 Semver (major.minor.patch)
type 아니요 ESM이면 “module”, CommonJS면 생략
main 권장 CommonJS 진입점(index.js)
exports 권장 CJS/ESM 이중을 위한 현대적 exports 맵
scripts 강력 권장 npm run <name> 명령
dependencies 필요시 런타임 패키지
devDependencies 필요시 빌드 도구, 테스트 러너, 린터
engines 있으면 좋음 필요한 Node 버전 범위
license 게시 시 예 MIT, Apache-2.0 같은 SPDX 식별자

Semver 치트시트

  • 1.0.0, major.minor.patch
  • ^1.0.0, 1.x.x와 호환(>=1.0.0, <2.0.0)
  • ~1.0.0, 패치 업데이트만(>=1.0.0, <1.1.0)
  • >=1.0.0 <2.0.0, 명시적 범위
  • 1.0.0-beta.1, 사전 릴리스
  • latest, 버전이 아니라 npm 태그

npm install package 실행 시 기본값은 ^로, 호환되는 업그레이드를 허용합니다.

갖춰 둘 만한 표준 스크립트

{
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js",
    "build": "tsc",
    "test": "vitest",
    "lint": "eslint .",
    "format": "prettier --write ."
  }
}

이름 짓기 함정

  • 대문자 금지. MyPackage는 npm install에 실패합니다.
  • 공백 금지. 하이픈을 쓰세요: my-package.
  • 스코프 이름은 GitHub나 npm 조직의 경우 @org/로 시작합니다: @acme/utils.
  • 예약어. node_modules, favicon.ico, core, express는 패키지 이름으로 쓸 수 없습니다.

라이선스 옵션

인정된 SPDX 식별자를 고르세요:

  • MIT, 가장 관대한 흔한 선택.
  • Apache-2.0, 특허 부여가 있는 관대한 라이선스.
  • ISC, 매우 짧은 MIT 유사 라이선스, npm 기본값.
  • GPL-3.0-or-later, 카피레프트.
  • UNLICENSED, 비공개 패키지, 배포용 아님.

잘못되거나 모호한 라이선스 문자열은 npm publish 시 경고를 발생시킵니다.

자주 묻는 질문

dependencies는 당신의 패키지를 사용하는 프로젝트에서 누군가 npm install을 실행할 때 설치됩니다. devDependencies는 패키지 자체의 개발 환경에서만 설치됩니다. 런타임 패키지는 dependencies에, 테스트/빌드 도구는 devDependencies에 넣으세요.

애플리케이션이라면 네. 잠금 파일은 정확한 버전을 고정해 머신과 CI 전반에서 재현 가능한 설치를 보장합니다. npm에 게시하는 라이브러리 패키지라면 잠금 파일은 선택 사항입니다, 소비자가 자기 잠금 파일을 갖습니다.

패키지를 기본적으로 ESM(import/export 구문)으로 만들려는 경우에만 필요합니다. 없으면 .js 파일은 CommonJS로 취급됩니다. “type”과 관계없이 ESM 파일에는 .mjs, CommonJS 파일에는 .cjs도 쓸 수 있습니다.

코드가 테스트된 Node 버전입니다. 오늘날 전형적인 선택은 "engines": {"node": ">=18"}입니다. 오류가 아니라 경고지만, 도구가 이를 존중하고 사용자가 올바르게 고정합니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다