mirror of
https://github.com/tailwindlabs/tailwindcss.git
synced 2025-12-08 21:36:08 +00:00
Closes #18381 * [Changelog for Vite 7.0.0 (2025-06-24)](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md#700-2025-06-24) Starting from Vite 7, Node 18 support will be dropped, which doesn't really affect Tailwind. It might be worth mentioning in the documentation that the recommended minimum Node versions are 20.19 and 22.12. Vite 7 is only available in ESM format, which is also not an issue. Vite's browser support aligns with the v4 guidelines: ``` Chrome 87 → 107 (tw: 111) Edge 88 → 107 (tw: 111) Firefox 78 → 104 (tw: 128) Safari 14.0 → 16.0 (tw: 16.4) ``` * [Vite 7 - Browser Support](https://vite.dev/guide/migration.html#default-browser-target-change) * [Tailwind CSS v4 - Browser Support](https://tailwindcss.com/docs/compatibility#browser-support) So, at first glance, there's nothing more to do except enabling support for these versions. --------- Co-authored-by: Jordan Pittman <jordan@cryptica.me>
169 lines
3.7 KiB
TypeScript
169 lines
3.7 KiB
TypeScript
import { candidate, css, html, json, test, ts } from '../utils'
|
|
|
|
const WORKSPACE = {
|
|
'index.html': html`
|
|
<body>
|
|
<div id="app"></div>
|
|
<script type="module" src="./src/index.ts"></script>
|
|
</body>
|
|
`,
|
|
'src/index.css': css`@import 'tailwindcss';`,
|
|
'src/index.ts': ts`
|
|
import './index.css'
|
|
|
|
document.querySelector('#app').innerHTML = \`
|
|
<div class="underline m-2">Hello, world!</div>
|
|
\`
|
|
`,
|
|
'server.ts': ts`
|
|
import css from './src/index.css?url'
|
|
|
|
document.querySelector('#app').innerHTML = \`
|
|
<link rel="stylesheet" href="\${css}">
|
|
<div class="overline m-3">Hello, world!</div>
|
|
\`
|
|
`,
|
|
}
|
|
|
|
test(
|
|
'Vite 5',
|
|
{
|
|
fs: {
|
|
'package.json': json`
|
|
{
|
|
"type": "module",
|
|
"dependencies": {
|
|
"@tailwindcss/vite": "workspace:^",
|
|
"tailwindcss": "workspace:^"
|
|
},
|
|
"_comment": "This test uses Vite 5.3 on purpose. Do not upgrade it to Vite 6.",
|
|
"devDependencies": {
|
|
"vite": "^5.3"
|
|
}
|
|
}
|
|
`,
|
|
'vite.config.ts': ts`
|
|
import tailwindcss from '@tailwindcss/vite'
|
|
import { defineConfig } from 'vite'
|
|
|
|
export default defineConfig({
|
|
build: {
|
|
cssMinify: false,
|
|
ssrEmitAssets: true,
|
|
},
|
|
plugins: [tailwindcss()],
|
|
})
|
|
`,
|
|
...WORKSPACE,
|
|
},
|
|
},
|
|
async ({ fs, exec, expect }) => {
|
|
await exec('pnpm vite build --ssr server.ts')
|
|
|
|
let files = await fs.glob('dist/**/*.css')
|
|
expect(files).toHaveLength(1)
|
|
let [filename] = files[0]
|
|
|
|
await fs.expectFileToContain(filename, [
|
|
candidate`underline`,
|
|
candidate`m-2`,
|
|
candidate`overline`,
|
|
candidate`m-3`,
|
|
])
|
|
},
|
|
)
|
|
|
|
test(
|
|
`Vite 6`,
|
|
{
|
|
fs: {
|
|
'package.json': json`
|
|
{
|
|
"type": "module",
|
|
"dependencies": {
|
|
"@tailwindcss/vite": "workspace:^",
|
|
"tailwindcss": "workspace:^"
|
|
},
|
|
"devDependencies": {
|
|
"vite": "^6.0"
|
|
}
|
|
}
|
|
`,
|
|
'vite.config.ts': ts`
|
|
import tailwindcss from '@tailwindcss/vite'
|
|
import { defineConfig } from 'vite'
|
|
|
|
export default defineConfig({
|
|
build: {
|
|
cssMinify: false,
|
|
ssrEmitAssets: true,
|
|
},
|
|
plugins: [tailwindcss()],
|
|
})
|
|
`,
|
|
...WORKSPACE,
|
|
},
|
|
},
|
|
async ({ fs, exec, expect }) => {
|
|
await exec('pnpm vite build --ssr server.ts')
|
|
|
|
let files = await fs.glob('dist/**/*.css')
|
|
expect(files).toHaveLength(1)
|
|
let [filename] = files[0]
|
|
|
|
await fs.expectFileToContain(filename, [
|
|
candidate`underline`,
|
|
candidate`m-2`,
|
|
candidate`overline`,
|
|
candidate`m-3`,
|
|
])
|
|
},
|
|
)
|
|
|
|
test(
|
|
`Vite 7`,
|
|
{
|
|
fs: {
|
|
'package.json': json`
|
|
{
|
|
"type": "module",
|
|
"dependencies": {
|
|
"@tailwindcss/vite": "workspace:^",
|
|
"tailwindcss": "workspace:^"
|
|
},
|
|
"devDependencies": {
|
|
"vite": "^7"
|
|
}
|
|
}
|
|
`,
|
|
'vite.config.ts': ts`
|
|
import tailwindcss from '@tailwindcss/vite'
|
|
import { defineConfig } from 'vite'
|
|
|
|
export default defineConfig({
|
|
build: {
|
|
cssMinify: false,
|
|
ssrEmitAssets: true,
|
|
},
|
|
plugins: [tailwindcss()],
|
|
})
|
|
`,
|
|
...WORKSPACE,
|
|
},
|
|
},
|
|
async ({ fs, exec, expect }) => {
|
|
await exec('pnpm vite build --ssr server.ts')
|
|
|
|
let files = await fs.glob('dist/**/*.css')
|
|
expect(files).toHaveLength(1)
|
|
let [filename] = files[0]
|
|
|
|
await fs.expectFileToContain(filename, [
|
|
candidate`underline`,
|
|
candidate`m-2`,
|
|
candidate`overline`,
|
|
candidate`m-3`,
|
|
])
|
|
},
|
|
)
|