79 lines
2.6 KiB
TypeScript
79 lines
2.6 KiB
TypeScript
import {defineConfig, loadEnv} from 'vite';
|
||
import {dirname, resolve} from 'node:path';
|
||
import {fileURLToPath} from 'node:url';
|
||
import dts from 'vite-plugin-dts';
|
||
import {wrapperEnv, createPlugins} from "@astral3d/build-vite-plugins";
|
||
|
||
// @ts-ignore
|
||
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||
|
||
// @ts-ignore
|
||
export default defineConfig(async ({mode, command}) => {
|
||
const root = process.cwd();
|
||
const env = loadEnv(mode, root);
|
||
//LoadEnv读取的布尔类型是一个字符串。此函数可以转换为布尔类型
|
||
const viteEnv = wrapperEnv(env);
|
||
const {
|
||
VITE_PORT,
|
||
VITE_PUBLIC_PATH,
|
||
VITE_BUILD_COMPRESS,
|
||
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE,
|
||
VITE_ENABLE_ANALYZE,
|
||
VITE_ENABLE_CONFIG_GENERATE
|
||
} = viteEnv;
|
||
|
||
const isBuild = command === 'build';
|
||
const plugins = await createPlugins({
|
||
isBuild,
|
||
root,
|
||
compress: {
|
||
compress: VITE_BUILD_COMPRESS,
|
||
// SDK 作为 workspace 依赖需要保留原始产物,package.json 的 main/module/exports 依赖这些文件
|
||
deleteOriginFile: false,
|
||
},
|
||
enableAnalyze: VITE_ENABLE_ANALYZE,
|
||
enableConfig:VITE_ENABLE_CONFIG_GENERATE
|
||
});
|
||
|
||
return {
|
||
base: VITE_PUBLIC_PATH,
|
||
build: {
|
||
lib: {
|
||
entry: resolve(__dirname, 'lib/index.ts'),
|
||
name: 'Astral3D', // 打包后全局变量的名称
|
||
fileName: (format) => `astral3d.${format}.js`,
|
||
formats: ['es', 'umd']
|
||
},
|
||
outDir: "dist",
|
||
sourcemap: false,
|
||
// 规定触发警告的 chunk 大小。(以 kbs 为单位)
|
||
chunkSizeWarningLimit: 1024 * 6,
|
||
},
|
||
plugins: [
|
||
dts({
|
||
// 指定生成的类型文件存放的目录
|
||
outDir: './dist/types',
|
||
// 指定tsconfig.json位置
|
||
tsconfigPath: './tsconfig.json',
|
||
// 覆盖tsconfig.json对应配置
|
||
include: ["lib", "types"],
|
||
// 是否生成类型入口文件.会基于 package.json 的 `types` 字段生成
|
||
insertTypesEntry: true,
|
||
// 是否将所有的类型合并到一个文件中
|
||
rollupTypes: false,
|
||
}),
|
||
...plugins
|
||
],
|
||
// 路径别名
|
||
resolve: {
|
||
alias: {
|
||
'@': resolve(__dirname, './lib')
|
||
},
|
||
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json']
|
||
},
|
||
server: {
|
||
port: Number(VITE_PORT)
|
||
}
|
||
}
|
||
})
|