mirror of
https://github.com/langgenius/dify.git
synced 2026-03-02 05:25:09 +00:00
chore: support code-inspector for vinext (#32788)
Some checks failed
autofix.ci / autofix (push) Has been cancelled
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Has been cancelled
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Has been cancelled
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Has been cancelled
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Has been cancelled
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Has been cancelled
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Has been cancelled
Main CI Pipeline / Check Changed Files (push) Has been cancelled
Main CI Pipeline / API Tests (push) Has been cancelled
Main CI Pipeline / Web Tests (push) Has been cancelled
Main CI Pipeline / Style Check (push) Has been cancelled
Main CI Pipeline / VDB Tests (push) Has been cancelled
Main CI Pipeline / DB Migration Test (push) Has been cancelled
Some checks failed
autofix.ci / autofix (push) Has been cancelled
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Has been cancelled
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Has been cancelled
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Has been cancelled
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Has been cancelled
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Has been cancelled
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Has been cancelled
Main CI Pipeline / Check Changed Files (push) Has been cancelled
Main CI Pipeline / API Tests (push) Has been cancelled
Main CI Pipeline / Web Tests (push) Has been cancelled
Main CI Pipeline / Style Check (push) Has been cancelled
Main CI Pipeline / VDB Tests (push) Has been cancelled
Main CI Pipeline / DB Migration Test (push) Has been cancelled
This commit is contained in:
@@ -1,15 +1,78 @@
|
||||
import type { Plugin } from 'vite'
|
||||
import fs from 'node:fs'
|
||||
import path from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import react from '@vitejs/plugin-react'
|
||||
import { codeInspectorPlugin } from 'code-inspector-plugin'
|
||||
import vinext from 'vinext'
|
||||
import { defineConfig } from 'vite'
|
||||
import tsconfigPaths from 'vite-tsconfig-paths'
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||
const isCI = !!process.env.CI
|
||||
const inspectorPort = 5678
|
||||
const inspectorInjectTarget = path.resolve(__dirname, 'app/components/browser-initializer.tsx')
|
||||
const inspectorRuntimeFile = path.resolve(
|
||||
__dirname,
|
||||
`node_modules/code-inspector-plugin/dist/append-code-${inspectorPort}.js`,
|
||||
)
|
||||
|
||||
const getInspectorRuntimeSnippet = (): string => {
|
||||
if (!fs.existsSync(inspectorRuntimeFile))
|
||||
return ''
|
||||
|
||||
const raw = fs.readFileSync(inspectorRuntimeFile, 'utf-8')
|
||||
// Remove the helper module default export from append file to avoid duplicate default exports.
|
||||
return raw.replace(
|
||||
/\s*export default function CodeInspectorEmptyElement\(\)\s*\{[\s\S]*$/,
|
||||
'',
|
||||
)
|
||||
}
|
||||
|
||||
const normalizeInspectorModuleId = (id: string): string => {
|
||||
const withoutQuery = id.split('?', 1)[0]
|
||||
|
||||
// Vite/vinext may pass absolute fs modules as "/@fs/<abs-path>".
|
||||
if (withoutQuery.startsWith('/@fs/'))
|
||||
return withoutQuery.slice('/@fs'.length)
|
||||
|
||||
return withoutQuery
|
||||
}
|
||||
|
||||
const createCodeInspectorPlugin = (): Plugin => {
|
||||
return codeInspectorPlugin({
|
||||
bundler: 'vite',
|
||||
port: inspectorPort,
|
||||
injectTo: inspectorInjectTarget,
|
||||
exclude: [/^(?!.*\.(?:js|ts|mjs|mts|jsx|tsx|vue|svelte|html)(?:$|\?)).*/],
|
||||
}) as Plugin
|
||||
}
|
||||
|
||||
const createForceInspectorClientInjectionPlugin = (): Plugin => {
|
||||
const clientSnippet = getInspectorRuntimeSnippet()
|
||||
|
||||
return {
|
||||
name: 'vinext-force-code-inspector-client',
|
||||
apply: 'serve',
|
||||
enforce: 'pre',
|
||||
transform(code, id) {
|
||||
if (!clientSnippet)
|
||||
return null
|
||||
|
||||
const cleanId = normalizeInspectorModuleId(id)
|
||||
if (cleanId !== inspectorInjectTarget)
|
||||
return null
|
||||
if (code.includes('code-inspector-component'))
|
||||
return null
|
||||
|
||||
return `${clientSnippet}\n${code}`
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export default defineConfig(({ mode }) => {
|
||||
const isDev = mode === 'development'
|
||||
|
||||
return {
|
||||
plugins: mode === 'test'
|
||||
? [
|
||||
@@ -26,6 +89,12 @@ export default defineConfig(({ mode }) => {
|
||||
} as Plugin,
|
||||
]
|
||||
: [
|
||||
...(isDev
|
||||
? [
|
||||
createCodeInspectorPlugin(),
|
||||
createForceInspectorClientInjectionPlugin(),
|
||||
]
|
||||
: []),
|
||||
vinext(),
|
||||
],
|
||||
resolve: {
|
||||
|
||||
Reference in New Issue
Block a user