К основному содержанию
команда

nextjs-bundle-analyzer — команда для Claude Code: разбор бандла

Слэш-команда для Claude, которая разбирает размер бандла Next.js и подсказывает, что урезать.

Установить в Claude Code · Через claude-code-templates Все способы и платформы ↓
npx claude-code-templates@latest --command nextjs-vercel/nextjs-bundle-analyzer
Открыть на GitHub

Что делает nextjs-bundle-analyzer

Команда запускает анализ проекта Next.js: смотрит next.config.js, package.json, tsconfig.json и содержимое .next/, а затем выводит список зависимостей и результат npm audit. Дальше она показывает, как подключить @next/bundle-analyzer и какие скрипты добавить в package.json для сборки с отчётом.

Внутри — готовые куски конфигурации: splitChunks с отдельными чанками для вендоров, UI-библиотек и утилит, optimizePackageImports для lucide-react, @heroicons/react, date-fns и lodash, а также пороги размера для First Load JS, отдельных чанков и всего бандла. Есть примеры динамических импортов через next/dynamic и замены тяжёлых библиотек на tree-shaking-варианты.

Команда предполагает, что зависимости уже установлены: без npm install шаги с npm list и npm audit ничего не дадут. Для сборки с анализом нужны @next/bundle-analyzer и cross-env в devDependencies. Часть текста команды обрывается на примере оптимизации изображений, поэтому раздел про next/image опирается только на то, что успело попасть в файл.

Пороги из конфигурации — это ориентир, а не жёсткий лимит сборки. Если First Load JS перевалил за 300KB, это повод проверить, что тянет клиентский бандл.

Какие задачи решает

  • найти, какие библиотеки раздувают клиентский бандл Next.js
  • настроить @next/bundle-analyzer и скрипты сборки с отчётом
  • разбить общий чанк на вендоров, UI-библиотеки и утилиты
  • заменить тяжёлые импорты на tree-shaking-совместимые
  • проверить размер First Load JS и отдельных чанков

Примеры запросов агенту

  • /nextjs-bundle-analyzer --analyze
  • /nextjs-bundle-analyzer --build --report
  • /nextjs-bundle-analyzer

Как установить nextjs-bundle-analyzer

1Через claude-code-templates

npx claude-code-templates@latest --command nextjs-vercel/nextjs-bundle-analyzer

2Вручную: положить файлы

.claude/commands/nextjs-bundle-analyzer.md

Вызов — /nextjs-bundle-analyzer. Для всех проектов — ~/.claude/commands/

Из того же набора205

Весь набор →
setup-development-environment Слэш-команда разворачивает окружение разработки: рантаймы, инструменты, сборку, линтеры и конфиги. Пригодится, когда проект только разворачивают на новой машине. 651установок scientific-critical-thinking Проверяет методологию, статистику и смещения в исследованиях по фреймворкам GRADE и Cochrane ROB. Пригодится при ревью статей и систематических обзорах. 644установок test-coverage Слэш-команда для Claude, которая измеряет покрытие тестами, находит непокрытые ветки и предлагает, что дописать. 637установок graphql-performance-optimizer Субагент разбирает медленные GraphQL-запросы: находит N+1, ставит DataLoader, настраивает кеширование. Пригодится, когда список пользователей грузится секундами. 599установок frontend-dev-guidelines Скилл задаёт агенту единый стиль работы с React и TypeScript: Suspense, ленивая загрузка, структура features, MUI v7 и TanStack. 556установок text-comparison-validator Субагент сверяет извлечённый текст с готовым markdown-файлом строка за строкой. Находит пропущенные слова, опечатки, расхождения в разметке и структуре абзацев, а потом выдаёт отчёт с номерами строк. 545установок claude-d3js-skill Подсказывает агенту, как строить нестандартные визуализации на d3.js: сетевые графы, географические карты, плавные переходы. Пригодится, когда обычных библиотек графиков не хватает. 531установок ocr-grammar-fixer Субагент для Claude, который правит распознанный текст: убирает ошибки OCR, восстанавливает пробелы и приводит грамматику в порядок, сохраняя смысл. 522установок

Похожие

