Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/tidy-engine-package.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@tailwindcss-mangle/engine": minor
"tailwindcss-patch": minor
---

新增独立的 Tailwind CSS 引擎包,承载候选类名提取、Tailwind v3/v4 样式生成、v4 source 扫描与 bare arbitrary value 解析能力。

`tailwindcss-patch` 现在通过 `@tailwindcss-mangle/engine` 复用这些能力,并保留原有公共导出兼容性;同时将 Node.js 版本要求提升到 `>=22.13.0`。
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"build:docs": "turbo run build --filter=./website",
"lint": "eslint \"packages/**/*.ts\" packages/tailwindcss-patch/tsdown.config.mts \"e2e/**/*.ts\" scripts/check-package-boundaries.mjs --ignore-pattern \"packages/**/bench/**\" --ignore-pattern \"packages/**/test-d/**\" --fix",
"preinstall": "npx only-allow pnpm",
"sync": "cnpm sync @tailwindcss-mangle/shared @tailwindcss-mangle/config tailwindcss-patch unplugin-tailwindcss-mangle @tailwindcss-mangle/core",
"sync": "cnpm sync @tailwindcss-mangle/shared @tailwindcss-mangle/config @tailwindcss-mangle/engine tailwindcss-patch unplugin-tailwindcss-mangle @tailwindcss-mangle/core",
"publish-packages": "pnpm run build && pnpm run test && changeset version && changeset publish",
"-------": "-----------",
"release": "changeset",
Expand Down
248 changes: 248 additions & 0 deletions packages/engine/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
{
"name": "@tailwindcss-mangle/engine",
"type": "module",
"version": "0.0.0",
"description": "Tailwind CSS candidate extraction and style generation engine for tailwindcss-mangle",
"author": "ice breaker <1324318532@qq.com>",
"license": "MIT",
"engines": {
"node": ">=22.13.0"
},
"homepage": "https://mangle.icebreaker.top/",
"repository": {
"type": "git",
"url": "git+https://github.com/sonofmagic/tailwindcss-mangle.git",
"directory": "packages/engine"
},
"bugs": {
"url": "https://github.com/sonofmagic/tailwindcss-mangle/issues"
},
"keywords": [
"tailwindcss",
"engine",
"extract",
"class",
"mangle"
],
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./src/index.ts",
"require": "./dist/index.cjs"
},
"./style-candidates": {
"types": "./dist/style-candidates.d.ts",
"import": "./src/style-candidates.ts",
"require": "./dist/style-candidates.cjs"
},
"./style-generator": {
"types": "./dist/style-generator.d.ts",
"import": "./src/style-generator.ts",
"require": "./dist/style-generator.cjs"
},
"./types": {
"types": "./dist/types.d.ts",
"import": "./src/types.ts",
"require": "./dist/types.cjs"
},
"./extraction/candidate-extractor": {
"types": "./dist/extraction/candidate-extractor.d.ts",
"import": "./src/extraction/candidate-extractor.ts",
"require": "./dist/extraction/candidate-extractor.cjs"
},
"./extraction/split-candidate-tokens": {
"types": "./dist/extraction/split-candidate-tokens.d.ts",
"import": "./src/extraction/split-candidate-tokens.ts",
"require": "./dist/extraction/split-candidate-tokens.cjs"
},
"./v3": {
"types": "./dist/v3/index.d.ts",
"import": "./src/v3/index.ts",
"require": "./dist/v3/index.cjs"
},
"./v3/style-generator": {
"types": "./dist/v3/style-generator.d.ts",
"import": "./src/v3/style-generator.ts",
"require": "./dist/v3/style-generator.cjs"
},
"./v4": {
"types": "./dist/v4/index.d.ts",
"import": "./src/v4/index.ts",
"require": "./dist/v4/index.cjs"
},
"./v4/bare-arbitrary-values": {
"types": "./dist/v4/bare-arbitrary-values.d.ts",
"import": "./src/v4/bare-arbitrary-values.ts",
"require": "./dist/v4/bare-arbitrary-values.cjs"
},
"./v4/candidates": {
"types": "./dist/v4/candidates.d.ts",
"import": "./src/v4/candidates.ts",
"require": "./dist/v4/candidates.cjs"
},
"./v4/engine": {
"types": "./dist/v4/engine.d.ts",
"import": "./src/v4/engine.ts",
"require": "./dist/v4/engine.cjs"
},
"./v4/node-adapter": {
"types": "./dist/v4/node-adapter.d.ts",
"import": "./src/v4/node-adapter.ts",
"require": "./dist/v4/node-adapter.cjs"
},
"./v4/source": {
"types": "./dist/v4/source.d.ts",
"import": "./src/v4/source.ts",
"require": "./dist/v4/source.cjs"
},
"./v4/source-scan": {
"types": "./dist/v4/source-scan.d.ts",
"import": "./src/v4/source-scan.ts",
"require": "./dist/v4/source-scan.cjs"
},
"./v4/style-generator": {
"types": "./dist/v4/style-generator.d.ts",
"import": "./src/v4/style-generator.ts",
"require": "./dist/v4/style-generator.cjs"
},
"./v4/types": {
"types": "./dist/v4/types.d.ts",
"import": "./src/v4/types.ts",
"require": "./dist/v4/types.cjs"
}
},
"main": "./dist/index.cjs",
"module": "./src/index.ts",
"types": "./dist/index.d.ts",
"typesVersions": {
"*": {
"*": [
"./dist/*",
"./dist/index.d.ts"
]
}
},
"files": [
"dist"
],
"scripts": {
"dev": "tsdown --watch --sourcemap",
"build": "tsdown",
"test": "vitest run --coverage.enabled",
"test:dev": "vitest",
"test:types": "pnpm build && tsd --typings dist/index.d.ts --files test-d/**/*.test-d.ts"
},
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"require": "./dist/index.cjs"
},
"./style-candidates": {
"types": "./dist/style-candidates.d.ts",
"import": "./dist/style-candidates.js",
"require": "./dist/style-candidates.cjs"
},
"./style-generator": {
"types": "./dist/style-generator.d.ts",
"import": "./dist/style-generator.js",
"require": "./dist/style-generator.cjs"
},
"./types": {
"types": "./dist/types.d.ts",
"import": "./dist/types.js",
"require": "./dist/types.cjs"
},
"./extraction/candidate-extractor": {
"types": "./dist/extraction/candidate-extractor.d.ts",
"import": "./dist/extraction/candidate-extractor.js",
"require": "./dist/extraction/candidate-extractor.cjs"
},
"./extraction/split-candidate-tokens": {
"types": "./dist/extraction/split-candidate-tokens.d.ts",
"import": "./dist/extraction/split-candidate-tokens.js",
"require": "./dist/extraction/split-candidate-tokens.cjs"
},
"./v3": {
"types": "./dist/v3/index.d.ts",
"import": "./dist/v3/index.js",
"require": "./dist/v3/index.cjs"
},
"./v3/style-generator": {
"types": "./dist/v3/style-generator.d.ts",
"import": "./dist/v3/style-generator.js",
"require": "./dist/v3/style-generator.cjs"
},
"./v4": {
"types": "./dist/v4/index.d.ts",
"import": "./dist/v4/index.js",
"require": "./dist/v4/index.cjs"
},
"./v4/bare-arbitrary-values": {
"types": "./dist/v4/bare-arbitrary-values.d.ts",
"import": "./dist/v4/bare-arbitrary-values.js",
"require": "./dist/v4/bare-arbitrary-values.cjs"
},
"./v4/candidates": {
"types": "./dist/v4/candidates.d.ts",
"import": "./dist/v4/candidates.js",
"require": "./dist/v4/candidates.cjs"
},
"./v4/engine": {
"types": "./dist/v4/engine.d.ts",
"import": "./dist/v4/engine.js",
"require": "./dist/v4/engine.cjs"
},
"./v4/node-adapter": {
"types": "./dist/v4/node-adapter.d.ts",
"import": "./dist/v4/node-adapter.js",
"require": "./dist/v4/node-adapter.cjs"
},
"./v4/source": {
"types": "./dist/v4/source.d.ts",
"import": "./dist/v4/source.js",
"require": "./dist/v4/source.cjs"
},
"./v4/source-scan": {
"types": "./dist/v4/source-scan.d.ts",
"import": "./dist/v4/source-scan.js",
"require": "./dist/v4/source-scan.cjs"
},
"./v4/style-generator": {
"types": "./dist/v4/style-generator.d.ts",
"import": "./dist/v4/style-generator.js",
"require": "./dist/v4/style-generator.cjs"
},
"./v4/types": {
"types": "./dist/v4/types.d.ts",
"import": "./dist/v4/types.js",
"require": "./dist/v4/types.cjs"
}
},
"main": "./dist/index.cjs",
"module": "./dist/index.js",
"types": "./dist/index.d.ts"
},
"peerDependencies": {
"tailwindcss": ">=2.0.0"
},
"peerDependenciesMeta": {
"tailwindcss": {
"optional": true
}
},
"dependencies": {
"@tailwindcss/node": "^4.3.1",
"@tailwindcss/oxide": "^4.3.1",
"micromatch": "^4.0.8",
"pathe": "^2.0.3",
"postcss": "^8.5.15"
},
"devDependencies": {
"tailwindcss": "^4.3.1",
"tailwindcss-3": "catalog:tailwindcss3"
}
}
Loading
Loading