vite.ts — astro Source File
Architecture documentation for vite.ts, a typescript file in the astro codebase. 8 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR e07bffac_1f6f_11c8_8ec6_caf4bde2ee3d["vite.ts"] 5c1f16d1_f599_2e31_eb17_4c8b8189d4ed["../errors/dev/utils.js"] e07bffac_1f6f_11c8_8ec6_caf4bde2ee3d --> 5c1f16d1_f599_2e31_eb17_4c8b8189d4ed f095025f_c3dd_0167_2057_4ce0e7b5054f["../errors/dev/vite.js"] e07bffac_1f6f_11c8_8ec6_caf4bde2ee3d --> f095025f_c3dd_0167_2057_4ce0e7b5054f 89b075c6_fd0a_0eb9_b0a6_32eb2757d880["./runner.js"] e07bffac_1f6f_11c8_8ec6_caf4bde2ee3d --> 89b075c6_fd0a_0eb9_b0a6_32eb2757d880 7216d952_4e4a_2d18_a85b_74b4ace79e2b["../core/constants.js"] e07bffac_1f6f_11c8_8ec6_caf4bde2ee3d --> 7216d952_4e4a_2d18_a85b_74b4ace79e2b fc0217ba_5b68_32cc_f77d_49b4596e615e["node:events"] e07bffac_1f6f_11c8_8ec6_caf4bde2ee3d --> fc0217ba_5b68_32cc_f77d_49b4596e615e c52a5f83_66e3_37d7_9ebb_767f7129bc62["node:path"] e07bffac_1f6f_11c8_8ec6_caf4bde2ee3d --> c52a5f83_66e3_37d7_9ebb_767f7129bc62 d9a92db9_c95e_9165_13ac_24b3d859d946["node:url"] e07bffac_1f6f_11c8_8ec6_caf4bde2ee3d --> d9a92db9_c95e_9165_13ac_24b3d859d946 263e522e_1aa5_ebc3_e7d6_45ebc51671f7["vite"] e07bffac_1f6f_11c8_8ec6_caf4bde2ee3d --> 263e522e_1aa5_ebc3_e7d6_45ebc51671f7 style e07bffac_1f6f_11c8_8ec6_caf4bde2ee3d fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { EventEmitter } from 'node:events';
import path from 'node:path';
import { pathToFileURL } from 'node:url';
import type * as vite from 'vite';
import type { RunnableDevEnvironment } from 'vite';
import { collectErrorMetadata } from '../errors/dev/utils.js';
import { getViteErrorPayload } from '../errors/dev/vite.js';
import type { ModuleLoader, ModuleLoaderEventEmitter } from './runner.js';
import { ASTRO_VITE_ENVIRONMENT_NAMES } from '../constants.js';
export function createViteLoader(
viteServer: vite.ViteDevServer,
ssrEnvironment: RunnableDevEnvironment,
): ModuleLoader {
const events = new EventEmitter() as ModuleLoaderEventEmitter;
let isTsconfigUpdated = false;
function isTsconfigUpdate(filePath: string) {
const result = path.basename(filePath) === 'tsconfig.json';
if (result) isTsconfigUpdated = true;
return result;
}
// Skip event emit on tsconfig change as Vite restarts the server, and we don't
// want to trigger unnecessary work that will be invalidated shortly.
viteServer.watcher.on('add', (...args) => {
if (!isTsconfigUpdate(args[0])) {
events.emit('file-add', args);
}
});
viteServer.watcher.on('unlink', (...args) => {
if (!isTsconfigUpdate(args[0])) {
events.emit('file-unlink', args);
}
});
viteServer.watcher.on('change', (...args) => {
if (!isTsconfigUpdate(args[0])) {
events.emit('file-change', args);
}
});
const _wsSend = viteServer.environments.client.hot.send;
viteServer.environments.client.hot.send = function (...args: any) {
// If the tsconfig changed, Vite will trigger a reload as it invalidates the module.
// However in Astro, the whole server is restarted when the tsconfig changes. If we
// do a restart and reload at the same time, the browser will refetch and the server
// is not ready yet, causing a blank page. Here we block that reload from happening.
if (isTsconfigUpdated) {
isTsconfigUpdated = false;
return;
}
const msg = args[0] as vite.HotPayload;
if (msg?.type === 'error') {
// If we have an error, but it didn't go through our error enhancement program, it means that it's a HMR error from
// vite itself, which goes through a different path. We need to enhance it here.
if (!(msg as any)['__isEnhancedAstroErrorPayload']) {
const err = collectErrorMetadata(msg.err, pathToFileURL(viteServer.config.root));
getViteErrorPayload(err).then((payload) => {
events.emit('hmr-error', {
type: 'error',
// ... (61 more lines)
Domain
Subdomains
Functions
Dependencies
- ../core/constants.js
- ../errors/dev/utils.js
- ../errors/dev/vite.js
- ./runner.js
- node:events
- node:path
- node:url
- vite
Source
Frequently Asked Questions
What does vite.ts do?
vite.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, RenderingEngine subdomain.
What functions are defined in vite.ts?
vite.ts defines 1 function(s): createViteLoader.
What does vite.ts depend on?
vite.ts imports 8 module(s): ../core/constants.js, ../errors/dev/utils.js, ../errors/dev/vite.js, ./runner.js, node:events, node:path, node:url, vite.
Where is vite.ts in the architecture?
vite.ts is located at packages/astro/src/core/module-loader/vite.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/core/module-loader).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free