113 lines
2.8 KiB
JavaScript
113 lines
2.8 KiB
JavaScript
// LEGACY_READ_ONLY: 旧域名只保留历史图片展示兼容。
|
||
/** @type {import('next').NextConfig} */
|
||
const nextConfig = {
|
||
output: 'standalone',
|
||
images: {
|
||
remotePatterns: [
|
||
{
|
||
protocol: 'https',
|
||
hostname: 's3.1080p.hk',
|
||
},
|
||
{
|
||
protocol: 'http',
|
||
hostname: 's3.1080p.hk',
|
||
},
|
||
{
|
||
protocol: 'https',
|
||
hostname: 's3.yydd.ai',
|
||
},
|
||
{
|
||
protocol: 'http',
|
||
hostname: 's3.yydd.ai',
|
||
},
|
||
{
|
||
protocol: 'https',
|
||
hostname: 's3.jiansun.vip',
|
||
},
|
||
{
|
||
protocol: 'http',
|
||
hostname: 's3.jiansun.vip',
|
||
},
|
||
],
|
||
},
|
||
experimental: {
|
||
// SQL Server 报表库同步需要在 standalone 镜像中保留 mssql 运行依赖。
|
||
serverComponentsExternalPackages: ['mssql'],
|
||
// 优化 standalone 输出,排除不必要的文件
|
||
outputFileTracingExcludes: {
|
||
'*': [
|
||
// 排除本地上传文件
|
||
'uploads/**',
|
||
'detail-generator-private/**',
|
||
'.private/**',
|
||
// The isolated renderer is copied explicitly by Docker with its own native dependencies.
|
||
'workers/detail-renderer/**',
|
||
// 排除构建缓存
|
||
'.build-cache/**',
|
||
'.docker-cache/**',
|
||
// 排除开发工具
|
||
'.kiro/**',
|
||
'.cursor/**',
|
||
'.vscode/**',
|
||
'.git/**',
|
||
// 排除测试文件
|
||
'__tests__/**',
|
||
'**/*.test.ts',
|
||
'**/*.test.tsx',
|
||
'**/*.spec.ts',
|
||
'**/*.spec.tsx',
|
||
// 排除文档和脚本
|
||
'docs/**',
|
||
'scripts/**',
|
||
'backups/**',
|
||
// 排除 Prisma 不必要的文件
|
||
'prisma/migrations/**',
|
||
'prisma/engine-cache/**',
|
||
// 排除部署脚本
|
||
'*.ps1',
|
||
'*.sh',
|
||
'docker-compose*.yml',
|
||
'Dockerfile*',
|
||
],
|
||
},
|
||
// 启用 instrumentation hook(应用启动时执行)
|
||
instrumentationHook: true,
|
||
serverActions: {
|
||
bodySizeLimit: '10gb', // Server Actions 的限制 (10GB)
|
||
},
|
||
},
|
||
// 注意:CORS配置移到middleware.ts中处理,因为需要动态设置origin
|
||
// 当使用credentials时,不能使用通配符*
|
||
|
||
// 添加版本号到静态资源文件名,强制浏览器更新
|
||
generateBuildId: async () => {
|
||
// 使用时间戳作为构建ID,确保每次部署都有新的版本号
|
||
return `build-${Date.now()}`
|
||
},
|
||
|
||
// 配置 headers 来禁用缓存
|
||
async headers() {
|
||
return [
|
||
{
|
||
source: '/:path*',
|
||
headers: [
|
||
{
|
||
key: 'X-Content-Type-Options',
|
||
value: 'nosniff',
|
||
},
|
||
{
|
||
key: 'X-Frame-Options',
|
||
value: 'SAMEORIGIN',
|
||
},
|
||
{
|
||
key: 'X-XSS-Protection',
|
||
value: '1; mode=block',
|
||
},
|
||
],
|
||
},
|
||
]
|
||
},
|
||
}
|
||
|
||
module.exports = nextConfig
|