버전과 패키지

package.json exports시각화

매니페스트와 진입점을 선택하면 첫 번째 일치 분기가 표시됩니다.

package.json exports

package.json 입력

매니페스트는 브라우저 안에서 처리됩니다. npm 조회나 업로드는 없습니다.

해석 결과

package.json을 입력하세요.

해석 옵션

공백이나 쉼표로 구분하세요. 브라우저와 번들러의 전체 동작은 재현하지 않습니다.

입력 또는 옵션이 바뀌었습니다. 다시 해석한 뒤 내보내세요.

import에서는 열리는데 require에서는 실패하는 패키지가 있습니다. package.json exports의 조건 순서와 패키지 진입점을 함께 보면 어느 파일을 골랐는지 알 수 있습니다.

이 이 도구 도구는 요청 하나를 따라가며 # 별칭은 imports에서 검사합니다. 파일 시스템을 읽지 않으므로 표시된 대상의 실제 존재는 별도 확인이 필요합니다.

package.json exports를 분기로 살펴보는 이유

먼저 선택되는 조건 표시

조건부 내보내기는 선택한 조건의 순서가 아닌 JSON 키 순서대로 검사됩니다. default가 앞에 있어 import를 가리는 경우까지 분기에서 볼 수 있습니다.

하나의 설정에서 나온 여러 경로 중 첫 일치 경로만 강조된 그림.

공개 경로와 내부 별칭 구분

package.json exports는 . 및 ./feature를 외부에 공개하지만 #config는 같은 패키지의 imports 별칭입니다. null은 파일 누락이 아니라 의도한 차단입니다.

공개 진입점과 패키지 내부 해시 별칭, 차단 경로를 분리한 그림.

한 요청을 따라가며 순서를 확인하세요

01

패키지 이름이나 # 별칭 입력

sample-kit/feature는 name을 통해 ./feature로 정규화됩니다. #config를 넣으면 패키지 내부 imports 매핑을 사용합니다.

02

조건 문맥 변경

기본은 Node.js import입니다. require 또는 추가 조건으로 결과를 비교하세요. 자동 해석은 350ms 기다리고, 끄면 버튼이나 Ctrl/Cmd + Enter로 실행합니다.

03

경로와 진단 확인

일치한 키, 조건 순서, 대상 문자열을 비교하세요. 문법 검사는 실제 파일을 확인하지 않습니다. 입력이 바뀌면 오래된 보고서를 복사할 수 없습니다.

진입점 선택 과정을 단계별로 표시

정확한 키와 * 패턴

루트, 정확한 서브패스, * 패턴을 시험합니다. 정확한 키가 우선이며 더 구체적인 패턴이 넓은 패턴보다 먼저 적용됩니다. null은 일부를 막습니다.

Node와 추가 조건

Node.js의 import 및 require를 비교합니다. browser, types, development를 추가할 수 있지만 이는 조건 집합 미리보기입니다.

로컬 경로 검사

exports 대상에는 ./가 필요하고 상위 폴더나 node_modules를 통과할 수 없습니다. imports의 외부 패키지 대상은 별도로 허용합니다.

이 결과로 확인할 수 있는 범위

파일 존재 여부는 알 수 없음
이 지도가 선택한 문자열만 보여 줍니다. 대상 파일이 존재하거나 게시된 패키지에 들어 있고 실행 가능한지는 확인하지 않습니다.
사용자 조건은 미리보기
browser나 types를 넣어도 Vite, webpack, TypeScript의 추가 확장자 및 타입 해석 규칙까지 시험하지 않습니다.
# 별칭은 내부 전용
imports의 # 경로는 같은 패키지 코드 안에서만 쓸 수 있습니다. 외부 패키지를 가리켜도 공개 진입점이 되지 않습니다.
네트워크와 빌드 검사 없음
npm에서 패키지를 가져오거나 폴더를 스캔하거나 스크립트를 실행하지 않습니다. Node 전체 버전의 호환성도 보증하지 않습니다.

package.json exports 자주 묻는 질문

exports에서 node 조건과 require 조건은 어느 것이 먼저 선택되나요?

객체에 먼저 적힌 활성 조건이 우선합니다. node가 require 앞에 있으면 두 조건이 모두 활성일 때 node의 대상이 선택됩니다.

조건부 진입점은 import와 require에서 어떻게 달라지나요?

호출 방식을 바꾸면 Node의 활성 조건이 달라집니다. 매핑 키 순서는 그대로이므로 결과 분기를 나란히 비교할 수 있습니다.

exports에 없는 경로는 왜 가져올 수 없나요?

exports가 생기면 공개된 서브패스만 외부에서 사용할 수 있습니다. 정확한 키나 * 패턴이 없으면 내보내지 않은 경로입니다.

서브패스 패턴은 어떻게 매칭되나요?

./features/* 같은 키가 요청의 뒷부분을 잡아 대상의 *에 넣습니다. 정확한 키와 더 구체적인 패턴이 먼저입니다.

types 조건은 언제 사용되나요?

TypeScript 같은 타입 도구가 이 조건을 사용할 수 있습니다. 여기서는 명시적으로 추가해 선택 경로를 미리 볼 뿐 타입 파일은 검사하지 않습니다.

브라우저 조건과 Node 조건을 같은 방식으로 해석해도 되나요?

아니요. browser는 Node 기본 조건이 아닙니다. 조건을 추가해 분기를 볼 수 있지만 번들러의 전체 동작과 동일하지 않습니다.

다른 매핑 문제가 있나요?

지금 package.json exports 시험하기

같은 진입점에서 import와 require를 비교하고 package.json exports 분기 보고서를 검토해 보세요.