jekyll-studio / next.config.js
Dafa
Upload 7 files
5878f15 verified
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
output: 'standalone',
// Disable problematic features untuk HF Spaces
telemetry: {
enabled: false
},
// Environment variables
env: {
JEKYLL_ENV: process.env.JEKYLL_ENV || 'production',
GEMINI_API_KEY: process.env.GEMINI_API_KEY,
NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET,
NEXT_TELEMETRY_DISABLED: '1',
},
// API routes configuration
async rewrites() {
return [
// Jekyll preview proxy
{
source: '/preview/:site/:path*',
destination: '/api/jekyll/preview/:site/:path*'
},
// Static jekyll files
{
source: '/sites/:site/:path*',
destination: '/api/jekyll/static/:site/:path*'
}
];
},
// Headers untuk CORS dan security
async headers() {
return [
{
source: '/api/:path*',
headers: [
{
key: 'Access-Control-Allow-Origin',
value: process.env.NODE_ENV === 'production'
? process.env.ALLOWED_ORIGINS || '*'
: '*'
},
{
key: 'Access-Control-Allow-Methods',
value: 'GET, POST, PUT, DELETE, OPTIONS'
},
{
key: 'Access-Control-Allow-Headers',
value: 'Content-Type, Authorization, X-Requested-With'
}
]
},
{
source: '/sites/:path*',
headers: [
{
key: 'Cache-Control',
value: 'public, max-age=3600, s-maxage=3600'
}
]
}
];
},
// Webpack config untuk Jekyll integration
webpack: (config, { isServer }) => {
if (!isServer) {
config.resolve.fallback = {
...config.resolve.fallback,
fs: false,
path: false,
child_process: false,
};
}
// Ignore Jekyll files in webpack
config.watchOptions = {
...config.watchOptions,
ignored: [
'**/projects/**',
'**/templates/**',
'**/.bundle/**'
]
};
return config;
},
// Image optimization
images: {
unoptimized: true,
domains: ['localhost', 'huggingface.co'],
},
// Build optimization
compress: true,
poweredByHeader: false,
typescript: {
ignoreBuildErrors: true,
},
eslint: {
ignoreDuringBuilds: true,
},
// Experimental features
experimental: {
serverComponentsExternalPackages: ['@google/generative-ai']
}
};
module.exports = nextConfig;