plugin-bundle-size grafana Помогает уменьшить размер входного файла module.js в плагинах приложений Grafana через React.lazy и разделение чанков в Webpack. CX Codex +1 4 200установок bundle-splitting patterns.dev Скилл учит агента делить большой JavaScript-бандл на части, чтобы быстрее рисовалась первая страница и приложение становилось интерактивным. CX Codex +1 1 500установок nextjs-turbopack affaan-m Скилл объясняет, как использовать Turbopack в Next.js 16+ и когда выбирать webpack. Пригодится при отладке медленного запуска, HMR и имени файла middleware. CX Codex +1 5 000установок react-performance affaan-m Скилл для аудита и ускорения приложений на React 18/19 и Next.js. Помогает находить сетевые водопады, сокращать размер бандла и настраивать Server Components во время код-ревью. CX Codex +1 4 900установок auditing-performance spencerpauly Скилл проводит аудит производительности приложения: размер бандла, рендеринг, запросы к базе и Core Web Vitals. Пригодится, когда страница грузится долго или интерфейс тормозит. CX Codex +1 476установок react-best-practices vercel Скилл для разбора медленного интерфейса на React и Next.js: находит водопады запросов, лишний JS в бандле, ошибки на границе сервер-клиент и пустые ререндеры. CX Codex +1 399установок

Рядом в теме «Фронтенд и UI»

Всё по теме «Фронтенд и UI» →

Вопросы о nextjs-bundle-analyzer

Как установить nextjs-bundle-analyzer в Claude?

Выполните npx claude-code-templates@latest --command nextjs-vercel/nextjs-bundle-analyzer, затем проверьте, что файл появился по пути .claude/commands/nextjs-bundle-analyzer.md.

Что делает nextjs-bundle-analyzer?

Разбирает конфигурацию и зависимости проекта Next.js, подключает анализатор бандла и выдаёт рекомендации по разбиению чанков и замене тяжёлых библиотек.

Что нужно для работы команды?

Установленные зависимости проекта и devDependencies @next/bundle-analyzer и cross-env — без них шаги анализа и сборки с отчётом не сработают.

Исходный текст

nextjs-bundle-analyzer.md · MIT
---
allowed-tools: Read, Edit, Bash
argument-hint: "[--build] [--analyze] [--report]"
description: Analyze and optimize Next.js bundle size with detailed recommendations
---

## Next.js Bundle Analyzer

**Analysis Mode**: $ARGUMENTS

## Current Project Analysis

### Build Configuration
- Next.js config: @next.config.js
- Package.json: @package.json
- TypeScript config: @tsconfig.json (if exists)
- Build output: !`ls -la .next/ 2>/dev/null || echo "No build found"`

### Dependencies Analysis
- Production dependencies: !`npm list --prod --depth=0 2>/dev/null || echo "Run npm install first"`
- Development dependencies: !`npm list --dev --depth=0 2>/dev/null || echo "Run npm install first"`
- Package vulnerabilities: !`npm audit --audit-level=moderate 2>/dev/null || echo "No audit available"`

## Bundle Analysis Setup

### 1. Install Bundle Analyzer
```bash
# Install webpack-bundle-analyzer
npm install --save-dev @next/bundle-analyzer

# Or use built-in Next.js analyzer
npm install --save-dev cross-env
```

### 2. Configure Next.js Bundle Analyzer
```javascript
// next.config.js
const withBundleAnalyzer = require('@next/bundle-analyzer')({
  enabled: process.env.ANALYZE === 'true',
});

/** @type {import('next').NextConfig} */
const nextConfig = {
  // Your existing config
  experimental: {
    optimizePackageImports: [
      'lucide-react',
      '@heroicons/react',
      'date-fns',
      'lodash',
    ],
  },
  webpack: (config, { buildId, dev, isServer, defaultLoaders, webpack }) => {
    // Bundle analysis optimizations
    if (!dev && !isServer) {
      config.optimization.splitChunks = {
        chunks: 'all',
        cacheGroups: {
          default: false,
          vendors: false,
          // Vendor chunk for common libraries
          vendor: {
            name: 'vendors',
            chunks: 'all',
            test: /node_modules/,
            priority: 20,
          },
          // Common chunk for shared code
          common: {
            name: 'commons',
            minChunks: 2,
            chunks: 'all',
            priority: 10,
            reuseExistingChunk: true,
            enforce: true,
          },
          // UI libraries chunk
          ui: {
            name: 'ui-libs',
            chunks: 'all',
            test: /node_modules\/(react|react-dom|@radix-ui|@headlessui)/,
            priority: 15,
          },
          // Utility libraries chunk
          utils: {
            name: 'utils',
            chunks: 'all',
            test: /node_modules\/(lodash|date-fns|clsx|classnames)/,
            priority: 15,
          },
        },
      };
    }

    return config;
  },
};

module.exports = withBundleAnalyzer(nextConfig);
```

