{"_id":"@arcmantle/vite-plugin-minify-css-literal","_rev":"4-a0adf9942d2f87e53d6bdf03dd25f2bc","name":"@arcmantle/vite-plugin-minify-css-literal","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@arcmantle/vite-plugin-minify-css-literal","version":"1.0.0","author":{"name":"Kristoffer Roen-Lie"},"license":"Apache-2.0","_id":"@arcmantle/vite-plugin-minify-css-literal@1.0.0","maintainers":[{"name":"roenlie","email":"kristofferroenlie@gmail.com"}],"dist":{"shasum":"22f271ad1aef6db21151529ba4130881676a4dca","tarball":"https://registry.npmjs.org/@arcmantle/vite-plugin-minify-css-literal/-/vite-plugin-minify-css-literal-1.0.0.tgz","fileCount":18,"integrity":"sha512-a60++kKgoUqVlN855ava4ist701KW94plysEUW1Wt6L6zko8z3eOA55dlJhHeuJBBz4xl6TNIKoCLGvM7/e/OQ==","signatures":[{"sig":"MEUCIQCulbk1d6ws5sanDYrfsOgJhnvy3W989Z4yGWYF0WUSgAIgeNnm3T5lc+xfprjzqN9CabOVoDIW4xtH+hG7s5QHuik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20731},"main":"./dist/index.js","type":"module","_from":"file:arcmantle-vite-plugin-minify-css-literal-1.0.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"scripts":{"dev":"vite --config ./demo/vite.config.ts","build":"rimraf dist && tsc --project ./src/tsconfig.json"},"_npmUser":{"name":"roenlie","actor":{"name":"roenlie","type":"user","email":"kristofferroenlie@gmail.com"},"email":"kristofferroenlie@gmail.com"},"_resolved":"/tmp/a448249a24435afd369ce8a649347c21/arcmantle-vite-plugin-minify-css-literal-1.0.0.tgz","_integrity":"sha512-a60++kKgoUqVlN855ava4ist701KW94plysEUW1Wt6L6zko8z3eOA55dlJhHeuJBBz4xl6TNIKoCLGvM7/e/OQ==","_npmVersion":"11.4.2","description":"Minifies css literals.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@babel/types":"^7.27.0","lightningcss":"^1.29.3","magic-string":"^0.30.17","@babel/parser":"^7.27.0","@babel/traverse":"^7.27.0"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.0","vite":"^7.0.0","rimraf":"^6.0.1","rollup":"^4.40.0","typescript":"^5.8.3","@types/node":"^24.0.10","@arcmantle/tsconfig":"^1.0.4","@types/babel__traverse":"^7.20.7"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-minify-css-literal_1.0.0_1751755245249_0.7721400221510846","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@arcmantle/vite-plugin-minify-css-literal","version":"1.0.1","author":{"name":"Kristoffer Roen-Lie"},"license":"Apache-2.0","_id":"@arcmantle/vite-plugin-minify-css-literal@1.0.1","maintainers":[{"name":"roenlie","email":"kristofferroenlie@gmail.com"}],"dist":{"shasum":"2188231bfc645202aa4c6c3f0ec166c71a06c9af","tarball":"https://registry.npmjs.org/@arcmantle/vite-plugin-minify-css-literal/-/vite-plugin-minify-css-literal-1.0.1.tgz","fileCount":18,"integrity":"sha512-4IVU4HvetxFHxDtJC+2Ib7X/rPXMFg44XxZETzhIknodaZ7TRcM3JinE4zmlnZmxkIDKVAA4fbCuxxyP0Un8DQ==","signatures":[{"sig":"MEUCIQDXqgP6h2eCa+hc1l5ComyDruRznsMby+OCPvCjq2EttgIgSEwdwDHpxcQEswq9TQAWJ8b/tztiVaWg4TTj9V2vd2Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20713},"main":"./dist/index.js","type":"module","_from":"file:arcmantle-vite-plugin-minify-css-literal-1.0.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"scripts":{"dev":"vite --config ./demo/vite.config.ts","build":"rimraf dist && tsc --project ./src/tsconfig.json"},"_npmUser":{"name":"roenlie","email":"kristofferroenlie@gmail.com"},"_resolved":"/tmp/d97d78335fa0641bf4dd9e75e3f84613/arcmantle-vite-plugin-minify-css-literal-1.0.1.tgz","_integrity":"sha512-4IVU4HvetxFHxDtJC+2Ib7X/rPXMFg44XxZETzhIknodaZ7TRcM3JinE4zmlnZmxkIDKVAA4fbCuxxyP0Un8DQ==","_npmVersion":"11.4.2","description":"Minifies css literals.","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@babel/types":"^7.27.0","lightningcss":"^1.29.3","magic-string":"^0.30.17","@babel/parser":"^7.27.0","@babel/traverse":"^7.27.0"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.0","vite":"^7.0.0","rimraf":"^6.0.1","rollup":"^4.40.0","typescript":"^5.8.3","@types/node":"^24.0.14","@arcmantle/tsconfig":"^1.0.5","@types/babel__traverse":"^7.20.7"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-minify-css-literal_1.0.1_1752757867243_0.7239096129269802","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@arcmantle/vite-plugin-minify-css-literal","version":"1.0.2","author":{"name":"Kristoffer Roen-Lie"},"license":"Apache-2.0","_id":"@arcmantle/vite-plugin-minify-css-literal@1.0.2","maintainers":[{"name":"roenlie","email":"kristofferroenlie@gmail.com"}],"homepage":"https://github.com/arcmantle/vite-plugin-minify-css-literal#readme","bugs":{"url":"https://github.com/arcmantle/vite-plugin-minify-css-literal/issues"},"dist":{"shasum":"c08228597f3050e0fc14704470a48e547cce89f0","tarball":"https://registry.npmjs.org/@arcmantle/vite-plugin-minify-css-literal/-/vite-plugin-minify-css-literal-1.0.2.tgz","fileCount":18,"integrity":"sha512-tTeMk+GavbQYmLTLyo5/+NYLnuil7Wx2ucE7G/e2e8zIni5k1Y0URSVvgVLKaZP1Ctg1iKnp2qa8LORV/0MjEQ==","signatures":[{"sig":"MEYCIQCHEr1OMBf7PtZoAWK94yMHepQch7SF3oNGhkEVo/D2JQIhAIzyapzDBbz9GVQ3XK0zZiimQEEvLdDsJGHo4OdQ4Mt7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20832},"main":"./dist/index.js","type":"module","_from":"file:arcmantle-vite-plugin-minify-css-literal-1.0.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"scripts":{"dev":"vite --config ./demo/vite.config.ts","build":"rimraf dist && tsc --project ./src/tsconfig.json"},"_npmUser":{"name":"roenlie","email":"kristofferroenlie@gmail.com"},"_resolved":"/tmp/11a350dd4637b00bfdbd124d7c93fe0f/arcmantle-vite-plugin-minify-css-literal-1.0.2.tgz","_integrity":"sha512-tTeMk+GavbQYmLTLyo5/+NYLnuil7Wx2ucE7G/e2e8zIni5k1Y0URSVvgVLKaZP1Ctg1iKnp2qa8LORV/0MjEQ==","repository":{"url":"git+https://github.com/arcmantle/vite-plugin-minify-css-literal.git","type":"git"},"_npmVersion":"11.4.2","description":"Minifies css literals.","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@babel/types":"^7.27.0","lightningcss":"^1.29.3","magic-string":"^0.30.17","@babel/parser":"^7.27.0","@babel/traverse":"^7.27.0"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.0","vite":"^7.0.0","rimraf":"^6.0.1","rollup":"^4.40.0","typescript":"^5.8.3","@types/node":"^24.0.14","@arcmantle/tsconfig":"^1.0.6","@types/babel__traverse":"^7.20.7"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-minify-css-literal_1.0.2_1752781603377_0.30737772837075283","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@arcmantle/vite-plugin-minify-css-literal","version":"1.0.3","description":"Minifies css literals.","license":"Apache-2.0","author":{"name":"Kristoffer Roen-Lie"},"repository":{"type":"git","url":"git+https://github.com/arcmantle/vite-plugin-minify-css-literal.git"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","dependencies":{"@babel/parser":"^7.27.0","@babel/traverse":"^7.27.0","@babel/types":"^7.27.0","lightningcss":"^1.29.3","magic-string":"^0.30.17"},"devDependencies":{"@arcmantle/tsconfig":"^1.0.9","@types/babel__traverse":"^7.20.7","@types/node":"^24.0.14","lit":"^3.3.0","rimraf":"^6.0.1","rollup":"^4.40.0","typescript":"^5.8.3","vite":"^7.0.0"},"engines":{"node":">=22"},"scripts":{"build":"rimraf dist && tsc --project ./src/tsconfig.json","dev":"vite --config ./demo/vite.config.ts"},"_id":"@arcmantle/vite-plugin-minify-css-literal@1.0.3","bugs":{"url":"https://github.com/arcmantle/vite-plugin-minify-css-literal/issues"},"homepage":"https://github.com/arcmantle/vite-plugin-minify-css-literal#readme","_integrity":"sha512-4rTlf2gx8IC8tDg2rs1H9xrcmORQ9LhkzHW+PHbQBpYL1JzX3V8+cfT9mKwqOz67PEc50qYCo/tz9qOeXhQrsA==","_resolved":"/tmp/63d38e4a9ed8a752213b1e24ef859571/arcmantle-vite-plugin-minify-css-literal-1.0.3.tgz","_from":"file:arcmantle-vite-plugin-minify-css-literal-1.0.3.tgz","_nodeVersion":"24.4.1","_npmVersion":"11.4.2","dist":{"integrity":"sha512-4rTlf2gx8IC8tDg2rs1H9xrcmORQ9LhkzHW+PHbQBpYL1JzX3V8+cfT9mKwqOz67PEc50qYCo/tz9qOeXhQrsA==","shasum":"e26175677efc01a5ee7eb5e78d5a4234872f5ffd","tarball":"https://registry.npmjs.org/@arcmantle/vite-plugin-minify-css-literal/-/vite-plugin-minify-css-literal-1.0.3.tgz","fileCount":18,"unpackedSize":20832,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDEik7cDg/iPGvI8KhOhgc3FKGQyHmvyuJI3bKy3Pi/aQIhAOQth8+fsD6rcEgxSyQY6vn55EkJt1AOD25F6tEziNO/"}]},"_npmUser":{"name":"roenlie","email":"kristofferroenlie@gmail.com"},"directories":{},"maintainers":[{"name":"roenlie","email":"kristofferroenlie@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vite-plugin-minify-css-literal_1.0.3_1752792937199_0.6348246067942123"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-05T22:40:45.111Z","modified":"2025-07-17T22:55:37.611Z","1.0.0":"2025-07-05T22:40:45.439Z","1.0.1":"2025-07-17T13:11:07.435Z","1.0.2":"2025-07-17T19:46:43.592Z","1.0.3":"2025-07-17T22:55:37.433Z"},"bugs":{"url":"https://github.com/arcmantle/vite-plugin-minify-css-literal/issues"},"author":{"name":"Kristoffer Roen-Lie"},"license":"Apache-2.0","homepage":"https://github.com/arcmantle/vite-plugin-minify-css-literal#readme","repository":{"type":"git","url":"git+https://github.com/arcmantle/vite-plugin-minify-css-literal.git"},"description":"Minifies css literals.","maintainers":[{"name":"roenlie","email":"kristofferroenlie@gmail.com"}],"readme":"# @arcmantle/vite-plugin-minify-css-literal\n\nA Vite plugin that minifies CSS template literals in your TypeScript and JavaScript files, perfect for projects using Lit elements or other libraries that use tagged template literals for CSS.\n\n## Features\n\n- 🔥 **Fast CSS minification** using [Lightning CSS](https://lightningcss.dev/)\n- 🎯 **Targeted processing** - only processes files containing CSS template literals\n- 📦 **Zero runtime overhead** - minification happens at build time\n- 🔍 **Smart detection** - automatically finds and processes `css` tagged template literals\n- 📊 **Build statistics** - reports minification savings after build\n- 🛠️ **TypeScript support** - full TypeScript and decorator support\n- 🎛️ **Configurable** - customizable debug levels and error handling\n\n## Installation\n\n```bash\nnpm install @arcmantle/vite-plugin-minify-css-literal\n```\n\n```bash\npnpm add @arcmantle/vite-plugin-minify-css-literal\n```\n\n```bash\nyarn add @arcmantle/vite-plugin-minify-css-literal\n```\n\n## Usage\n\n### Basic Setup\n\nAdd the plugin to your `vite.config.ts`:\n\n```typescript\nimport { defineConfig } from 'vite';\nimport { minifyCssLiteral } from '@arcmantle/vite-plugin-minify-css-literal';\n\nexport default defineConfig({\n  plugins: [\n    minifyCssLiteral(),\n    // ... other plugins\n  ],\n});\n```\n\n### With Options\n\n```typescript\nimport { defineConfig } from 'vite';\nimport { minifyCssLiteral } from '@arcmantle/vite-plugin-minify-css-literal';\n\nexport default defineConfig({\n  plugins: [\n    minifyCssLiteral('error'), // Enable error logging\n    // ... other plugins\n  ],\n});\n```\n\n## What It Does\n\nThe plugin automatically detects and minifies CSS content within tagged template literals:\n\n### Before Minification\n\n```typescript\nimport { css, LitElement } from 'lit';\n\nclass MyElement extends LitElement {\n  static styles = css`\n    /* Box sizing rules */\n    *,\n    *::before,\n    *::after {\n      box-sizing: border-box;\n    }\n\n    /* Set core body defaults */\n    body {\n      min-height: 100vh;\n      line-height: 1.5;\n    }\n  `;\n}\n```\n\n### After Minification\n\n```typescript\nimport { css, LitElement } from 'lit';\n\nclass MyElement extends LitElement {\n  static styles = css`*,*::before,*::after{box-sizing:border-box}body{min-height:100vh;line-height:1.5}`;\n}\n```\n\n## API\n\n### `minifyCssLiteral(debugLevel?)`\n\n#### Parameters\n\n- **`debugLevel`** (optional): `'error' | 'silent'`\n  - `'silent'` (default): Suppresses error messages\n  - `'error'`: Shows error messages when CSS minification fails\n\n#### Returns\n\nA Vite plugin object.\n\n### `minifyCssAssets(dir?)`\n\nAn additional plugin for minifying CSS asset files in the build output.\n\n#### Parameters for minifyCssAssets\n\n- **`dir`** (optional): `string`\n  - Custom directory to search for CSS files (defaults to `config.build.outDir`)\n\n#### Example Usage\n\n```typescript\nimport { defineConfig } from 'vite';\nimport { minifyCssLiteral, minifyCssAssets } from '@arcmantle/vite-plugin-minify-css-literal';\n\nexport default defineConfig({\n  plugins: [\n    minifyCssLiteral(),\n    minifyCssAssets(), // Minifies CSS files in build output\n  ],\n});\n```\n\n## How It Works\n\n1. **File Detection**: The plugin scans TypeScript and JavaScript files (`.ts`, `.js`) for the presence of CSS template literals\n2. **AST Parsing**: Uses Babel parser to create an Abstract Syntax Tree of your code\n3. **Template Literal Detection**: Traverses the AST to find tagged template expressions using the `css` identifier\n4. **CSS Minification**: Processes each CSS template literal with Lightning CSS minifier\n5. **Code Transformation**: Replaces the original CSS with the minified version using MagicString\n6. **Source Maps**: Generates accurate source maps for debugging\n\n## Build Output\n\nAfter a successful build, you'll see statistics about the minification:\n\n```text\n@arcmantle/vite-plugin-minify-css-literal\nMinified css literals by 1247 characters.\nBefore minify: 2156.\nAfter minify: 909\n```\n\n## Supported Syntax\n\nThe plugin supports:\n\n- ✅ Tagged template literals with `css` identifier\n- ✅ TypeScript and JavaScript files\n- ✅ ES6 modules and imports\n- ✅ Decorators (legacy syntax)\n- ✅ Import attributes\n- ✅ Nested template expressions\n\n## Development Mode\n\nThe plugin automatically skips processing in development mode to maintain fast build times and preserve readable CSS for debugging.\n\n## Requirements\n\n- Node.js >= 22\n- Vite >= 7.0.0\n- TypeScript support for TypeScript projects\n\n## Dependencies\n\n- **@babel/parser**: JavaScript/TypeScript parsing for AST generation\n- **@babel/traverse**: AST traversal for finding tagged template literals\n- **@babel/types**: TypeScript definitions for Babel AST nodes\n- **lightningcss**: Fast CSS minification and optimization\n- **magic-string**: Efficient string manipulation with source maps\n\n## License\n\nApache-2.0\n\n## Contributing\n\nThis package is part of the Arcmantle Weave monorepo. Contributions are welcome!\n","readmeFilename":"README.md"}