Home / File/ vite.config.js — vite Source File

vite.config.js — vite Source File

Architecture documentation for vite.config.js, a javascript file in the vite codebase. 4 imports, 0 dependents.

File javascript ViteCore ConfigEngine 4 imports 3 functions

Entity Profile

Dependency Diagram

graph LR
  27519243_bf49_54ed_73a9_d09ee8df1b6b["vite.config.js"]
  a09ff191_7c83_bdcd_30f1_b4e129910bf6["promises"]
  27519243_bf49_54ed_73a9_d09ee8df1b6b --> a09ff191_7c83_bdcd_30f1_b4e129910bf6
  51e96894_3556_ed5c_1ede_97d449867adf["node:path"]
  27519243_bf49_54ed_73a9_d09ee8df1b6b --> 51e96894_3556_ed5c_1ede_97d449867adf
  9e678916_202a_edec_9e08_b4e120d4b153["node:crypto"]
  27519243_bf49_54ed_73a9_d09ee8df1b6b --> 9e678916_202a_edec_9e08_b4e120d4b153
  54c37fea_4fe7_2693_71cb_1276b77f55f9["vite"]
  27519243_bf49_54ed_73a9_d09ee8df1b6b --> 54c37fea_4fe7_2693_71cb_1276b77f55f9
  style 27519243_bf49_54ed_73a9_d09ee8df1b6b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import fs from 'node:fs/promises'
import path from 'node:path'
import crypto from 'node:crypto'
import { defineConfig } from 'vite'

const noncePlaceholder = '#$NONCE$#'
const createNonce = () => crypto.randomBytes(16).toString('base64')

/**
 * @param {import('node:http').ServerResponse} res
 * @param {string} nonce
 */
const setNonceHeader = (res, nonce) => {
  res.setHeader(
    'Content-Security-Policy',
    `default-src 'nonce-${nonce}'; connect-src 'self'`,
  )
}

/**
 * @param {string} file
 * @param {(input: string, originalUrl: string) => Promise<string>} transform
 * @returns {import('vite').Connect.NextHandleFunction}
 */
const createMiddleware = (file, transform) => async (req, res) => {
  const nonce = createNonce()
  setNonceHeader(res, nonce)
  const content = await fs.readFile(
    path.join(import.meta.dirname, file),
    'utf-8',
  )
  const transformedContent = await transform(content, req.originalUrl)
  res.setHeader('Content-Type', 'text/html')
  res.end(transformedContent.replaceAll(noncePlaceholder, nonce))
}

export default defineConfig({
  plugins: [
    {
      name: 'nonce-inject',
      config() {
        return {
          appType: 'custom',
          html: {
            cspNonce: noncePlaceholder,
          },
        }
      },
      configureServer({ transformIndexHtml, middlewares }) {
        return () => {
          middlewares.use(
            createMiddleware('./index.html', (input, originalUrl) =>
              transformIndexHtml(originalUrl, input),
            ),
          )
        }
      },
      configurePreviewServer({ middlewares }) {
        return () => {
          middlewares.use(
            createMiddleware('./dist/index.html', async (input) => input),
          )
        }
      },
    },
  ],
})

Domain

Subdomains

Dependencies

  • node:crypto
  • node:path
  • promises
  • vite

Frequently Asked Questions

What does vite.config.js do?
vite.config.js is a source file in the vite codebase, written in javascript. It belongs to the ViteCore domain, ConfigEngine subdomain.
What functions are defined in vite.config.js?
vite.config.js defines 3 function(s): createMiddleware, createNonce, setNonceHeader.
What does vite.config.js depend on?
vite.config.js imports 4 module(s): node:crypto, node:path, promises, vite.
Where is vite.config.js in the architecture?
vite.config.js is located at playground/csp/vite.config.js (domain: ViteCore, subdomain: ConfigEngine, directory: playground/csp).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free