dify/web/plugins/vite/next-static-image-test.ts
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

31 lines
878 B
TypeScript

import type { Plugin } from 'vite'
import path from 'node:path'
import { normalizeViteModuleId } from './utils.ts'
type NextStaticImageTestPluginOptions = {
projectRoot: string
}
const STATIC_ASSET_RE = /\.(?:svg|png|jpe?g|gif)$/i
const EXCLUDED_QUERY_RE = /[?&](?:raw|url)\b/
export const nextStaticImageTestPlugin = ({
projectRoot,
}: NextStaticImageTestPluginOptions): Plugin => {
return {
name: 'next-static-image-test',
enforce: 'pre',
load(id) {
if (EXCLUDED_QUERY_RE.test(id)) return null
const cleanId = normalizeViteModuleId(id)
if (!cleanId.startsWith(projectRoot) || !STATIC_ASSET_RE.test(cleanId)) return null
const relativePath = path.relative(projectRoot, cleanId).split(path.sep).join('/')
const src = `/__static__/${relativePath}`
return `export default { src: ${JSON.stringify(src)} }\n`
},
}
}