Versioning & Packages

package.json 편집기

매니페스트 하나를 편집하고 오류 위치와 의존성 그룹을 확인하세요. 원본 교체는 미리 본 뒤 결정합니다.

package.json 편집기

매니페스트 입력

포맷 결과

현재 브라우저에서 처리합니다. 레지스트리 조회와 스크립트 실행은 하지 않습니다.

필드 설명과 제한

name은 패키지 이름입니다. 신규 패키지 규칙을 적용하며 로컬 프로젝트는 생략할 수 있습니다.

내장 매니페스트 규칙, 이름과 루트 버전을 검사합니다. 다른 도구의 설정은 보존하지만 전용 검증은 하지 않습니다.

객체 하나, UTF-16 코드 단위 100,000개, 깊이 100까지. 안전하지 않은 정수와 오버플로는 거부합니다. 의존성 값은 문자열 여부만 검사합니다.

의존성 그룹

dependencies: 0 · devDependencies: 0 · peerDependencies: 0 · optionalDependencies: 0

표시할 의존성이 없습니다.

입력 또는 설정이 바뀌었습니다. 내보내기 전에 다시 검사하세요.

병합한 파일이 JSON 문법에는 맞아도 패키지 이름이나 의존성 값의 형식은 틀릴 수 있습니다. package.json 편집기는 이 검사를 구분해서 보여 줍니다.

기본 예제는 비공개 프로젝트입니다. 같은 패키지가 여러 그룹에 있어도 삭제하거나 이동하지 않으므로 프로젝트의 의도를 직접 확인할 수 있습니다.

package.json 편집기를 사용하는 이유

조건부 내보내기 순서 보존

package.json 편집기는 네 의존성 객체 안에서만 이름을 정렬합니다. scripts, exports 조건과 최상위 필드 순서는 그대로 두어 보기 좋은 변경 내역을 만들다가 조건 우선순위를 바꾸는 일을 막습니다.

네 의존성 그룹 안의 항목만 정렬되고 옆의 내보내기 분기는 유지되는 그림.

적용 전에 원본과 비교

결과는 별도의 미리보기입니다. 적용, 예제 로드, 지우기 전에 교체할 내용과 문자 수를 확인합니다. 한 번 되돌리면 입력과 이전 결과, 유효 상태가 함께 복원됩니다.

원본 매니페스트와 미리보기를 적용 및 되돌리기 화살표로 연결한 그림.

자동 검사와 원본 교체를 구분하세요

01

필요할 때 자동 검사 끄기

마지막 편집 후 350ms 뒤 검사합니다. 자동을 끄면 실행 버튼이 나타나며 Ctrl 또는 Cmd와 Enter로 실행할 수 있습니다. 입력이나 들여쓰기를 바꾸면 이전 결과 내보내기가 즉시 잠깁니다.

02

변경된 그룹 수 확인

의존성 정렬은 결과에만 반영됩니다. 상태에는 실제로 순서가 바뀐 그룹 수가 표시됩니다. 원래 순서를 선택하면 원본을 다시 포맷하며 버전을 갱신하거나 다른 그룹으로 옮기지 않습니다.

03

검토한 결과만 적용

유효한 결과는 입력에 적용하지 않아도 복사하거나 저장할 수 있습니다. 적용은 교체 미리보기를 거치며, 되돌리기는 이전 입력과 출력을 함께 복원합니다.

문법, 이름, 그룹을 따로 확인

원본 기준 오류 위치

package.json 유효성 검사는 주석, 후행 쉼표, 중복 키와 객체가 아닌 루트를 거부합니다. 원본의 행, 열, JSON Pointer를 표시하므로 포맷 후 위치를 다시 찾을 필요가 없습니다.

패키지 이름과 버전 규칙

npm 패키지 이름은 루트에서 신규 패키지 규칙, 의존성 키에서 기존 이름 규칙을 사용합니다. version이 있으면 node-semver로 검사하며, 로컬 프로젝트에서 name과 version 생략은 허용합니다.

네 그룹의 지정 문자열 보기

이름과 버전 지정 문자열을 그룹별로 표시합니다. 긴 목록은 100행씩 추가하며 필드 설명에서 실행, 개발, peer, optional의 차이를 확인합니다. 편집은 JSON 입력에서 수행합니다.

