Skip to content

fix(webpack): keep packed CommonJS loaders on the installed WASM - #789

Merged
owjs3901 merged 3 commits into
mainfrom
fix/webpack-extends-theme-vars
Oct 19, 2026
Merged

owjs3901 merged 3 commits into
mainfrom
fix/webpack-extends-theme-vars

Conversation

@owjs3901

@owjs3901 owjs3901 commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Refs #686, Refs #683

다른 기능 PR에 쌓지 않는 main 기반 수정입니다. 사용자 병합이 완료된 #788/#768의 main 347baaf9를 실제 두 부모 merge로 통합했습니다.

요약

  • packed CJS index가 빌드 작업 디렉터리의 소스 URL을 포함하여 작업 디렉터리 loader와 테마가 없는 두 번째 WASM을 선택하던 원인을 수정합니다.
  • Webpack CJS index 빌드에만 --define import.meta.url=module.filename을 적용하여 실행 중인 설치 패키지 기준으로 loader를 찾습니다. 제품 TS/Rust, ESM/loader 빌드, 테마/reset, exports, 의존성, CSS 생성과 짧은 클래스 카운터는 변경하지 않습니다.
  • 원래 D fixture를 보존한 production 회귀, direct ESM 두 모드, public require/import의 물리적 loader/WASM 동일성 검증과 독립 Linux CI 작업을 추가합니다. 관리 패키지 changepack은 webpack-plugin만 Patch입니다.

동작

수정 전 동일 빌드 추적에서 소비자 WASM은 상속 테마를 등록하여 올바른 173바이트 base CSS를 생성했습니다. 그러나 packed CJS의 절대 소스 URL이 작업 디렉터리의 JS/CSS loader를 선택했고, 그 별도 WASM에는 테마가 없어 117바이트 CSS로 덮어썼습니다. loader 반환, CSS module, 실제 HTML-linked asset까지 누락이 이어졌으며 마지막 done의 디스크 복원은 이미 발행된 CSS를 복구하지 못했습니다.

CJS의 createRequire 기준을 module.filename으로 유지하여 플러그인과 두 loader가 동일한 설치 패키지/WASM을 사용하게 합니다. 최신 Bun이 소스 경로 변수를 만드는 __filename 치환은 실제 회귀를 해결하지 못해 사용하지 않았습니다. 임의 URL shim이나 테마 fallback을 추가하지 않습니다.

실제 제공 CSS의 선언과 계산 결과는 --primary:#17395B, --gutter:11px, 테마 rgb(23, 57, 91)/11px이며 별도 imported control은 rgb(19, 87, 155)/9px입니다.

새로 생기는 오류

제품 빌드 오류나 클라이언트 스타일링 런타임은 추가하지 않습니다. 회귀 CI는 실제 상속 선언/계산값 또는 설치 loader/WASM 동일성이 어긋나면 실패합니다. set -euo pipefail과 증거 파일 필수 업로드로 테스트 실패를 숨기지 않습니다.

남는 한계

초기 production 상속 테마 누락을 standalone CJS, Next --webpack, standalone direct ESM의 두 CSS 모드에서 검증합니다. 이 변경은 해당 CJS origin의 두 loader 해석에 한정하며 다른 URL 처리로 일반화하지 않습니다.

검증

  • 수정 전 원래 네 production 재현은 빌드/imported control 성공 후 테마 선언/계산값 누락으로 RED였습니다. setup 오류나 skip은 없었습니다.
  • 최신 main 통합 후 여섯 실제 production build와 두 public-format 동일성 테스트 8/8 통과, 실패/skip 0입니다.
  • 실제 HTTP의 HTML-linked CSS, root/element 변수와 계산값을 Chromium156.0.8078.4/Firefox157/WebKit27.2에서 18/18 통과, page error 0입니다. 소유 browser/server 종료와 watchdog drain 0을 확인했습니다.
  • Node26.12.0/Bun1.4.3/Playwright1.64.1과 실행 시 최신 Next/React를 사용했습니다. shared Rust stable1.99.1 기본 스택/jobs2의 fmt, 엄격 workspace/all-target Clippy, native 5,210/0, 명시적 binding WASM/root build, Bun 6,341/0 및 함수/라인100%, lint 0오류/기존20경고 통과입니다.
  • 정상 hook을 건너뛰지 않고 최초 fix와 실제 main merge를 각각 커밋했습니다. 최종 hook도 native5,210/0, Bun6,341/0 및100% 통과했습니다. Windows Rust97.95%(19,626/20,036)는 Linux100%의 대체 증거가 아닙니다.
  • 이전 source-only Oracle APPROVE/HIGH를 유지하며 이를 release 승인으로 표현하지 않습니다. TypeScript/Biome LSP는 설치되지 않아 clean-LSP라고 주장하지 않습니다.
  • 최종 head e462e771685b70d60603db75c94c7c3414c3c709의 Linux CI 39194897926 SUCCESS: publish, benchmark, webpack-extends-theme, landing-next-e2e, react-18, vinext-rsc-css-e2e 모두 성공했습니다. 실제 Linux Rust 13,964/13,964=100.00%, Bun 6,341/0 및 함수/라인100%, Bun preload race 9/0입니다. release/deploy는 PR에서 의도대로 skip되었습니다.
  • 최초 run39193620743은 job-level env의 runner.temp 표현식 거부로 job 실행 전에 실패했습니다. 경로를 runner step에서 $RUNNER_TEMP/$GITHUB_ENV로 구성하도록 수정하고 실제 Bash(공백 경로 포함), 정상 hook, 새로운 matching-head CI로 해결했습니다. 최신 CJS SHA-256 0eb45e14caaafe85795ddb2c879b5c33d40a2973ed2bf0cb4ab2d7f069052eaa가 빌드/tarball/여덟 설치 사본에서 동일합니다.

owjs3901 and others added 3 commits October 19, 2026 11:28
Refs #686

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #686

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #683

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
@codecov

codecov Bot commented Oct 19, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@owjs3901
owjs3901 merged commit aea33cb into main Oct 19, 2026
9 checks passed
@owjs3901
owjs3901 deleted the fix/webpack-extends-theme-vars branch October 19, 2026 05:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant