+21




![autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>](/assets/img/avatar_default.png)




FFXN
GitHub
jyong
Yansong Zhang
autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
hj24
hj24
Joel
Stephen Zhou
CodingOnStar
copilot-swe-agent[bot] <[email protected]>
非法操作
Ayush Baluni
yyh
jimcody1995
James
Yunlu Wen
Stephen Zhou
Coding On Star
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
jerryzai
NVIDIAN
ai-hpc
Asuka Minato
Junghwan
HeYinKazune
Copilot
yyh
Jingyi
Claude Sonnet 4.6
sxxtony
0e320290e1
Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: jyong <[email protected]> Co-authored-by: Yansong Zhang <[email protected]> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: hj24 <[email protected]> Co-authored-by: hj24 <[email protected]> Co-authored-by: Joel <[email protected]> Co-authored-by: Stephen Zhou <[email protected]> Co-authored-by: CodingOnStar <[email protected]> Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: 非法操作 <[email protected]> Co-authored-by: Ayush Baluni <[email protected]> Co-authored-by: yyh <[email protected]> Co-authored-by: jimcody1995 <[email protected]> Co-authored-by: James <[email protected]> Co-authored-by: Yunlu Wen <[email protected]> Co-authored-by: Stephen Zhou <[email protected]> Co-authored-by: Coding On Star <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: jerryzai <[email protected]> Co-authored-by: NVIDIAN <[email protected]> Co-authored-by: ai-hpc <[email protected]> Co-authored-by: Asuka Minato <[email protected]> Co-authored-by: Junghwan <[email protected]> Co-authored-by: HeYinKazune <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: yyh <[email protected]> Co-authored-by: Jingyi <[email protected]> Co-authored-by: Claude Sonnet 4.6 <[email protected]> Co-authored-by: sxxtony <[email protected]>
95 lines
3.0 KiB
TypeScript
95 lines
3.0 KiB
TypeScript
import { fileURLToPath } from 'node:url'
|
|
import tailwindcss from '@tailwindcss/vite'
|
|
import react from '@vitejs/plugin-react'
|
|
import vinext from 'vinext'
|
|
import Inspect from 'vite-plugin-inspect'
|
|
import { defineConfig } from 'vite-plus'
|
|
import { createCodeInspectorPlugin, createForceInspectorClientInjectionPlugin } from './plugins/vite/code-inspector'
|
|
import { customI18nHmrPlugin } from './plugins/vite/custom-i18n-hmr'
|
|
import { getRootClientInjectTarget } from './plugins/vite/inject-target'
|
|
import { nextStaticImageTestPlugin } from './plugins/vite/next-static-image-test'
|
|
|
|
const projectRoot = fileURLToPath(new URL('.', import.meta.url))
|
|
const isCI = !!process.env.CI
|
|
const rootClientInjectTarget = getRootClientInjectTarget(projectRoot)
|
|
|
|
export default defineConfig(({ mode }) => {
|
|
const isTest = mode === 'test'
|
|
const isStorybook = process.env.STORYBOOK === 'true'
|
|
|| process.argv.some(arg => arg.toLowerCase().includes('storybook'))
|
|
|
|
return {
|
|
plugins: isTest
|
|
? [
|
|
nextStaticImageTestPlugin({ projectRoot }),
|
|
react(),
|
|
{
|
|
// Stub .mdx files so components importing them can be unit-tested
|
|
name: 'mdx-stub',
|
|
enforce: 'pre',
|
|
transform(_, id) {
|
|
if (id.endsWith('.mdx'))
|
|
return { code: 'export default () => null', map: null }
|
|
},
|
|
},
|
|
]
|
|
: isStorybook
|
|
? [
|
|
react(),
|
|
]
|
|
: [
|
|
Inspect(),
|
|
createCodeInspectorPlugin({
|
|
injectTarget: rootClientInjectTarget,
|
|
}),
|
|
createForceInspectorClientInjectionPlugin({
|
|
injectTarget: rootClientInjectTarget,
|
|
projectRoot,
|
|
}),
|
|
tailwindcss(),
|
|
react(),
|
|
vinext({ react: false }),
|
|
customI18nHmrPlugin({ injectTarget: rootClientInjectTarget }),
|
|
// reactGrabOpenFilePlugin({
|
|
// injectTarget: rootClientInjectTarget,
|
|
// projectRoot,
|
|
// }),
|
|
],
|
|
resolve: {
|
|
tsconfigPaths: true,
|
|
alias: [
|
|
// Use the base64 build in Vite-based pipelines (vinext/vitest) to avoid wasm loader incompatibilities.
|
|
{ find: /^loro-crdt$/, replacement: 'loro-crdt/base64' },
|
|
],
|
|
},
|
|
|
|
// vinext related config
|
|
...(!isTest && !isStorybook
|
|
? {
|
|
optimizeDeps: {
|
|
exclude: ['@tanstack/react-query'],
|
|
},
|
|
server: {
|
|
port: 3000,
|
|
},
|
|
ssr: {
|
|
// SyntaxError: Named export not found. The requested module is a CommonJS module, which may not support all module.exports as named exports
|
|
noExternal: ['emoji-mart'],
|
|
},
|
|
}
|
|
: {}),
|
|
|
|
// Vitest config
|
|
test: {
|
|
pool: 'threads',
|
|
environment: 'happy-dom',
|
|
globals: true,
|
|
setupFiles: ['./vitest.setup.ts'],
|
|
coverage: {
|
|
provider: 'v8',
|
|
reporter: isCI ? ['json', 'json-summary'] : ['text', 'json', 'json-summary'],
|
|
},
|
|
},
|
|
}
|
|
})
|