feat: separate umd and lib build

This commit is contained in:
Simon
2025-09-29 17:24:38 +08:00
parent 95c688873e
commit d6e37067cf
6 changed files with 907 additions and 17 deletions

845
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -5,17 +5,16 @@
"type": "module",
"main": "./dist/lib/page-agent.js",
"module": "./dist/lib/page-agent.js",
"types": "./dist/types/entry.d.ts",
"types": "./dist/lib/PageAgent.d.ts",
"exports": {
".": {
"types": "./dist/types/entry.d.ts",
"types": "./dist/lib/PageAgent.d.ts",
"import": "./dist/lib/page-agent.js",
"default": "./dist/lib/page-agent.js"
}
},
"files": [
"dist/lib/",
"dist/types/",
"README.md",
"LICENSE",
"NOTICE"
@@ -43,10 +42,10 @@
"scripts": {
"dev": "vite",
"start": "vite",
"build": "tsc -b && vite build && npm run build:lib",
"build:lib": "npm run types:lib && vite build --config vite.lib.config.ts",
"build": "tsc -b && vite build && npm run build:lib && npm run build:umd",
"build:lib": "vite build --config vite.lib.config.ts",
"build:lib:watch": "vite build --config vite.lib.config.ts --watch",
"types:lib": "tsc -p tsconfig.lib.json",
"build:umd": "vite build --config vite.umd.config.ts",
"lint": "eslint .",
"prepare": "husky"
},
@@ -82,6 +81,7 @@
"tailwindcss": "^4.1.11",
"typescript": "^5.9.2",
"typescript-eslint": "^8.39.0",
"unplugin-dts": "^1.0.0-beta.6",
"vite": "^7.0.4",
"vite-plugin-css-injected-by-js": "^3.5.2",
"wouter": "^3.7.1"

View File

@@ -1,8 +1,7 @@
{
"extends": "./tsconfig.app.json",
"compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.lib.tsbuildinfo",
"composite": true,
// "composite": true,
"noEmit": false,
"declaration": true,
"declarationMap": true,

View File

@@ -21,5 +21,5 @@
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true
},
"include": ["vite.config.ts", "vite.lib.config.ts"]
"include": ["vite.config.ts", "vite.lib.config.ts", "vite.umd.config.ts"]
}

View File

@@ -1,5 +1,5 @@
import react from '@vitejs/plugin-react-swc'
import { dirname, resolve } from 'path'
import dts from 'unplugin-dts/vite'
import { fileURLToPath } from 'url'
import { defineConfig } from 'vite'
import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js'
@@ -9,7 +9,10 @@ const __dirname = dirname(__filename)
// Library build configuration
export default defineConfig({
plugins: [react(), cssInjectedByJsPlugin({ relativeCSSInjection: true })],
plugins: [
dts({ tsconfigPath: './tsconfig.lib.json' }),
cssInjectedByJsPlugin({ relativeCSSInjection: true }),
],
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
@@ -22,16 +25,14 @@ export default defineConfig({
},
build: {
lib: {
entry: resolve(__dirname, 'src/entry.ts'),
entry: resolve(__dirname, 'src/PageAgent.ts'),
name: 'PageAgent',
fileName: 'page-agent',
formats: ['umd', 'es'],
formats: ['es'],
},
outDir: resolve(__dirname, 'dist', 'lib'),
rollupOptions: {
// ESM 包 应该 external但是 UMD 时不能 external
// @TODO 分成两份配置
// external: ['@ai-sdk/openai', 'ai', 'ai-motion', 'chalk', 'zod'],
external: ['@ai-sdk/openai', 'ai', 'ai-motion', 'chalk', 'zod'],
output: {
globals: {
// 定义全局变量映射
@@ -39,7 +40,8 @@ export default defineConfig({
},
},
// minify: 'terser',
// sourcemap: true,
minify: false,
sourcemap: true,
},
define: {
// 替换环境变量

44
vite.umd.config.ts Normal file
View File

@@ -0,0 +1,44 @@
import { dirname, resolve } from 'path'
import { fileURLToPath } from 'url'
import { defineConfig } from 'vite'
import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js'
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
// Library build configuration
export default defineConfig({
plugins: [cssInjectedByJsPlugin({ relativeCSSInjection: true })],
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
},
},
publicDir: false,
esbuild: {
// 禁用严格的未使用变量检查
keepNames: true,
},
build: {
lib: {
entry: resolve(__dirname, 'src/entry.ts'),
name: 'PageAgent',
fileName: 'page-agent',
formats: ['umd'],
},
outDir: resolve(__dirname, 'dist', 'umd'),
rollupOptions: {
output: {
globals: {
// 定义全局变量映射
},
},
},
// minify: 'terser',
// sourcemap: true,
},
define: {
// 替换环境变量
'process.env.NODE_ENV': '"production"',
},
})