mcpField
B
bundle-barrel-imports

bundle-barrel-imports

github.com/theorcdev開発2.1k44 回インストール3 日前に更新
リポジトリ

bundle-barrel-imports について

JavaScript や React を扱う開発者向けのコーディングスキルです。直接インポートや Next.js のパッケージインポート最適化により、barrel ファイルからの不要な読み込みを抑える方法を説明します。

主な機能

  1. 01barrel ファイルのコストを説明
  2. 02モジュールの直接インポートを推奨
  3. 03Next.js のパッケージインポート最適化
  4. 04影響を受けやすいライブラリを列挙

活用シーン

  1. 01開発時の起動を高速化
  2. 02コールドスタートの読み込み負荷を軽減
  3. 03コンポーネントライブラリのインポート方式を選択

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/theorcdev/8bitcn-ui --skill bundle-barrel-imports

インストール後、Claude Code で/bundle-barrel-importsを入力して読み込まれたか確認します。

詳細

バレルファイルからのインポートを避ける

未使用のモジュールを大量に読み込まないよう、バレルファイルではなくソースファイルから直接インポートしてください。バレルファイルとは、複数のモジュールを再エクスポートするエントリーポイントです(例:export * from './module'を実行するindex.js)。

人気のアイコンライブラリやコンポーネントライブラリでは、エントリーファイルから最大10,000個の再エクスポートが行われる場合があります。多くのReactパッケージでは、インポートするだけで200~800msかかり、開発速度と本番環境のコールドスタートの両方に影響します。

ツリーシェイキングで解決しない理由: ライブラリが外部モジュールとして扱われている(バンドルされていない)場合、バンドラーは最適化できません。ツリーシェイキングを有効にするためにバンドルすると、モジュールグラフ全体を解析する必要があるため、ビルドが大幅に遅くなります。

誤り(ライブラリ全体をインポート):

import { Check, X, Menu } from 'lucide-react'
// Loads 1,583 modules, takes ~2.8s extra in dev
// Runtime cost: 200-800ms on every cold start

import { Button, TextField } from '@mui/material'
// Loads 2,225 modules, takes ~4.2s extra in dev

正しい(必要なものだけをインポート):

import Check from 'lucide-react/dist/esm/icons/check'
import X from 'lucide-react/dist/esm/icons/x'
import Menu from 'lucide-react/dist/esm/icons/menu'
// Loads only 3 modules (~2KB vs ~1MB)

import Button from '@mui/material/Button'
import TextField from '@mui/material/TextField'
// Loads only what you use

代替案(Next.js 13.5+):

// next.config.js - use optimizePackageImports
module.exports = {
  experimental: {
    optimizePackageImports: ['lucide-react', '@mui/material']
  }
}

// Then you can keep the ergonomic barrel imports:
import { Check, X, Menu } from 'lucide-react'
// Automatically transformed to direct imports at build time

直接インポートすると、開発環境の起動が15~70%速くなり、ビルドが28%速くなり、コールドスタートが40%速くなるほか、HMRも大幅に高速化します。

影響を受けやすいライブラリ:lucide-react、@mui/material、@mui/icons-material、@tabler/icons-react、react-icons、@headlessui/react、@radix-ui/react-*、lodash、ramda、date-fns、rxjs、react-use。

参考:Next.jsにおけるパッケージインポートの最適化

コメント