Skip to content

Commit 40e7747

Browse files
SisyphusZhengdeno-deploy[bot]iuioiuamarvinhagemeister
authored
feat: update the tailwind plugin to suuport tailwindv4 #2819 (#2903)
Inspired by #2819, #2829, and https://github.com/pakornv/fresh-plugin-tailwindcss, I made minimal modifications to the plugin-tailwind, I originally intended to update based on #2829, but I was informed by the system that I couldn't push. Due to the breaking changes in Tailwind v4, some PostCSS plugins are no longer required. Additionally, I updated the syntax in the /www directory. The /www directory now uses the updated plugin supported by Tailwind v4.I think this has made initial progress. # What This PR Solves The Tailwind plugin has been updated to support Tailwind v4, and it is currently functioning well both in the repository's www directory and in the initialized project which for test. ## --patch-1 ### 1. Dependency Optimization - Removed `cssnano` dependency, using Tailwind v4's built-in optimization(Based on @csvn 's suggestion) - Removed `autoprefixer` dependency - Updated `tailwind-plugin` version number ### 2. Build Configuration Adjustments - Added `--node-modules-dir` parameter to `/www` task for Tailwind v4 support (Based on @marvinhagemeister 's suggestion) - Added `--allow-scripts` parameter to enable `@tailwindcss/oxide` execution ### 3. Code Adaptation - Modified Tailwind-related code in `/www` to support Tailwind v4 - Updated dependency configuration in `deno.json` ### 4. Feature Restoration - Added `imagescript` and `astral` dependencies to restore screenshot functionality lost in previous PR updates - Fixed the issue where the `tailwind-plugin` dependency was incorrectly pointing to the JSR package instead of the local repository source code in previous PR. ## --patch-2 - Upgraded Tailwind CSS to the latest version. - Removed unnecessary dependencies. - Enabled CSS minification by default when Fresh is in production mode. - Updated docs/canary/examples/migration-guide.md to support the new Tailwind plugin format. - Updated init/src/init.ts to support the new Tailwind version and plugin version, use new `@import "tailwindcss"`, and generate the new plugin format. - Updated init/src/init_test.ts: tests now expect `css` to match `/tailwindcss/` instead of `/@tailwind/`. - Removed plugin-tailwindcss/src/types.ts as it is no longer needed, and updated plugin-tailwindcss/src/mod.ts and www/dev.ts to support the new format. Co-authored-by: Asher Gomez <ashersaupingomez@gmail.com> ## --patch-3 Addressing @marvinhagemeister feedback, this patch reverts the unintended loss of PR #2960's changes caused by merge conflicts. ## --patch-4 I initialized a project according to the migration documentation and used @fresh/update to test whether the plugin works properly with v2-alpha-34. The results show that it works fine. - The plugin is published at jsr:@freshpress/fresh-plugin-tailwind@0.0.1-alpha.8. - The test project is published at https://github.com/SisyphusZheng/fresh-project-test/tree/main/fresh-project. # How Testing Was Conducted ## Local Environment Testing 1. Environment Cleanup ```bash rm -rf ./.cache/deno deno.lock node_modules ``` 2. Test Execution ```bash deno task www ``` 3. Result Verification - Checked functionality in local `/www` environment - Confirmed all features working properly ## Code Inspection - Passed `deno task ok` check ## This forked /www website is hosted and running on GitHub Codespaces, with support for the latest code changes. You can check it out at: https://silver-trout-pjr4jw7xx5x9299x6-8000.app.github.dev/ --------- Co-authored-by: 李嘉图·M·路 <146103794+Ricardo-M-Zheng@users.noreply.github.com> Co-authored-by: deno-deploy[bot] <75045203+deno-deploy[bot]@users.noreply.github.com> Co-authored-by: Asher Gomez <ashersaupingomez@gmail.com> Co-authored-by: Marvin Hagemeister <marvin@deno.com>
1 parent d5a2afd commit 40e7747

File tree

13 files changed

+412
-1040
lines changed

13 files changed

+412
-1040
lines changed

deno.json

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@
4848
"@std/uuid": "jsr:@std/uuid@^1.0.7",
4949
"fresh": "jsr:@fresh/core@^2.0.0-alpha.29",
5050
"preact": "npm:preact@^10.26.6",
51+
"@preact/signals": "npm:@preact/signals@^2.0.4",
5152
"preact-render-to-string": "npm:preact-render-to-string@^6.5.11",
5253
"$ga4": "https://raw.githubusercontent.com/denoland/ga4/main/mod.ts",
5354
"@luca/esbuild-deno-loader": "jsr:@luca/esbuild-deno-loader@^0.11.0",
5455
"@opentelemetry/api": "npm:@opentelemetry/api@^1.9.0",
55-
"@preact/signals": "npm:@preact/signals@^2.0.4",
5656
"esbuild": "npm:esbuild@0.25.4",
5757
"esbuild-wasm": "npm:esbuild-wasm@0.25.4",
5858
"@std/crypto": "jsr:@std/crypto@1",
@@ -66,27 +66,25 @@
6666
"@std/path": "jsr:@std/path@1",
6767
"@std/semver": "jsr:@std/semver@1",
6868
"@std/streams": "jsr:@std/streams@1",
69-
7069
"@astral/astral": "jsr:@astral/astral@^0.5.3",
7170
"@marvinh-test/fresh-island": "jsr:@marvinh-test/fresh-island@^0.0.1",
7271
"linkedom": "npm:linkedom@^0.18.10",
7372
"@std/async": "jsr:@std/async@^1.0.13",
7473
"@std/expect": "jsr:@std/expect@^1.0.16",
7574
"@std/testing": "jsr:@std/testing@^1.0.12",
7675

77-
"autoprefixer": "npm:autoprefixer@10.4.17",
78-
"cssnano": "npm:cssnano@6.0.3",
79-
"postcss": "npm:postcss@8.4.35",
80-
"tailwindcss": "npm:tailwindcss@^3.4.1",
81-
76+
"@tailwindcss/postcss": "npm:@tailwindcss/postcss@^4.1.7",
77+
"@tailwindcss/oxide": "npm:@tailwindcss/oxide@^4.1.7",
78+
"postcss": "npm:postcss@8.5.3",
79+
"tailwindcss": "npm:tailwindcss@^4.1.7",
8280
"ts-morph": "npm:ts-morph@^25.0.1",
83-
84-
"@fresh/plugin-tailwind": "jsr:@fresh/plugin-tailwind@^0.0.1-alpha.7",
81+
"@fresh/plugin-tailwind": "./plugin-tailwindcss/src/mod.ts",
8582
"@std/front-matter": "jsr:@std/front-matter@^1.0.5",
8683
"fresh/compat": "./src/compat/mod.ts",
8784
"fresh/dev": "./src/dev/mod.ts",
8885
"fresh/runtime": "./src/runtime/shared.ts",
8986
"github-slugger": "npm:github-slugger@^2.0.0",
87+
"imagescript": "https://deno.land/x/imagescript@1.3.0/mod.ts",
9088
"marked": "npm:marked@^15.0.11",
9189
"marked-mangle": "npm:marked-mangle@^1.1.9",
9290
"prismjs": "npm:prismjs@^1.29.0"

0 commit comments

Comments
 (0)