Fork me on GitHub

2025-07-21: Nuxt 4.0, Next.js 15.4, npm 패키지 관리자를 노리는 피싱

Translator: rewrite0w0 Edit on GitHub See Revisions

JSer.info #742 - Nuxt 4.0가 출시했다.

새로운 프로젝트 구조로 app/ 디렉터리가 기본이 되어, useAsyncDatauseFetch가 같은 키로 캐시를 공유합니다. 또한, 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 도메인에 피싱 사이특 작성, 메일에서 패키지 관리자에 대해 로그인을 내용을 보냄으로, 계정 탈취하는 수법을 사용했다.


To support JSer.info


헤드라인


Release v3.0.1 · ueberdosis/tiptap

github.com/ueberdosis/tiptap/releases/tag/v3.0.1

JavaScript editor library

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.com/blog/v4

Vue library ReleaseNote

Nuxt v4 출시.
새로운 프로젝트 구조로 app/ 디렉토리가 기본으로.
useAsyncDatauseFetch가 같은 캐시 공유함으로, 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 ReleaseNote

esbuild v0.25.7 출시.
import deferimport source 지원, --abs-paths= flag 추가, 특정 조건에 의한 문자열 정수 inline화 지원.


Next.js 15.4 | Next.js

nextjs.org/blog/next-15-4

Next.js ReleaseNote

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 security news

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/

vite JavaScript test article

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 article

React Class Component + Mobx에서 React Hooks으로 이행한 이야기.
GritQL 사용한 이행, 수동으로 이행과 리뷰에 대하여


The History of React Through Code | Playful Programming

playfulprogramming.com/posts/react-history-through-code

React article history

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 JavaScript article

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

JavaScript video audio library

WebCodecs API를 사용하여 미디어를 읽고 쓰거나 변환하는 라이브러리.
WebCodecs API를 사용하여 미디어 데이터를 Encode/Decode하고, 그 데이터를 컨테이너에 읽고 쓰는 Muxer의 처리를 수행한다.


소프트웨어, 도구, 라이브러리


ArnaudBarre/tsl: An extension of tsc for type-aware linting

github.com/ArnaudBarre/tsl

TypeScript plugin ESLint

TypeScript 플러그인으로 typescript-eslint와 같은 타입 정보를 이용한 Lint를 구현.
타입체크와 동시에 TypeScript의 AST를 이용한 Lint가 가능.


Pull Request to this article
JSer.info Slackに参加する