# unplugin-tailwindcss-mangle mangle tailwindcss utilities plugin It is recommended to read the documentation of [tailwindcss-patch](https://github.com/sonofmagic/tailwindcss-mangle/tree/main/packages/tailwindcss-patch) first, `unplugin-tailwindcss-mangle` depends on this tool. > Now Support `vite` and `webpack` - [unplugin-tailwindcss-mangle](#unplugin-tailwindcss-mangle) - [Docs](#docs) - [Features](#features) - [Usage](#usage) - [1. Install Package](#1-install-package) - [2. Run install script](#2-run-install-script) - [3. add `prepare` script in your `package.json`](#3-add-prepare-script-in-your-packagejson) - [4. Run extract command](#4-run-extract-command) - [5. Register this plugin](#5-register-this-plugin) - [vite](#vite) - [webpack](#webpack) - [Nuxt 3](#nuxt-3) - [Options](#options) - [Notice](#notice) - [Migration form v1 to v2](#migration-form-v1-to-v2) ## Docs [mangle.icebreaker.top](https://mangle.icebreaker.top) ## Features ```html
``` ## Usage ### 1. Install Package ```sh i -D unplugin-tailwindcss-mangle tailwindcss-patch ``` ### 2. Run install script ```sh npx tw-patch install ``` ### 3. add `prepare` script in your `package.json` ```json "scripts": { "prepare": "tw-patch install" }, ``` ### 4. Run extract command cd to the same directory as `package.json` and `tailwind.config.js`, then run: ```sh npx tw-patch extract ``` > See more options in [tailwindcss-patch](https://github.com/sonofmagic/tailwindcss-mangle/tree/main/packages/tailwindcss-patch) Then there will generate a json file: `.tw-patch/tw-class-list.json` ### 5. Register this plugin #### vite ```js import vue from '@vitejs/plugin-vue' import utwm from 'unplugin-tailwindcss-mangle/vite' // for example: vue vite project import { defineConfig } from 'vite' // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue(), utwm()] }) ``` then run script: ```sh # generate bundle yarn build # preview yarn preview ``` You will see all class was renamed to `tw-*` #### webpack ```js // esm import { webpackPlugin as utwm } from 'unplugin-tailwindcss-mangle' // or cjs const utwm = require('unplugin-tailwindcss-mangle/webpack') // use this webpack plugin // for example next.config.js const { defineConfig } = require('@vue/cli-service') // vue.config.js module.exports = defineConfig({ transpileDependencies: true, configureWebpack: (config) => { if (process.env.NODE_ENV === 'production') { config.plugins.push(utwm()) } } }) ``` #### Nuxt 3 ```ts import nuxtPlugin from 'unplugin-tailwindcss-mangle/nuxt' export default defineNuxtConfig({ // ... // https://github.com/nuxt/nuxt/issues/20428 // you must set this option to false to enable vite extract css experimental: { inlineSSRStyles: false }, modules: [ [ nuxtPlugin, { // options } ] ] }) ``` ## Options [types.ts](src/types.ts) ## Notice By default, only the build will take effect. Due to some restrictions, it cannot take effect in the development mode. This plugin only transform those classes which name contain `-` or `:`, like `w-32`, `before:h-[300px]`,`after:dark:via-[#0141ff]/40`. some classes like `flex`,`relative` will not be mangled. because plugin will **traverse** all `html class attr` and `js StringLiteral` to find `utilities` generated by `tailwindcss`. it's dangerous to mangle some `js StringLiteral` like: ```js const innerHTML = 'i\'m flex and relative and grid' document.body.innerHTML = innerHTML ``` so only strings with `-` or `:` will be transformed. ## Migration form v1 to v2 ```diff // vite - import { vitePlugin } from 'unplugin-tailwindcss-mangle' + import utwm from 'unplugin-tailwindcss-mangle/vite' // webpack - import { webpackPlugin } from 'unplugin-tailwindcss-mangle' + import utwm from 'unplugin-tailwindcss-mangle/webpack' ```