fix(web): restore root env loading
- Restore root .env loading for web Vite builds. - Keep extension release env isolation intact. - Cover package script behavior with node tests.
This commit is contained in:
1 parent
4340f1bf28
commit
75aeb5ba66
2 files changed
+66
-31
No files matched your search
+51
-31
@@ -1,40 +1,60 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import { resolve } from 'path'
|
||||
import path from 'path'
|
||||
import { DEFAULT_VITE_ENV } from '../core/src/utils/default-env'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [vue()],
|
||||
server: {
|
||||
port: 18181,
|
||||
host: true,
|
||||
fs: {
|
||||
// 允许为工作区依赖提供服务
|
||||
allow: ['..']
|
||||
},
|
||||
hmr: true,
|
||||
watch: {
|
||||
// 确保监视monorepo中其他包的变化
|
||||
ignored: ['!**/node_modules/@prompt-optimizer/**']
|
||||
}
|
||||
},
|
||||
build: {
|
||||
rollupOptions: {
|
||||
input: {
|
||||
main: resolve(__dirname, 'index.html')
|
||||
export default defineConfig(({ mode }) => {
|
||||
const monorepoRoot = resolve(__dirname, '../..')
|
||||
const env = loadEnv(mode, monorepoRoot)
|
||||
const processEnv = {
|
||||
...DEFAULT_VITE_ENV,
|
||||
...env,
|
||||
}
|
||||
|
||||
return {
|
||||
envDir: monorepoRoot,
|
||||
plugins: [vue()],
|
||||
server: {
|
||||
port: 18181,
|
||||
host: true,
|
||||
fs: {
|
||||
// 允许为工作区依赖提供服务
|
||||
allow: ['..']
|
||||
},
|
||||
hmr: true,
|
||||
watch: {
|
||||
// 确保监视monorepo中其他包的变化
|
||||
ignored: ['!**/node_modules/@prompt-optimizer/**']
|
||||
}
|
||||
},
|
||||
build: {
|
||||
rollupOptions: {
|
||||
input: {
|
||||
main: resolve(__dirname, 'index.html')
|
||||
}
|
||||
}
|
||||
},
|
||||
publicDir: 'public',
|
||||
resolve: {
|
||||
preserveSymlinks: true,
|
||||
alias: {
|
||||
'@': resolve(__dirname, 'src'),
|
||||
'@prompt-optimizer/core': path.resolve(__dirname, '../core'),
|
||||
'@prompt-optimizer/ui': path.resolve(__dirname, '../ui'),
|
||||
'@prompt-optimizer/web': path.resolve(__dirname, '../web'),
|
||||
'@prompt-optimizer/extension': path.resolve(__dirname, '../extension')
|
||||
}
|
||||
},
|
||||
define: {
|
||||
'process.env': {
|
||||
NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
|
||||
...Object.keys(processEnv).reduce((acc, key) => {
|
||||
acc[key] = processEnv[key as keyof typeof processEnv]
|
||||
return acc
|
||||
}, {} as Record<string, string>)
|
||||
}
|
||||
}
|
||||
},
|
||||
publicDir: 'public',
|
||||
resolve: {
|
||||
preserveSymlinks: true,
|
||||
alias: {
|
||||
'@': resolve(__dirname, 'src'),
|
||||
'@prompt-optimizer/core': path.resolve(__dirname, '../core'),
|
||||
'@prompt-optimizer/ui': path.resolve(__dirname, '../ui'),
|
||||
'@prompt-optimizer/web': path.resolve(__dirname, '../web'),
|
||||
'@prompt-optimizer/extension': path.resolve(__dirname, '../extension')
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -61,6 +61,21 @@ test('web and extension package typecheck scripts use isolated tsconfig files',
|
||||
assert.match(extensionTypecheckConfig.include.join(' '), /\benv\.d\.ts\b/)
|
||||
})
|
||||
|
||||
test('web dev loads root env while extension build stays isolated from root env', () => {
|
||||
const webViteConfig = fs.readFileSync(path.join(process.cwd(), 'packages', 'web', 'vite.config.ts'), 'utf8')
|
||||
const extensionViteConfig = fs.readFileSync(path.join(process.cwd(), 'packages', 'extension', 'vite.config.ts'), 'utf8')
|
||||
|
||||
assert.match(webViteConfig, /loadEnv\(mode,\s*monorepoRoot\)/)
|
||||
assert.match(webViteConfig, /envDir:\s*monorepoRoot/)
|
||||
assert.match(webViteConfig, /DEFAULT_VITE_ENV/)
|
||||
assert.match(webViteConfig, /'process\.env'/)
|
||||
|
||||
assert.doesNotMatch(extensionViteConfig, /loadEnv\(mode,\s*monorepoRoot\)/)
|
||||
assert.doesNotMatch(extensionViteConfig, /envDir:\s*monorepoRoot/)
|
||||
assert.doesNotMatch(extensionViteConfig, /DEFAULT_VITE_ENV/)
|
||||
assert.doesNotMatch(extensionViteConfig, /'process\.env'/)
|
||||
})
|
||||
|
||||
test('mcp-server bin points to a file that exists before build output is generated', () => {
|
||||
const mcpPackagePath = path.join('packages', 'mcp-server', 'package.json')
|
||||
const mcpPackage = readJson(mcpPackagePath)
|
||||
|
||||
Reference in new issue
Block a user