Skip to content

프로젝트 구조

WXT는 엄격한 프로젝트 구조를 따릅니다. 기본적으로 다음과 같은 평면 폴더 구조를 가집니다:

html
📂 {rootDir}/
   📁 .output/
   📁 .wxt/
   📁 assets/
   📁 components/
   📁 composables/
   📁 entrypoints/
   📁 hooks/
   📁 modules/
   📁 public/
   📁 utils/
   📄 .env
   📄 .env.publish
   📄 app.config.ts
   📄 package.json
   📄 tsconfig.json
   📄 web-ext.config.ts
   📄 wxt.config.ts

각 파일과 디렉토리에 대한 간단한 설명입니다:

  • .output/: 모든 빌드 결과물이 이곳에 저장됩니다.
  • .wxt/: WXT에 의해 생성되며, TS 설정을 포함합니다.
  • assets/: WXT에 의해 처리될 CSS, 이미지 및 기타 에셋을 포함합니다.
  • components/: 기본적으로 자동으로 임포트되며, UI 컴포넌트를 포함합니다.
  • composables/: 기본적으로 자동으로 임포트되며, Vue용 합성 함수를 포함합니다.
  • entrypoints/: 확장 프로그램으로 번들링될 모든 엔트리포인트를 포함합니다.
  • hooks/: 기본적으로 자동으로 임포트되며, React와 Solid용 훅을 포함합니다.
  • public/: WXT에 의해 처리되지 않고 그대로 출력 폴더에 복사될 파일을 포함합니다.
  • utils/: 기본적으로 자동으로 임포트되며, 프로젝트 전반에서 사용되는 일반 유틸리티를 포함합니다.
  • .env: 환경 변수를 포함합니다.
  • .env.publish: 퍼블리싱을 위한 환경 변수를 포함합니다.
  • app.config.ts: 런타임 설정을 포함합니다.
  • package.json: 패키지 매니저에서 사용하는 표준 파일입니다.
  • tsconfig.json: TypeScript의 동작 방식을 설정합니다.
  • web-ext.config.ts: 브라우저 시작 설정을 구성합니다.
  • wxt.config.ts: WXT 프로젝트의 주요 설정 파일입니다.

src/ 디렉토리 추가하기

많은 개발자들은 소스 코드와 설정 파일을 분리하기 위해 src/ 디렉토리를 사용합니다. wxt.config.ts 파일에서 이를 활성화할 수 있습니다:

ts
// wxt.config.ts
export default defineConfig({
  srcDir: 'src',
});

이 기능을 활성화한 후, 프로젝트 구조는 다음과 같이 보일 것입니다:

html
📂 {rootDir}/
   📁 .output/
   📁 .wxt/
   📂 src/
      📁 assets/
      📁 components/
      📁 composables/
      📁 entrypoints/
      📁 hooks/
      📁 modules/
      📁 public/
      📁 utils/
      📄 app.config.ts
   📄 .env
   📄 .env.publish
   📄 package.json
   📄 tsconfig.json
   📄 web-ext.config.ts
   📄 wxt.config.ts

다른 디렉토리 커스텀하기

다음 디렉토리를 설정할 수 있습니다:

ts
// wxt.config.ts
export default defineConfig({
  // 프로젝트 루트 기준
  srcDir: "src",             // 기본값: "."
  outDir: "dist",            // 기본값: ".output"

  // srcDir 기준
  entrypointsDir: "entries", // 기본값: "entrypoints"
  modulesDir: "wxt-modules", // 기본값: "modules"
  publicDir: "static",       // 기본값: "public"
})

절대 경로나 상대 경로를 사용할 수 있습니다.