### 3. Package.json Scripts
```json
{
  "scripts": {
    "analyze": "cross-env ANALYZE=true next build",
    "analyze:server": "cross-env BUNDLE_ANALYZE=server next build",
    "analyze:browser": "cross-env BUNDLE_ANALYZE=browser next build",
    "build:analyze": "npm run build && npm run analyze"
  }
}
```

## Bundle Analysis Execution

### 1. Generate Analysis Report
```bash
# Full bundle analysis
ANALYZE=true npm run build

# Server-side bundle analysis
BUNDLE_ANALYZE=server npm run build

# Client-side bundle analysis  
BUNDLE_ANALYZE=browser npm run build

# Production build with analysis
npm run analyze
```

### 2. Bundle Size Check
```bash
# Check current bundle size
ls -lah .next/static/chunks/ | head -20

# Check bundle sizes with details
find .next/static/chunks -name "*.js" -exec ls -lah {} \; | sort -k5 -hr

# Gzipped size analysis
find .next/static/chunks -name "*.js" -exec gzip -c {} \; | wc -c
```

## Bundle Analysis Results

### 1. Bundle Size Breakdown
Analyze the generated webpack-bundle-analyzer report for:

#### Client Bundles
- **Main bundle**: Core application code
- **Framework bundle**: Next.js runtime and React
- **Vendor bundles**: Third-party libraries
- **Page bundles**: Individual page chunks
- **Shared bundles**: Common code between pages

#### Server Bundles
- **API routes**: Server-side API handlers  
- **Middleware**: Edge and server middleware
- **Server components**: RSC bundles

### 2. Size Thresholds and Recommendations
```javascript
// Bundle size thresholds
const bundleThresholds = {
  // First Load JS (critical)
  firstLoadJS: {
    warning: 200 * 1024, // 200KB
    error: 300 * 1024,   // 300KB
  },
  // Individual chunks
  chunk: {
    warning: 150 * 1024, // 150KB
    error: 250 * 1024,   // 250KB
  },
  // Total bundle size
  total: {
    warning: 1024 * 1024, // 1MB
    error: 2048 * 1024,   // 2MB
  }
};
```

## Bundle Optimization Strategies

### 1. Code Splitting Optimization
```typescript
// Dynamic imports for large components
import dynamic from 'next/dynamic';

const HeavyComponent = dynamic(() => import('./HeavyComponent'), {
  loading: () => <p>Loading...</p>,
  ssr: false, // Disable SSR for client-only components
});

// Route-based code splitting
const AdminDashboard = dynamic(() => import('./AdminDashboard'), {
  loading: () => <DashboardSkeleton />,
});

// Conditional loading
const ChartComponent = dynamic(
  () => import('./ChartComponent'),
  { 
    ssr: false,
    loading: () => <ChartSkeleton />
  }
);
```

### 2. Library Optimization
```javascript
// Optimize lodash imports
// ❌ Imports entire lodash library
import _ from 'lodash';

// ✅ Import only needed functions
import { debounce, throttle } from 'lodash';

// ✅ Even better - use tree-shaking friendly alternatives
import debounce from 'lodash/debounce';
import throttle from 'lodash/throttle';
```

```javascript
// Date library optimization
// ❌ Moment.js (large bundle)
import moment from 'moment';

// ✅ date-fns (tree-shakable)
import { format, parseISO } from 'date-fns';

// ✅ Day.js (smaller alternative)
import dayjs from 'dayjs';
```

