feat: add css key to vite config (#518)

This commit is contained in:
Jacob Marshall
2025-02-08 15:01:26 +00:00
committed by GitHub
parent ebe1abe422
commit 0f72506f95
9 changed files with 99 additions and 55 deletions
@@ -45,6 +45,13 @@ Useful for configuring custom source alias paths during imports
- `Array<{ find: string | RegExp, replacement: string, customResolver?: ResolverFunction | ResolverObject }>`
- [Vite documentation: resolve.alias](https://vite.dev/config/shared-options#resolve-alias)
### `vite.css `
Config object for managing CSS behavior and integration with preprocessors (e.g., Sass, Less, etc.)
- Type: `CSSOptions`
- [Vite documentation: css](https://vite.dev/config/shared-options#css-modules)
### `vite.optimizeDeps`
Vite's dependency optimizer used only during dev
@@ -47,7 +47,7 @@
"@babel/core": "^7.24.4",
"@babel/types": "^7.24.0",
"prettier": "^3.2.4",
"vite": "^5.2.12"
"vite": "^5.4.14"
},
"devDependencies": {
"@tanstack/config": "0.7.13",
+1 -1
View File
@@ -56,7 +56,7 @@
"@vitejs/plugin-react-swc": "3.7.2",
"happy-dom": "16.8.1",
"react": "19.0.0",
"vite": "5.4.12",
"vite": "5.4.14",
"vitest": "2.1.9"
}
}
+1 -1
View File
@@ -100,7 +100,7 @@
"fast-text-encoding": "^1.0.6",
"tuono-fs-router-vite-plugin": "workspace:*",
"tuono-router": "workspace:*",
"vite": "^5.2.12",
"vite": "^5.4.14",
"web-streams-polyfill": "^4.0.0"
},
"devDependencies": {
@@ -16,7 +16,12 @@ describe('normalizeConfig', () => {
expect(normalizeConfig(config)).toStrictEqual({
server: { host: 'localhost', port: 3000 },
vite: { alias: undefined, optimizeDeps: undefined, plugins: [] },
vite: {
alias: undefined,
css: undefined,
optimizeDeps: undefined,
plugins: [],
},
})
})
@@ -24,7 +29,12 @@ describe('normalizeConfig', () => {
// @ts-expect-error testing invalid config
expect(normalizeConfig({ invalid: true })).toStrictEqual({
server: { host: 'localhost', port: 3000 },
vite: { alias: undefined, optimizeDeps: undefined, plugins: [] },
vite: {
alias: undefined,
css: undefined,
optimizeDeps: undefined,
plugins: [],
},
})
})
@@ -114,22 +124,40 @@ describe('normalizeConfig', () => {
expect.objectContaining({
vite: expect.objectContaining({
alias: [
{
find: '1',
replacement: '@tabler/icons-react-fun',
},
{
find: '2',
replacement: path.join(PROCESS_CWD_MOCK, 'src'),
},
{
find: '3',
replacement: 'file://pluto',
},
{ find: '1', replacement: '@tabler/icons-react-fun' },
{ find: '2', replacement: path.join(PROCESS_CWD_MOCK, 'src') },
{ find: '3', replacement: 'file://pluto' },
],
}) as unknown,
}),
)
})
})
describe('vite - css config', () => {
it('should have css undefined if not provided', () => {
const config: TuonoConfig = {}
expect(normalizeConfig(config).vite).toHaveProperty('css', undefined)
})
it('should preserve the css configuration as provided by the user', () => {
const cssConfig = {
preprocessorOptions: {
scss: { additionalData: '$color: red;' },
},
}
const config: TuonoConfig = {
vite: { css: cssConfig },
}
expect(normalizeConfig(config)).toStrictEqual(
expect.objectContaining({
vite: expect.objectContaining({
css: cssConfig,
}) as unknown,
}),
)
})
})
})
@@ -75,6 +75,7 @@ export const normalizeConfig = (config: TuonoConfig): InternalTuonoConfig => {
},
vite: {
alias: normalizeViteAlias(config.vite?.alias),
css: config.vite?.css,
optimizeDeps: config.vite?.optimizeDeps,
plugins: config.vite?.plugins ?? [],
},
+2
View File
@@ -50,6 +50,8 @@ function createBaseViteConfigFromTuonoConfig(
alias: tuonoConfig.vite?.alias ?? {},
},
css: tuonoConfig.vite?.css,
optimizeDeps: tuonoConfig.vite?.optimizeDeps,
plugins: [
+7 -1
View File
@@ -1,4 +1,9 @@
import type { AliasOptions, DepOptimizationOptions, PluginOption } from 'vite'
import type {
AliasOptions,
DepOptimizationOptions,
PluginOption,
CSSOptions,
} from 'vite'
/**
* @see http://tuono.dev/documentation/configuration
@@ -10,6 +15,7 @@ export interface TuonoConfig {
}
vite?: {
alias?: AliasOptions
css?: CSSOptions
optimizeDeps?: DepOptimizationOptions
plugins?: Array<PluginOption>
}
+37 -37
View File
@@ -173,7 +173,7 @@ importers:
dependencies:
'@tailwindcss/vite':
specifier: ^4.0.0-beta.9
version: 4.0.0-beta.9(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
version: 4.0.0-beta.9(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
react:
specifier: ^19.0.0
version: 19.0.0
@@ -213,7 +213,7 @@ importers:
version: 5.0.5(rollup@4.31.0)
'@vitejs/plugin-react-swc':
specifier: ^3.7.0
version: 3.7.2(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
version: 3.7.2(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
fast-text-encoding:
specifier: ^1.0.6
version: 1.0.6
@@ -224,15 +224,15 @@ importers:
specifier: workspace:*
version: link:../tuono-router
vite:
specifier: ^5.2.12
version: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
specifier: ^5.4.14
version: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
web-streams-polyfill:
specifier: ^4.0.0
version: 4.0.0
devDependencies:
'@tanstack/config':
specifier: 0.7.13
version: 0.7.13(@types/node@22.13.0)(esbuild@0.21.5)(rollup@4.31.0)(typescript@5.7.3)(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
version: 0.7.13(@types/node@22.13.0)(esbuild@0.21.5)(rollup@4.31.0)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
'@types/babel__core':
specifier: 7.20.5
version: 7.20.5
@@ -270,12 +270,12 @@ importers:
specifier: ^3.2.4
version: 3.4.2
vite:
specifier: ^5.2.12
version: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
specifier: ^5.4.14
version: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
devDependencies:
'@tanstack/config':
specifier: 0.7.13
version: 0.7.13(@types/node@22.13.0)(esbuild@0.21.5)(rollup@4.31.0)(typescript@5.7.3)(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
version: 0.7.13(@types/node@22.13.0)(esbuild@0.21.5)(rollup@4.31.0)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
'@types/babel__core':
specifier: 7.20.5
version: 7.20.5
@@ -291,7 +291,7 @@ importers:
devDependencies:
'@tanstack/config':
specifier: 0.7.13
version: 0.7.13(@types/node@22.13.0)(esbuild@0.21.5)(rollup@4.31.0)(typescript@5.7.3)(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
version: 0.7.13(@types/node@22.13.0)(esbuild@0.21.5)(rollup@4.31.0)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
'@testing-library/react':
specifier: 16.2.0
version: 16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
@@ -300,7 +300,7 @@ importers:
version: 19.0.8
'@vitejs/plugin-react-swc':
specifier: 3.7.2
version: 3.7.2(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
version: 3.7.2(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
happy-dom:
specifier: 16.8.1
version: 16.8.1
@@ -308,8 +308,8 @@ importers:
specifier: 19.0.0
version: 19.0.0
vite:
specifier: 5.4.12
version: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
specifier: 5.4.14
version: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vitest:
specifier: 2.1.9
version: 2.1.9(@types/node@22.13.0)(happy-dom@16.8.1)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
@@ -3340,8 +3340,8 @@ packages:
vite:
optional: true
vite@5.4.12:
resolution: {integrity: sha512-KwUaKB27TvWwDJr1GjjWthLMATbGEbeWYZIbGZ5qFIsgPP3vWzLu4cVooqhm5/Z2SPDUMjyPVjTztm5tYKwQxA==}
vite@5.4.14:
resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -4123,15 +4123,15 @@ snapshots:
'@tailwindcss/oxide-win32-arm64-msvc': 4.0.0-beta.9
'@tailwindcss/oxide-win32-x64-msvc': 4.0.0-beta.9
'@tailwindcss/vite@4.0.0-beta.9(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))':
'@tailwindcss/vite@4.0.0-beta.9(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))':
dependencies:
'@tailwindcss/node': 4.0.0-beta.9
'@tailwindcss/oxide': 4.0.0-beta.9
lightningcss: 1.29.1
tailwindcss: 4.0.0-beta.9
vite: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vite: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
'@tanstack/config@0.7.13(@types/node@22.13.0)(esbuild@0.21.5)(rollup@4.31.0)(typescript@5.7.3)(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))':
'@tanstack/config@0.7.13(@types/node@22.13.0)(esbuild@0.21.5)(rollup@4.31.0)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))':
dependencies:
'@commitlint/parse': 19.5.0
commander: 12.1.0
@@ -4145,9 +4145,9 @@ snapshots:
semver: 7.6.3
simple-git: 3.27.0
v8flags: 4.0.1
vite-plugin-dts: 3.9.1(@types/node@22.13.0)(rollup@4.31.0)(typescript@5.7.3)(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
vite-plugin-externalize-deps: 0.8.0(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
vite-tsconfig-paths: 4.3.2(typescript@5.7.3)(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
vite-plugin-dts: 3.9.1(@types/node@22.13.0)(rollup@4.31.0)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
vite-plugin-externalize-deps: 0.8.0(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
vite-tsconfig-paths: 4.3.2(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
transitivePeerDependencies:
- '@types/node'
- esbuild
@@ -4331,10 +4331,10 @@ snapshots:
'@ungap/structured-clone@1.2.0': {}
'@vitejs/plugin-react-swc@3.7.2(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))':
'@vitejs/plugin-react-swc@3.7.2(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))':
dependencies:
'@swc/core': 1.9.3
vite: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vite: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
transitivePeerDependencies:
- '@swc/helpers'
@@ -4345,13 +4345,13 @@ snapshots:
chai: 5.1.2
tinyrainbow: 1.2.0
'@vitest/mocker@2.1.9(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))':
'@vitest/mocker@2.1.9(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))':
dependencies:
'@vitest/spy': 2.1.9
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
vite: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vite: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
'@vitest/pretty-format@2.1.9':
dependencies:
@@ -6824,7 +6824,7 @@ snapshots:
'@babel/core': 7.26.0
'@babel/types': 7.26.3
prettier: 3.4.2
vite: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vite: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
transitivePeerDependencies:
- '@types/node'
- less
@@ -6849,13 +6849,13 @@ snapshots:
'@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
'@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0)
'@rollup/plugin-inject': 5.0.5(rollup@4.31.0)
'@vitejs/plugin-react-swc': 3.7.2(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
'@vitejs/plugin-react-swc': 3.7.2(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
fast-text-encoding: 1.0.6
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
tuono-fs-router-vite-plugin: 0.17.7(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
tuono-router: 0.17.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
vite: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vite: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
web-streams-polyfill: 4.0.0
transitivePeerDependencies:
- '@swc/helpers'
@@ -7066,7 +7066,7 @@ snapshots:
debug: 4.4.0
es-module-lexer: 1.6.0
pathe: 1.1.2
vite: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vite: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
transitivePeerDependencies:
- '@types/node'
- less
@@ -7078,7 +7078,7 @@ snapshots:
- supports-color
- terser
vite-plugin-dts@3.9.1(@types/node@22.13.0)(rollup@4.31.0)(typescript@5.7.3)(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))):
vite-plugin-dts@3.9.1(@types/node@22.13.0)(rollup@4.31.0)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))):
dependencies:
'@microsoft/api-extractor': 7.43.0(@types/node@22.13.0)
'@rollup/pluginutils': 5.1.3(rollup@4.31.0)
@@ -7089,28 +7089,28 @@ snapshots:
typescript: 5.7.3
vue-tsc: 1.8.27(typescript@5.7.3)
optionalDependencies:
vite: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vite: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
transitivePeerDependencies:
- '@types/node'
- rollup
- supports-color
vite-plugin-externalize-deps@0.8.0(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))):
vite-plugin-externalize-deps@0.8.0(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))):
dependencies:
vite: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vite: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vite-tsconfig-paths@4.3.2(typescript@5.7.3)(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))):
vite-tsconfig-paths@4.3.2(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))):
dependencies:
debug: 4.4.0
globrex: 0.1.2
tsconfck: 3.1.4(typescript@5.7.3)
optionalDependencies:
vite: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vite: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
transitivePeerDependencies:
- supports-color
- typescript
vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)):
vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)):
dependencies:
esbuild: 0.21.5
postcss: 8.5.1
@@ -7124,7 +7124,7 @@ snapshots:
vitest@2.1.9(@types/node@22.13.0)(happy-dom@16.8.1)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)):
dependencies:
'@vitest/expect': 2.1.9
'@vitest/mocker': 2.1.9(vite@5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
'@vitest/mocker': 2.1.9(vite@5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1)))
'@vitest/pretty-format': 2.1.9
'@vitest/runner': 2.1.9
'@vitest/snapshot': 2.1.9
@@ -7140,7 +7140,7 @@ snapshots:
tinyexec: 0.3.2
tinypool: 1.0.2
tinyrainbow: 1.2.0
vite: 5.4.12(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vite: 5.4.14(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
vite-node: 2.1.9(@types/node@22.13.0)(lightningcss@1.29.1)(sugarss@4.0.1(postcss@8.5.1))
why-is-node-running: 2.3.0
optionalDependencies: