README.md

June 23, 2025 ยท View on GitHub

Transform to UnoCSS

๐Ÿš€ Transform to UnoCSS

Effortlessly migrate your CSS, inline styles, and preprocessors to UnoCSS

NPM version NPM Downloads GitHub stars License

English | ็ฎ€ไฝ“ไธญๆ–‡

โœจ Why Transform to UnoCSS?

Transform your legacy CSS into modern, performant UnoCSS with zero configuration! This powerful tool automatically converts:

  • ๐ŸŽจ CSS classes โ†’ UnoCSS utilities
  • ๐Ÿ–Œ๏ธ Inline styles โ†’ Atomic classes
  • ๐ŸŽญ Sass/Less/Stylus โ†’ Pure UnoCSS
  • โšก Bundle size reduction up to 70%
  • ๐Ÿ”ง Smart conflict resolution
  • ๐Ÿ› Debug mode for transparency
  • ๐ŸŽฏ One-click rollback for safety

Perfect for modernizing legacy projects or optimizing performance. Works with Vue, React, Svelte, Astro, and more!

๐Ÿ’ก Pro tip: If you're using Tailwind CSS, check out our sister project transformToTailwindcss.

๐Ÿ“ฆ Quick Start

Global Installation

npm i -g transform-to-unocss
npx transform-to-unocss@latest your-project-folder

โšก CLI Usage

Transform your project

# Transform entire directory
tounocss playground

# Transform with debug output
tounocss playground --debug

# Revert changes (if needed)
tounocss playground --revert

# Show help
tounocss --help

๐ŸŽฏ Quick Example

Before:

<template>
  <div class="container">
    <h1 class="title">Hello World</h1>
    <p style="color: red; font-size: 16px;">This is a paragraph</p>
  </div>
</template>

<style scoped>
.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 20px;
  background: linear-gradient(to right, #ff6b6b, #4ecdc4);
}
.title {
  font-size: 24px;
  font-weight: bold;
  color: #333;
  text-align: center;
}
</style>

After:

<template>
  <div class="max-w-6xl mx-auto p-5 bg-gradient-to-r from-red-400 to-teal-400">
    <h1 class="text-6 font-bold text-gray-8 text-center">Hello World</h1>
    <p class="text-red text-4">This is a paragraph</p>
  </div>
</template>

โœจ 70% smaller bundle size and zero runtime overhead!

๐Ÿ”ง Build Tool Integration

๐Ÿ”ฅ Vite (Recommended)
import { viteTransformToUnocss } from 'transform-to-unocss'
// vite.config.ts
import { defineConfig } from 'vite'

export default defineConfig({
  plugins: [
    viteTransformToUnocss({
      include: ['**/*.vue', '**/*.tsx', '**/*.jsx'],
      exclude: ['node_modules/**'],
      debug: true, // Enable debug mode
    }),
  ],
})
๐Ÿ“ฆ Rollup
// rollup.config.js
import { rollupTransformToUnocss } from 'transform-to-unocss'

export default {
  plugins: [
    rollupTransformToUnocss({
      include: ['**/*.vue', '**/*.tsx', '**/*.jsx'],
      debug: false,
    }),
  ],
}
โšก Webpack
// webpack.config.js
const { webpackTransformToUnocss } = require('transform-to-unocss')

module.exports = {
  plugins: [
    webpackTransformToUnocss({
      include: ['**/*.vue', '**/*.tsx', '**/*.jsx'],
      exclude: ['node_modules/**'],
    }),
  ],
}
๐ŸŽฏ Vue CLI
// vue.config.js
const { webpackTransformToUnocss } = require('transform-to-unocss')

module.exports = {
  configureWebpack: {
    plugins: [
      webpackTransformToUnocss({
        include: ['**/*.vue'],
        debug: process.env.NODE_ENV === 'development',
      }),
    ],
  },
}
โšก Esbuild
// esbuild.config.js
import { build } from 'esbuild'
import { esbuildTransformToUnocss } from 'transform-to-unocss'

