rename web/ to admin/, along with the web-named build and cli identifiers
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
/// <reference types="vitest/config" />
|
||||
import { fileURLToPath } from "node:url";
|
||||
import stylex from "@stylexjs/unplugin";
|
||||
import react from "@vitejs/plugin-react";
|
||||
import { type Plugin, defineConfig } from "vite";
|
||||
|
||||
/**
|
||||
* StyleX's Vite plugin polls its CSS store every 150ms from `configureServer`
|
||||
* and pushes an HMR event when it changes. It clears that timer from the close
|
||||
* event of `server.httpServer`. Vitest runs the dev server in middleware mode,
|
||||
* where `httpServer` is null, so the timer is never cleared: the run finishes,
|
||||
* the event loop stays awake, and vitest kills the worker after ten seconds with
|
||||
* "something prevents Vite server from exiting". A test needs StyleX's
|
||||
* transform, which is a different hook, and never needs its HMR — so drop this
|
||||
* one hook under vitest and keep the plugin.
|
||||
*
|
||||
* Remove this once @stylexjs/unplugin clears the timer on `buildEnd` or guards
|
||||
* the hook, and check that `npm test` still exits without the warning.
|
||||
*/
|
||||
function withoutDevServerPolling(plugin: Plugin | Plugin[]): Plugin[] {
|
||||
return (Array.isArray(plugin) ? plugin : [plugin]).map(({ configureServer: _dropped, ...rest }) => rest);
|
||||
}
|
||||
|
||||
function stylexPlugin(mode: string): Plugin | Plugin[] {
|
||||
// StyleX resolves the `.stylex.ts` theme file itself, so it needs the `@`
|
||||
// alias too — `resolve.alias` below is Vite's and the plugin cannot see it.
|
||||
const configured = stylex.vite({
|
||||
useCSSLayers: true,
|
||||
dev: mode === "development",
|
||||
runtimeInjection: false,
|
||||
aliases: { "@/*": [fileURLToPath(new URL("./src/*", import.meta.url))] },
|
||||
});
|
||||
return process.env.VITEST === undefined ? configured : withoutDevServerPolling(configured);
|
||||
}
|
||||
|
||||
export default defineConfig(({ mode }) => ({
|
||||
plugins: [stylexPlugin(mode), react()],
|
||||
resolve: {
|
||||
alias: {
|
||||
"@": fileURLToPath(new URL("./src", import.meta.url)),
|
||||
},
|
||||
},
|
||||
server: {
|
||||
proxy: {
|
||||
"/api": "http://127.0.0.1:8080",
|
||||
"/metrics": "http://127.0.0.1:8080",
|
||||
},
|
||||
},
|
||||
test: {
|
||||
environment: "jsdom",
|
||||
globals: true,
|
||||
setupFiles: ["./vitest.setup.ts"],
|
||||
},
|
||||
}));
|
||||
Reference in New Issue
Block a user