initial commit after project creation
This commit is contained in:
102
next.config.js
Normal file
102
next.config.js
Normal file
@@ -0,0 +1,102 @@
|
||||
const MonacoWebpackPlugin = require("monaco-editor-webpack-plugin");
|
||||
const redirects = require("./content/settings/config.json")?.redirects || [];
|
||||
|
||||
/** @type {import('next').NextConfig} */
|
||||
|
||||
const isStatic = process.env.EXPORT_MODE === "static";
|
||||
const basePath = process.env.NEXT_PUBLIC_BASE_PATH;
|
||||
const assetPrefix = process.env.NEXT_PUBLIC_ASSET_PREFIX || basePath;
|
||||
|
||||
const extraConfig = {};
|
||||
|
||||
if (isStatic) {
|
||||
extraConfig.output = "export";
|
||||
extraConfig.trailingSlash = true;
|
||||
extraConfig.skipTrailingSlashRedirect = true;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
...extraConfig,
|
||||
basePath,
|
||||
assetPrefix,
|
||||
images: {
|
||||
...(assetPrefix ? { path: `${assetPrefix}/_next/image` } : {}),
|
||||
remotePatterns: [
|
||||
{
|
||||
protocol: "https",
|
||||
hostname: "assets.tina.io",
|
||||
port: "",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
outputFileTracingIncludes: {
|
||||
"/api/**/*": [],
|
||||
},
|
||||
outputFileTracingExcludes: {
|
||||
"/api/**/*": [
|
||||
".next/cache/**/*",
|
||||
"node_modules/@swc/core-linux-x64-gnu",
|
||||
"node_modules/@swc/core-linux-x64-musl",
|
||||
"node_modules/@esbuild/",
|
||||
"node_modules/webpack",
|
||||
"node_modules/terser",
|
||||
".git/**/*",
|
||||
"public/**/*",
|
||||
],
|
||||
},
|
||||
|
||||
async rewrites() {
|
||||
return [
|
||||
{
|
||||
source: "/admin",
|
||||
destination: "/admin/index.html",
|
||||
},
|
||||
];
|
||||
},
|
||||
|
||||
async redirects() {
|
||||
return redirects.map((redirect) => ({
|
||||
source: redirect.source,
|
||||
destination: redirect.destination,
|
||||
permanent: redirect.permanent,
|
||||
}));
|
||||
},
|
||||
|
||||
turbopack: {
|
||||
resolveExtensions: [".mdx", ".tsx", ".ts", ".jsx", ".js", ".mjs", ".json"],
|
||||
// Add this rule to handle SVG as React components for Local Development
|
||||
rules: {
|
||||
"*.svg": {
|
||||
loaders: ["@svgr/webpack"],
|
||||
as: "*.js",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
webpack: (config, { isServer }) => {
|
||||
if (!isServer) {
|
||||
// Configure Monaco Editor for minimal build
|
||||
config.plugins.push(
|
||||
new MonacoWebpackPlugin({
|
||||
languages: ["javascript"],
|
||||
filename: "static/[name].worker.js",
|
||||
features: ["!gotoSymbol"], // Disable heavy features
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
// Add this module rule to handle SVG as React components for Production
|
||||
config.module.rules.push({
|
||||
test: /\.svg$/,
|
||||
use: ["@svgr/webpack"],
|
||||
});
|
||||
|
||||
// Optimize bundle size for serverless functions
|
||||
if (isServer) {
|
||||
config.externals = [...(config.externals || []), "fs", "path", "os"];
|
||||
}
|
||||
|
||||
return config;
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user