### 3. Next.js Specific Optimizations
```javascript
// next.config.js optimizations
const nextConfig = {
  // Optimize package imports
  experimental: {
    optimizePackageImports: [
      'react-icons',
      '@heroicons/react',
      'lucide-react',
      'date-fns',
      'lodash',
    ],
  },
  
  // Tree shaking for CSS
  experimental: {
    optimizeCss: true,
  },
  
  // Minimize client-side JavaScript
  compiler: {
    removeConsole: process.env.NODE_ENV === 'production',
  },
  
  // Webpack optimizations
  webpack: (config, { dev, isServer }) => {
    if (!dev && !isServer) {
      // Analyze bundle size
      config.optimization.concatenateModules = true;
      
      // Enable compression
      config.plugins.push(
        new (require('compression-webpack-plugin'))({
          algorithm: 'gzip',
          test: /\.(js|css|html|svg)$/,
          threshold: 8192,
          minRatio: 0.8,
        })
      );
    }
    return config;
  },
};
```

### 4. Image Optimization
```typescript
// Next.js Image component with optimization
import Image from 'next/image';

// Optimize images with proper sizing
<Image
  src="/hero-image.jpg"
  alt="Hero"
  width={1200}
  height={600}
  priority={isAboveFold}
  placeholder="blur"
  blurDataURL="data:image/jpeg;base64,..."
  sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
/>
```

## Performance Impact Analysis

### 1. Core Web Vitals Impact
Analyze bundle size impact on:
- **Largest Contentful Paint (LCP)**: Large bundles delay content rendering
- **First Input Delay (FID)**: JavaScript blocking main thread
- **Cumulative Layout Shift (CLS)**: Dynamic imports causing layout shifts

### 2. Network Performance
```javascript
// Simulate network conditions for testing
const networkConditions = {
  'Fast 3G': { downloadThroughput: 1500, uploadThroughput: 750, latency: 562.5 },
  'Slow 3G': { downloadThroughput: 500, uploadThroughput: 500, latency: 2000 },
  'Offline': { downloadThroughput: 0, uploadThroughput: 0, latency: 0 }
};
```

### 3. Bundle Loading Strategies
```typescript
// Preload critical chunks
useEffect(() => {
  // Preload likely next page
  router.prefetch('/dashboard');
  
  // Preload critical components
  import('./CriticalComponent');
}, []);

// Lazy load non-critical features
const LazyFeature = lazy(() => 
  import('./LazyFeature').then(module => ({
    default: module.LazyFeature
  }))
);
```

## Optimization Recommendations

### 1. Immediate Actions
- **Remove unused dependencies**: Audit and remove packages not in use
- **Optimize imports**: Use tree-shaking friendly import patterns
- **Enable compression**: Configure gzip/brotli compression
- **Minimize polyfills**: Use modern JavaScript features with targeted polyfills

### 2. Medium-term Improvements
- **Code splitting strategy**: Implement route and component-based splitting
- **Library replacements**: Replace large libraries with smaller alternatives
- **Bundle caching**: Implement long-term caching strategies
- **Performance monitoring**: Set up bundle size monitoring in CI/CD

### 3. Long-term Optimization
- **Micro-frontends**: Consider architecture changes for large applications
- **Edge computing**: Move computation closer to users
- **Progressive enhancement**: Implement progressive loading strategies
- **Performance budgets**: Establish and enforce bundle size budgets

## Monitoring and Maintenance

### 1. Automated Bundle Monitoring
```yaml
# GitHub Action for bundle monitoring
name: Bundle Size Check
on: [pull_request]

jobs:
  bundle-analysis:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '18'
      - run: npm ci
      - run: npm run build
      - uses: nextjs-bundle-analysis/bundle-analyzer@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
```

### 2. Performance Budgets
```javascript
// webpack.config.js performance budgets
module.exports = {
  performance: {
    maxAssetSize: 250000, // 250KB
    maxEntrypointSize: 350000, // 350KB
    hints: 'error',
  },
};
```

### 3. Regular Audit Schedule
- **Weekly**: Dependency updates and security audit
- **Monthly**: Full bundle analysis and optimization review  
- **Quarterly**: Architecture review and major optimizations

## Analysis Report Generation

Generate comprehensive report including:
1. **Current Bundle Sizes**: Detailed breakdown by chunk type
2. **Optimization Opportunities**: Specific recommendations with size impact
3. **Performance Metrics**: Core Web Vitals impact analysis
4. **Implementation Roadmap**: Prioritized optimization tasks
5. **Monitoring Setup**: Tools and processes for ongoing monitoring

Provide specific, actionable recommendations for immediate and long-term bundle optimization.

© davila7 · MIT · davila7/claude-code-templates

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой