|
| 1 | +--- |
| 2 | +title: "2025-04-09: express 5.1(정식 출시), Safari 18.4, ESLint bulk suppressions" |
| 3 | +author: "azu" |
| 4 | +translator: rewrite0w0 |
| 5 | +layout: post |
| 6 | +date: 2025-04-09T03:51:38.606Z |
| 7 | +category: JSer |
| 8 | +tags: |
| 9 | +- safari |
| 10 | +- css |
| 11 | +- Tools |
| 12 | +- nodejs |
| 13 | +- express |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +JSer.info #731 - Express 5.1.0가 출시되었습니다. |
| 18 | + |
| 19 | +- [[email protected]: Now the Default on npm with LTS Timeline ](https://expressjs.com/2025/03/31/v5-1-latest-release.html) |
| 20 | + |
| 21 | +이 버전은 Express 5.x 시리즈 정식 출시입니다. |
| 22 | +npm에서 `express`는 기본 버전도 5.x으로 변경됩니다. 문서가 업데이트 되었고, 4.x부터 5.x으로 이행 지원하기 위한 codemod 마이그레이션도 제공됩니다. |
| 23 | + |
| 24 | +동시에 LTS(Long Term Support)정책도 발표, Express 4.x는 2026년 10월 1일에 지원 종료할 예정입니다. |
| 25 | + |
| 26 | +--- |
| 27 | + |
| 28 | +Safari 18.4가 출시되었습니다. |
| 29 | + |
| 30 | +- [WebKit Features in Safari 18.4 | WebKit](https://webkit.org/blog/16574/webkit-features-in-safari-18-4/) |
| 31 | + |
| 32 | +큰 기능으로 Declarative Web Push 지원이 추가되었습니다. 이는 Service Worker를 이용하지 않고 푸쉬 알람 관리하는 새로운 구조입니다. |
| 33 | + |
| 34 | +- [Meet Declarative Web Push | WebKit](https://webkit.org/blog/16535/meet-declarative-web-push/) |
| 35 | + |
| 36 | + |
| 37 | +CSS 관련으로는 `shape()` 함수, `writing-mode` 옆으로 쓰기 모드, `text-autospace` 지원도 추가되었습니다. Web API에는 Image Capture API 지원, iOS/iPad OS에서 Screen Wake Lock API 지원도 포함되었습니다. |
| 38 | +또한, Cookie Store API 지원이 포함되었습니다. JavaScript 관련으로는 ES2025 Iterator Helpers 지원, Stage 3 `Error.isError` 지원도 추가되었습니다. |
| 39 | + |
| 40 | +--- |
| 41 | + |
| 42 | +다음 글에서는, ESLint의 bulk suppressions 기능에 대해 해설합니다 |
| 43 | + |
| 44 | +- [Introducing bulk suppressions - ESLint - Pluggable JavaScript Linter](https://eslint.org/blog/2025/04/introducing-bulk-suppressions/) |
| 45 | + |
| 46 | +bulk suppression는 의존 코드 기반으로 ESLint 도입할 때 과제를 해결하기 위한 신기능입니다. |
| 47 | +bulk suppressions 사용하면, 기존 모든 규칙 위반을 제어하면서, 새롭게 추가된 파일이나 코드에 대해서만 규칙을 적용할 수 있습니다. |
| 48 | +구체적으로는 `eslint-suppressions.json` 생성, 그 파일에 기록된 위반만을 무시하는 구조입니다. |
| 49 | +이로 인하여, 새롭게 작성된 코드는 추가한 Lint 규칙을 적용하면서, 기존 코드는 계단적으로 이행할 수 있습니다. |
| 50 | + |
| 51 | +---- |
| 52 | + |
| 53 | +{% include inline-support.html %} |
| 54 | + |
| 55 | +---- |
| 56 | +<h1 class="site-genre">헤드라인</h1> |
| 57 | + |
| 58 | +---- |
| 59 | + |
| 60 | +## [email protected]: Now the Default on npm with LTS Timeline |
| 61 | +[expressjs.com/2025/03/31/v5-1-latest-release.html ](https://expressjs.com/2025/03/31/v5-1-latest-release.html "[email protected]: Now the Default on npm with LTS Timeline") |
| 62 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">express</span> <span class="jser-tag">ReleaseNote</span></p> |
| 63 | + |
| 64 | +Express 5.1.0 출시. |
| 65 | +express 5.x 정식 출시 버전. |
| 66 | +문서 업데이트, codemod으로 마이그레이션 도구 제공. |
| 67 | +또한, LTS Policy 관련 정의되어, 4.x는 2026-10-01에 지원 종료됨. |
| 68 | + |
| 69 | +---- |
| 70 | + |
| 71 | +## WebKit Features in Safari 18.4 | WebKit |
| 72 | +[webkit.org/blog/16574/webkit-features-in-safari-18-4/](https://webkit.org/blog/16574/webkit-features-in-safari-18-4/ "WebKit Features in Safari 18.4 | WebKit") |
| 73 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">safari</span> <span class="jser-tag">ReleaseNote</span></p> |
| 74 | + |
| 75 | +Safari 18.4 출시. |
| 76 | +Declarative Web Push 지원. |
| 77 | +CSS `shape()`/`writing-mode`로 옆으로 쓰기 모드/`text-autospace` 지원. |
| 78 | +HTML `<input type="color" />` 개선. |
| 79 | +Web Inspector의 Local Overrides로 일부 데이터만 변경가능, `console.screenshot()` API 추가. |
| 80 | +Image Capture API 지원, Screen Wake Lock API가 iOS/iPad OS에서도 동작하도록, Cookie Store API 지원. |
| 81 | +ES2025 Iterator Helpers 지원, Stage 3 `Error.isError` 지원. |
| 82 | + |
| 83 | +---- |
| 84 | + |
| 85 | +## Introducing bulk suppressions - ESLint - Pluggable JavaScript Linter |
| 86 | +[eslint.org/blog/2025/04/introducing-bulk-suppressions/](https://eslint.org/blog/2025/04/introducing-bulk-suppressions/ "Introducing bulk suppressions - ESLint - Pluggable JavaScript Linter") |
| 87 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">ESLint</span> <span class="jser-tag">article</span></p> |
| 88 | + |
| 89 | +ESLint의 bulk suppressions 관련하여. |
| 90 | +한 번에 모든 에러를 제어하고, 새로 추가된 파일에 대하여 Lint 에러 표현하는 구조. |
| 91 | + |
| 92 | +---- |
| 93 | +<h1 class="site-genre">읽을거리</h1> |
| 94 | + |
| 95 | +---- |
| 96 | + |
| 97 | +## Meet Declarative Web Push | WebKit |
| 98 | +[webkit.org/blog/16535/meet-declarative-web-push/](https://webkit.org/blog/16535/meet-declarative-web-push/ "Meet Declarative Web Push | WebKit") |
| 99 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">safari</span> <span class="jser-tag">article</span></p> |
| 100 | + |
| 101 | +Safari 18.4에서 지원되는 Declarative Web Push 관련해서. |
| 102 | +Safari는 ITP 대응하기 위해, 일정시간 접근이 없는 Service Worker(SW)도 삭제했지만, Web Push는 SW에 의존했었기에 푸쉬를 사용하지 못했던 경우가 있었다. |
| 103 | +Declarative Web Push는 Service Worker을 이용하지 않고 푸쉬 알람 관리 가능 |
| 104 | + |
| 105 | +- [explainers/DeclarativeWebPush at main · WebKit/explainers](https://github.com/WebKit/explainers/tree/main/DeclarativeWebPush "explainers/DeclarativeWebPush at main · WebKit/explainers") |
| 106 | + |
| 107 | +---- |
| 108 | + |
| 109 | +## Modern Cookie Management with the Cookie Store API |
| 110 | +[www.telerik.com/blogs/modern-cookie-management-cookie-store-api](https://www.telerik.com/blogs/modern-cookie-management-cookie-store-api "Modern Cookie Management with the Cookie Store API") |
| 111 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">WebPlatformAPI</span> <span class="jser-tag">article</span></p> |
| 112 | + |
| 113 | +Cookie Store API 관련. |
| 114 | +`document.cookie`과 차이나 Cookie Store API 사용한 Cookie 읽고 쓰기 관련하여 |
| 115 | + |
| 116 | + |
| 117 | +---- |
| 118 | + |
| 119 | +## Introducing bulk suppressions - ESLint - Pluggable JavaScript Linter |
| 120 | +[eslint.org/blog/2025/04/introducing-bulk-suppressions/](https://eslint.org/blog/2025/04/introducing-bulk-suppressions/ "Introducing bulk suppressions - ESLint - Pluggable JavaScript Linter") |
| 121 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">ESLint</span> <span class="jser-tag">article</span></p> |
| 122 | + |
| 123 | +ESLint bulk suppressions 관련하여. |
| 124 | +한 번에 모든 에러를 제어해, 새로 추가된 파일에 대해 Lint 에러 표현하는 구조. |
| 125 | + |
| 126 | + |
| 127 | +---- |
| 128 | + |
| 129 | +## 다시 이해하는 ArrayBuffer - JavaScript으로 바이너리 데이터 다루는 방법 - ICS MEDIA |
| 130 | +[ics.media/entry/250408/](https://ics.media/entry/250408/ "다시 이해하는 ArrayBuffer - JavaScript으로 바이너리 데이터 다루는 방법 - ICS MEDIA") |
| 131 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">article</span></p> |
| 132 | + |
| 133 | +ArrayBuffer과 TypedArray 관련 해설 글. |
| 134 | +통상 배열(Array)과 차이나 TypedArray 사용 방법에 대하여 |
| 135 | + |
| 136 | + |
| 137 | +---- |
| 138 | +<h1 class="site-genre">슬라이드, 영상</h1> |
| 139 | + |
| 140 | +---- |
| 141 | + |
| 142 | +## React Query API Design – Lessons Learned - Dominik Dorfmeister - YouTube |
| 143 | +[www.youtube.com/watch?v=l3PxErcKeAI](https://www.youtube.com/watch?v=l3PxErcKeAI "React Query API Design – Lessons Learned - Dominik Dorfmeister - YouTube") |
| 144 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">React</span> <span class="jser-tag">slide</span> <span class="jser-tag">video</span></p> |
| 145 | + |
| 146 | +React Query의 API 디자인으로부터 배운 것을 발표. |
| 147 | + |
| 148 | + |
| 149 | +---- |
| 150 | +<h1 class="site-genre">소프트웨어, 도구, 라이브러리</h1> |
| 151 | + |
| 152 | +---- |
| 153 | + |
| 154 | +## harrysolovay/standard-json-schema: Turn standard types into JSON schemas |
| 155 | +[github.com/harrysolovay/standard-json-schema](https://github.com/harrysolovay/standard-json-schema "harrysolovay/standard-json-schema: Turn standard types into JSON schemas") |
| 156 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">TypeScript</span> <span class="jser-tag">JSON</span> <span class="jser-tag">library</span></p> |
| 157 | + |
| 158 | +Standard Schema를 JSON Schema으로 변환하는 Adaptor 라이브러리. |
| 159 | +zod/arktype/valibot/typebox으로 대응하고 있고, 각각 peerDependencies로 정의 |
| 160 | + |
| 161 | +- [\[Feature Request\] support \`toJSONSchema\` · Issue #21 · standard-schema/standard-schema](https://github.com/standard-schema/standard-schema/issues/21 "\[Feature Request\] support \`toJSONSchema\` · Issue #21 · standard-schema/standard-schema") |
| 162 | + |
| 163 | +---- |
| 164 | + |
| 165 | +## bytecodealliance/StarlingMonkey: The StarlingMonkey JS runtime |
| 166 | +[github.com/bytecodealliance/StarlingMonkey](https://github.com/bytecodealliance/StarlingMonkey "bytecodealliance/StarlingMonkey: The StarlingMonkey JS runtime") |
| 167 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">WebAssembly</span></p> |
| 168 | + |
| 169 | +Wasm 최적환 된 SpiderMonkey 기반 JavaScript 엔진 |
| 170 | + |
| 171 | + |
| 172 | +---- |
| 173 | + |
| 174 | +## holepunchto/bare: Small and modular JavaScript runtime for desktop and mobile |
| 175 | +[github.com/holepunchto/bare](https://github.com/holepunchto/bare "holepunchto/bare: Small and modular JavaScript runtime for desktop and mobile") |
| 176 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">JavaScript</span> <span class="jser-tag">nodejs</span> <span class="jser-tag">Tools</span></p> |
| 177 | + |
| 178 | +임베디드 모바일에서 사용 목적 JavaScript Runtime. |
| 179 | +libjs JavaScript 엔진에 의존하지 않는 Binding 정의해서, 엔진으로는 V8/JSC/QuickJS/JerryScript 이용 가능. |
| 180 | +CJS/ESM 모듈의 구조나 Native Addon 구조, 경량 스레드 지원 |
| 181 | + |
| 182 | +- [Bare | Fast, Lightweight Runtime for Modular JavaScript Apps](https://bare.pears.com/ "Bare | Fast, Lightweight Runtime for Modular JavaScript Apps") |
| 183 | + |
| 184 | +---- |
| 185 | + |
| 186 | +## toss/es-git: A modern Git library built for Node.js with blazing-fast installation and rock-solid stability, powered by N-API. |
| 187 | +[github.com/toss/es-git](https://github.com/toss/es-git "toss/es-git: A modern Git library built for Node.js with blazing-fast installation and rock-solid stability, powered by N-API.") |
| 188 | +<p class="jser-tags jser-tag-icon"><span class="jser-tag">nodejs</span> <span class="jser-tag">Rust</span> <span class="jser-tag">git </span> <span class="jser-tag">library</span></p> |
| 189 | + |
| 190 | +Node.js의 N-API를 사용한 Git binding 라이브러리 |
| 191 | + |
| 192 | + |
| 193 | +---- |
0 commit comments