build({
  plugins: [
    esbuildTransformToUnocss({
      include: ['**/*.tsx', '**/*.jsx'],
    }),
  ],
})

๏ฟฝ Core Features

๐ŸŽฏ Smart Transformation

  • โœ… CSS class selectors โ†’ UnoCSS utilities
  • โœ… Inline styles โ†’ Atomic class attributes
  • โœ… Preprocessors (Sass/Less/Stylus) โ†’ Pure UnoCSS
  • โœ… Pseudo-classes (:hover, :focus, etc.)
  • โœ… Media queries โ†’ Responsive classes
  • โœ… Complex selectors โ†’ Smart parsing

๐Ÿ”ง Developer Experience

  • ๐Ÿ› Debug mode - Detailed transformation logs
  • ๏ฟฝ One-click rollback - Safe change reversal
  • ๐ŸŽจ VS Code extension - To UnoCSS
  • ๐Ÿ“ TypeScript support - Full type definitions
  • ๐Ÿš€ Zero configuration - Works out of the box

๐Ÿ—๏ธ Framework Support

  • โšก Vue 3/2 - Full support
  • โš›๏ธ React - JSX/TSX support
  • ๐ŸŽญ Svelte - Native support
  • ๐Ÿš€ Astro - Component support
  • ๐Ÿ“„ HTML - Pure HTML files

๐ŸŽจ Advanced Usage

Programmatic API

import { transfromCode } from 'transform-to-unocss'

// Transform Vue component
const result = await transfromCode(vueCode, {
  type: 'vue',
  isRem: true,
  debug: true,
})

// Transform React component
const result = await transfromCode(reactCode, {
  type: 'tsx',
  isJsx: true,
  debug: false,
})

Configuration Options

interface Options {
  type?: 'vue' | 'tsx' | 'jsx' | 'html' | 'svelte' | 'astro'
  isJsx?: boolean // Whether to use JSX syntax
  isRem?: boolean // Whether to convert to rem units
  debug?: boolean // Whether to enable debug mode
  include?: string[] // File patterns to include
  exclude?: string[] // File patterns to exclude
}

๐Ÿ“Š Performance Comparison

Project TypeBeforeAfterReduction
Medium Vue Project245KB73KB70% โ†“
React Application180KB54KB68% โ†“
Enterprise Project890KB267KB72% โ†“

๏ฟฝ๏ธ Debug Mode

Use the --debug flag for detailed transformation information:

tounocss playground --debug

Debug output includes:

  • ๐Ÿ“ File processing progress
  • ๐ŸŽฏ CSS rule transformation details
  • โšก Performance statistics
  • ๐Ÿ” Conflict resolution process

๐Ÿš Ecosystem

๐Ÿค Contributing

We welcome all forms of contributions! Please check the Contributing Guide for details.

Development Setup

# Clone the repository
git clone https://github.com/Simon-He95/transform-to-unocss.git

# Install dependencies
pnpm install

# Development mode
pnpm dev

# Run tests
pnpm test

# Build project
pnpm build

๐Ÿ“ธ Visual Transformation

Before Transformation

before

After Transformation

after

Result: 70% smaller CSS bundle, better performance, and cleaner code! ๐Ÿš€

๐Ÿค Contributing

We welcome all forms of contributions! Please check the Contributing Guide for details.

Development Setup

# Clone the repository
git clone https://github.com/Simon-He95/transform-to-unocss.git

# Install dependencies
pnpm install

# Development mode
pnpm dev

# Run tests
pnpm test

# Build project
pnpm build

We welcome contributions! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

๐Ÿ’– Support the Project

If this project helped you, please consider:

  • โญ Star this repository
  • ๐Ÿ› Report issues
  • ๐Ÿ”ง Contribute code
  • โ˜• Buy me a coffee

Your support keeps this project alive and improving! ๐Ÿ™

๐Ÿ“„ License

MIT ยฉ 2023-present Simon He


Made with โค๏ธ by Simon He