niucloud/admin/vite.config.shared.ts
wangchen14709853322 6d9c8ff7f5 v2.0-beta-20260626
v2框架公测版测试流程请看v2.0-beta.md
2026-07-01 12:15:20 +08:00

68 lines
2.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { fileURLToPath, URL } from 'node:url'
import { createRequire } from 'node:module'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
const require = createRequire(import.meta.url)
const { sharedExternalForBuild } = require('./scripts/shared-external.cjs')
const pkgKey = process.env.SHARED_PKG || 'vue'
const emptyOutDir = process.env.SHARED_EMPTY === '1'
const entry = fileURLToPath(new URL(`./.build/shared/${pkgKey}.ts`, import.meta.url))
const outName = pkgKey === 'icons-vue' ? 'icons-vue' : pkgKey
const needsCore = pkgKey === 'admin-lang' || pkgKey === 'core-shared'
/** 单包 shared ESM 构建peer 依赖保持 external 由 import map 解析 */
export default defineConfig({
publicDir: false,
define: {
'process.env.NODE_ENV': JSON.stringify('production'),
__VUE_OPTIONS_API__: true,
__VUE_PROD_DEVTOOLS__: false,
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false
},
resolve: needsCore
? {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js'
}
}
: undefined,
plugins: needsCore
? [
vue(),
{
name: 'shared-exclude-addon',
enforce: 'pre',
resolveId(source) {
if (source.includes('*')) return null
const norm = source.replace(/\\?vue.*$/, '').replace(/\\/g, '/')
if (norm.startsWith('@/addon/') || norm.includes('/src/addon/')) {
return { id: 'virtual:addon-empty', moduleSideEffects: false }
}
return null
},
load(id) {
if (id === 'virtual:addon-empty') return 'export default {}'
return null
}
}
]
: [],
build: {
outDir: 'dist/.shared',
emptyOutDir,
lib: {
entry,
formats: ['es'],
fileName: () => `${outName}.js`
},
rollupOptions: {
external: sharedExternalForBuild(pkgKey)
}
}
})