Build & Packaging

07. Vite 6 Architecture & Library Packaging

Understand Vite 6 next-gen bundling internals, lightning-fast HMR, TypeScript declaration generation, and multi-format npm library packaging with exports.

vite-packaging.ts
// vite.config.ts & package.json exports architecture
import { defineConfig } from 'vite';
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';

export default defineConfig({
  plugins: [tailwindcss(), sveltekit()],
  build: {
    target: 'es2026',
    cssMinify: 'lightningcss'
  }
});

/* package.json modern exports map for dual CJS/ESM & TypeScript declarations */
/*
{
  "name": "@org/ui-library",
  "type": "module",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js"
    },
    "./theme": "./dist/theme.css"
  }
}
*/

Vite 6 Architecture & Library Packaging

Modern frontend libraries use modern packaging standards including conditional exports, TypeScript declaration bundling, and Vite 6's optimized build pipeline.

  • Vite 6 & Rolldown: Delivers lightning-fast Hot Module Replacement (HMR) and optimized multi-target build outputs.
  • svelte-package & unbuild: Compiles Svelte runes components, processes TypeScript definitions (.d.ts), and produces standard ESM artifacts.
  • Conditional package.json exports: Enforces explicit public API boundaries, preventing consumers from importing internal unexported modules.
package.json Conditional Exports Resolver Subpath Exports
Target Export: .
TypeScript Types: ./dist/index.d.ts
ESM Bundle: ./dist/index.js

Main library bundle exporting runes components and utilities.