들여쓰기와 저장

JSON 포맷터는 공백 두 칸, 네 칸, 탭을 지원합니다. 사용자 정의 필드와 숫자 표기를 유지하고 결과를 package.json 파일로 다운로드합니다. 정렬은 의존성 객체에만 적용됩니다.

검사 결과의 적용 범위

내장 스키마만 사용
SchemaStore에서 파생한 내장 스키마로 구조를 검사하고 private은 불리언으로 제한합니다. ESLint, Prettier 등 별도 도구 설정은 보존하지만 전용 스키마로 검사하지 않습니다. 입력의 $schema를 가져오지 않습니다.
설치 가능 여부는 검사하지 않음
범위, 태그, Git URL, 로컬 경로, 별칭, workspace 지정은 문자열로 보존합니다. 버전의 존재, 최신 여부, 취약점 또는 실제 설치 결과는 확인하지 않습니다.
스크립트는 데이터
명령 실행, 의존성 설치, 패키지 게시, 잠금 파일 변경, 다른 워크스페이스 파일 읽기를 하지 않습니다. 통과 결과가 배포 준비를 보증하지는 않습니다.
정렬은 그룹 내부에서만
그룹 간 이동과 중복 패키지 삭제는 하지 않습니다. exports, imports, 배열과 scripts 순서를 유지하며 문자열 이스케이프 표기는 포맷 과정에서 달라질 수 있습니다.
입력 크기와 정밀도
UTF-16 코드 단위 100,000개, 깊이 100 이내의 JSON 객체 하나를 받습니다. 안전 범위를 벗어난 정수와 오버플로는 거부합니다. 진단은 50개까지 표시하고 실패하거나 오래된 결과는 내보낼 수 없습니다.

package.json 편집기 질문

package.json에 주석을 추가할 수 있나요?

표준 JSON에는 줄 주석과 블록 주석을 넣을 수 없습니다. 이 도구는 주석을 자동 삭제하지 않고 오류를 표시합니다. 설명용 사용자 정의 필드는 일반 데이터이므로 다른 도구에서도 허용되는지 확인하세요.

package.json의 dependencies와 devDependencies의 차이는 무엇인가요?

dependencies는 실행에 필요한 패키지, devDependencies는 개발과 테스트에 필요한 패키지입니다. peerDependencies는 사용 환경의 호환 요구를 나타냅니다. optionalDependencies는 설치 실패를 허용합니다. 그룹 선택은 자동으로 바꾸지 않습니다.

패키지를 설치하지 않고 package.json의 의존성을 알파벳순으로 정렬할 수 있나요?

네. 네 의존성 객체의 이름을 브라우저에서 정렬하므로 추가 패키지를 설치할 필요가 없습니다. 변경된 그룹 수와 미리보기를 확인해 저장하세요. 스크립트와 조건부 내보내기 순서는 유지합니다.

package.json의 name이 패턴과 일치하지 않는다는 오류는 왜 발생하나요?

신규 이름은 소문자, URL에 적합한 문자와 전체 214자 이하 등의 규칙을 따라야 합니다. @team/widget 형식도 지원합니다. 문법에 맞는 이름이라도 등록 가능 여부나 소유권을 확인한 것은 아닙니다.

package.json 버전에서 ^와 ~는 무슨 뜻인가요?

보통 메이저 버전이 0이 아닐 때 ~1.2.3은 패치 갱신을, ^1.2.3은 호환되는 마이너 갱신도 허용합니다. 0 버전과 프리릴리스에는 추가 규칙이 있습니다. 여기서는 범위를 해석해 설치 버전을 결정하지 않습니다.

최소한의 package.json에는 어떤 필드가 필요한가요?

게시하지 않을 프로젝트는 npm에서 name과 version을 생략할 수 있습니다. 따라서 빈 객체도 로컬 구조 검사를 통과합니다. 실제 게시에는 추가 정보와 환경 검증이 필요합니다.

필요한 검사가 빠졌나요?

다음 변경 사항 검토

package.json 편집기에서 작은 예제로 시작하고 의존성 그룹과 결과를 비교한 뒤 입력에 적용하세요.