Skip to Content
2.Mangle

2.Mangle

Introduction

<!-- Before modification --> <div class="z-10 w-full max-w-5xl items-center justify-between font-mono text-sm lg:flex"></div> <!-- After modification --> <div class="tw-g tw-h tw-i tw-d tw-e tw-j tw-k tw-l"></div>

Usage

1. Install Packages

npm i -D unplugin-tailwindcss-mangle tailwindcss-patch

2. Run the Installation Script

npx tw-patch install

3. Add prepare Script in package.json

"scripts": { "prepare": "tw-patch install" },

4. Run the Extraction Command

Navigate to the directory containing package.json and tailwind.config.js, then run:

npx tw-patch extract

Check out more options in tailwindcss-patch

This will generate a JSON file: .tw-patch/tw-class-list.json

5. Register the Plugin

vite

import vue from '@vitejs/plugin-vue' import utwm from 'unplugin-tailwindcss-mangle/vite' // For example: a vue vite project import { defineConfig } from 'vite' // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue(), utwm()] })

Then run the script:

# Generate build package yarn build # Preview yarn preview

You will see all class names renamed to tw-*

webpack

// 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()) } } })

Notes

This plugin will only transform utility classes containing - or :, such as w-32, before:h-[300px], after:dark:via-[#0141ff]/40. Some class names like flex, relative will not be transformed.

Because the plugin will traverse all html class attributes and class names in js literals, looking for utility classes generated by tailwindcss.

Transforming js literals like the following is dangerous:

const innerHTML = 'i\'m flex and relative and grid' document.body.innerHTML = innerHTML

Therefore, only strings containing - or : will be transformed.

Additionally, the plugin provides an option twIgnore to skip Mangle for certain strings.

For example:

Input

const twIgnore = String.raw; const className = `${twIgnore`gap-y-4`} bg-zinc-800/30`;

Output

const twIgnore = String.raw; const className = `${twIgnore`gap-y-4`} tw-a`;
Last updated on