2024년 6월 1일 작업일지

2 min read

터보팩 ES Analysis 프로파일링

팀원이 요청한 것인데, next.js 앱에 관한 것이었다.

터보팩RcStr 최적화 PR

노가다라 주말이지만 조금 작업했다. 맥북이 와서 도중에 멈췄다.

근데 맥북 마이그레이션 끝내고 rust-toolchain 관련 커밋들 머지하고 M3 맥북으로 작업하려고 보니까 servo/pathfinder 가 새로운 rust-toolchain에서 빌드가 안 됐다. 그래서 일단 팀 채널에 얘기하고 미뤄뒀다.

SWC Minifier 버그 수정

황당하게도 resolver 패스의 문제였다.

"use strict";
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([[854], {

/***/ 3712:
/***/ (function (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {

/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   $Q: function () { return /* binding */ C; },
/* harmony export */   Ev: function () { return /* binding */ B; },
/* harmony export */   e_: function () { return /* binding */ I; },
/* harmony export */   jU: function () { return /* binding */ e; }
    /* harmony export */
});
            /* unused harmony exports ACTION_ELEMENTS, SbbScrollHandler, breakpoints, findInput, findReferencedElement, hostContext, isAndroid, isBlink, isBreakpoint, isChromium, isEdge, isFirefox, isIOS, isNextjs, isSafari, isTrident, isWebkit, pageScrollDisabled */
            let a;
            try {
                a = typeof Intl < "u" && Intl.v8BreakIterator;
            } catch (e) {
                a = !1;
            }
            const e = () => typeof document == "object" && !!document, l = () => e() && /(edge)/i.test(navigator.userAgent), c = () => e() && /(msie|trident)/i.test(navigator.userAgent), y = () => e() && !!(window.chrome || a) && typeof CSS < "u" && !l() && !c(), g = () => e() && /AppleWebKit/i.test(navigator.userAgent) && !y() && !l() && !c(), w = () => e() && /iPad|iPhone|iPod/.test(navigator.userAgent) && !("MSStream" in window), v = () => e() && /(firefox|minefield)/i.test(navigator.userAgent), A = () => e() && /android/i.test(navigator.userAgent) && !c(), E = () => e() && /safari/i.test(navigator.userAgent) && g(), p = () => !!globalThis.next, S = () => {
                var t, n;
                return (n = (t = navigator.userAgentData) == null ? void 0 : t.brands) == null ? void 0 : n.some((o) => o.brand == "Chromium");
            }, x = (/* unused pure expression or super */ null && ([
                "zero",
                "micro",
                "small",
                "medium",
                "wide",
                "large",
                "ultra"
            ]));

        }),

}]);

jU 함수의 econst로 선언된 e인지 catch로 선언된 e인지 구분이 잘못된 게 문제의 원인이었다. 고치는 것은 어렵지 않았다.