JSer.info #742 - Nuxt 4.0가 출시했다.
새로운 프로젝트 구조로 app/
디렉터리가 기본이 되어, useAsyncData
와 useFetch
가 같은 키로 캐시를 공유합니다. 또한, TypeScript 설정 파일을 app
/server
/node
/shared
용에 각각 작성, CLI 개선도 포함된다.
이행 가이드도 공개되었다.
Next.js 15.4가 출시했다.
Turbopack가 전부 Integration Test 통과하도록 해서, 다음 메이저 업데이트 Next.js 16으로 Stable이 될 예정이다.
또한, Next.js 16에 대상 신기능이 experimental 플래그로 이용하도록 되어, 앞으로 업데이트 대상 대비가 진행됩니다.
import type { NextConfig } from 'next';
const nextConfig: NextConfig = {
experimental: {
// Forward browser logs to the terminal for easier debugging
browserDebugInfoInTerminal: true,
// Enable new caching and pre-rendering behavior
dynamicIO: true, // will be renamed to cacheComponents in Next.js 16
// Activate new client-side router improvements
clientSegmentCache: true,
// Explore route composition and segment overrides via DevTools
devtoolSegmentExplorer: true,
// Enable support for `global-not-found`, which allows you to more easily define a global 404 page.
globalNotFound: true,
// Enable persistent caching for the turbopack dev server and build.
turbopackPersistentCaching: true,
},
};
export default nextConfig;
npm 패키지 관리자를 노린 피싱이 증가, 저명한 패키지에 패키지에 멀웨이를 섞는 일이 발생했다.
구체적으로는, 다음 패키지를 특정 버전에 멀웨어가 포함되었다.
- eslint-config-prettier: 8.10.1, 9.1.1, 10.1.6, 10.1.7
- eslint-plugin-prettier: 4.2.2, 4.2.3
- synckit: 0.11.9
- @pkgr/core: 0.2.8
- napi-postinstall: 0.3.1
- is: 3.3.1
각 npm에서 삭제되는 등 대응은 진행되었지만, 해당 버전을 이용할 때는 대응이 필요하다.
이번 경우에는 npnjs[.]com
도메인에 피싱 사이특 작성, 메일에서 패키지 관리자에 대해 로그인을 내용을 보냄으로, 계정 탈취하는 수법을 사용했다.
- Active Supply Chain Attack: npm Phishing Campaign Leads to P...
- https://x.com/ljharb/status/1946636509601538233
To support JSer.info
- 😘 Recommend JSer.info to your friends!
- ❤️ Support @azu on GitHub Sponsors/JSer.info Sponsors
- 🐦 Follow @jser_info on X(Twitter)
헤드라인
Release v3.0.1 · ueberdosis/tiptap
github.com/ueberdosis/tiptap/releases/tag/v3.0.1
tiptap v3.0.1 출시.
tsup으로 이행함으로 UMD 빌드 지원 폐지, 자료형 정의 개선.
MarkViews 추가, editor.unmount()
메서드 추가, SSR 모드에서 에디터 이용 지원.
Tippy.js에서 Floating UI으로 이행, React 19 대응, @tiptap/extensions
으로 확장 기능 모음
Announcing Nuxt 4.0 · Nuxt Blog
Nuxt v4 출시.
새로운 프로젝트 구조로 app/
디렉토리가 기본으로.
useAsyncData
과 useFetch
가 같은 캐시 공유함으로, useFetch
기본값으로, shallow equal으로 변경.
TypeScript 설정 파일 app
/server
/node
/shared
용으로 각각 작성하도록 함, CLI 개선
Release v0.25.7 · evanw/esbuild
github.com/evanw/esbuild/releases/tag/v0.25.7
esbuild v0.25.7 출시.
import defer
과 import source
지원, --abs-paths=
flag 추가, 특정 조건에 의한 문자열 정수 inline화 지원.
Next.js 15.4 | Next.js
Next.js 15.4 출시.
Turbopack가 전부 Integration Test 통과, Next.js 16 대상 기능을 experimental 플래그로 이용 가능.
Active Supply Chain Attack: npm Phishing Campaign Leads to P...
socket.dev/blog/npm-phishing-campaign-leads-to-prettier-tooling-packages-compromise
npm 패키지를 노린 피싱 증가하고 있다는 이야기.
이하 npm 패키지에 멀웨어 포함, 해당 버전을 이용할 때는 대응 필요.
- eslint-config-prettier: 8.10.1, 9.1.1, 10.1.6, 10.1.7
- eslint-plugin-prettier: 4.2.2, 4.2.3
- synckit: 0.11.9
- @pkgr/core: 0.2.8
- napi-postinstall: 0.3.1
- is: 3.3.1
관련:
읽을거리
vitest에서는 beforeEach를 사용할 수 없다
blog.koh.dev/2025-07-11-vitest-beforeeach/
beforeEach + let이 아니라, test.extends
이용한 Test Context 사용함으로, 실제 접근하는 테스트 케이스으로 대비하는 방법에 대하여
The world’s longest React hooks migration | by Chris Krogh | Jul, 2025 | The Craft
craft.faire.com/the-worlds-longest-react-hooks-migration-8f357cdcdbe9
React Class Component + Mobx에서 React Hooks으로 이행한 이야기.
GritQL 사용한 이행, 수동으로 이행과 리뷰에 대하여
The History of React Through Code | Playful Programming
playfulprogramming.com/posts/react-history-through-code
React의 API 변환 아키텍쳐에 대하여.
JSX/VDOM, Class Component, Hooks.Fiber, Suspense/use
, React Server Component 관련
Parsing 1 Billion Rows in Bun/Typescript Under 10 Seconds
www.taekim.dev/writing/parsing-1b-rows-in-bun
Bun으로 10억행 파일을 효율적으로 읽는 방법에 대한 이야기
슬라이드, 영상
Vanilagy/mediabunny: Pure TypeScript media toolkit for reading, writing, and converting video and audio files, directly in the browser.
github.com/Vanilagy/mediabunny
WebCodecs API를 사용하여 미디어를 읽고 쓰거나 변환하는 라이브러리.
WebCodecs API를 사용하여 미디어 데이터를 Encode/Decode하고, 그 데이터를 컨테이너에 읽고 쓰는 Muxer의 처리를 수행한다.
소프트웨어, 도구, 라이브러리
ArnaudBarre/tsl: An extension of tsc for type-aware linting
TypeScript 플러그인으로 typescript-eslint와 같은 타입 정보를 이용한 Lint를 구현.
타입체크와 동시에 TypeScript의 AST를 이용한 Lint가 가능.