Compare commits

...
Author SHA1 Message Date
Meier Lukas 0b94219002 perf: try to improve nextjs dev performance 2025-05-27 22:46:53 +02:00
3 changed files with 59 additions and 86 deletions

No files matched your search

+14 -4
View File
@@ -17,7 +17,7 @@ const withNextIntl = createNextIntlPlugin({
requestConfig: "../../packages/translation/src/request.ts", requestConfig: "../../packages/translation/src/request.ts",
}); });
interface WebpackConfig { interface _WebpackConfig {
module: { module: {
rules: { rules: {
test: RegExp; test: RegExp;
@@ -32,7 +32,7 @@ const nextConfig: NextConfig = {
/** We already do linting and typechecking as separate tasks in CI */ /** We already do linting and typechecking as separate tasks in CI */
eslint: { ignoreDuringBuilds: true }, eslint: { ignoreDuringBuilds: true },
typescript: { ignoreBuildErrors: true }, typescript: { ignoreBuildErrors: true },
webpack: (config: WebpackConfig, { isServer }) => { /*webpack: (config: WebpackConfig, { isServer }) => {
if (isServer) { if (isServer) {
config.module.rules.push({ config.module.rules.push({
test: /\.node$/, test: /\.node$/,
@@ -41,11 +41,21 @@ const nextConfig: NextConfig = {
} }
return config; return config;
}, },*/
experimental: { experimental: {
optimizePackageImports: ["@mantine/core", "@mantine/hooks", "@tabler/icons-react"], optimizePackageImports: ["@mantine/core", "@mantine/hooks", "@tabler/icons-react"],
}, },
transpilePackages: ["@homarr/ui", "@homarr/notifications", "@homarr/modals", "@homarr/spotlight", "@homarr/widgets"], serverExternalPackages: [
"dockerode",
"@kubernetes/client-node",
"@ctrl/deluge",
"@ctrl/qbittorrent",
"@ctrl/transmission",
"node-ical",
"tsdav",
"proxmox-api",
"@jellyfin/sdk",
],
images: { images: {
domains: ["cdn.jsdelivr.net"], domains: ["cdn.jsdelivr.net"],
}, },
+25 -46
View File
@@ -1,52 +1,31 @@
import { apiKeysRouter } from "./router/apiKeys"; import { lazy } from "@trpc/server";
import { appRouter as innerAppRouter } from "./router/app";
import { boardRouter } from "./router/board";
import { certificateRouter } from "./router/certificates/certificate-router";
import { cronJobsRouter } from "./router/cron-jobs";
import { dockerRouter } from "./router/docker/docker-router";
import { groupRouter } from "./router/group";
import { homeRouter } from "./router/home";
import { iconsRouter } from "./router/icons";
import { importRouter } from "./router/import/import-router";
import { integrationRouter } from "./router/integration/integration-router";
import { inviteRouter } from "./router/invite";
import { kubernetesRouter } from "./router/kubernetes/router/kubernetes-router";
import { locationRouter } from "./router/location";
import { logRouter } from "./router/log";
import { mediaRouter } from "./router/medias/media-router";
import { onboardRouter } from "./router/onboard/onboard-router";
import { searchEngineRouter } from "./router/search-engine/search-engine-router";
import { sectionRouter } from "./router/section/section-router";
import { serverSettingsRouter } from "./router/serverSettings";
import { updateCheckerRouter } from "./router/update-checker";
import { userRouter } from "./router/user";
import { widgetRouter } from "./router/widgets";
import { createTRPCRouter } from "./trpc"; import { createTRPCRouter } from "./trpc";
export const appRouter = createTRPCRouter({ export const appRouter = createTRPCRouter({
user: userRouter, user: lazy(() => import("./router/user").then((mod) => mod.userRouter)),
group: groupRouter, group: lazy(() => import("./router/group").then((mod) => mod.groupRouter)),
invite: inviteRouter, invite: lazy(() => import("./router/invite").then((mod) => mod.inviteRouter)),
integration: integrationRouter, integration: lazy(() => import("./router/integration/integration-router").then((mod) => mod.integrationRouter)),
board: boardRouter, board: lazy(() => import("./router/board").then((mod) => mod.boardRouter)),
section: sectionRouter, section: lazy(() => import("./router/section/section-router").then((mod) => mod.sectionRouter)),
app: innerAppRouter, app: lazy(() => import("./router/app").then((mod) => mod.appRouter)),
searchEngine: searchEngineRouter, searchEngine: lazy(() => import("./router/search-engine/search-engine-router").then((mod) => mod.searchEngineRouter)),
widget: widgetRouter, widget: lazy(() => import("./router/widgets").then((mod) => mod.widgetRouter)),
location: locationRouter, location: lazy(() => import("./router/location").then((mod) => mod.locationRouter)),
log: logRouter, log: lazy(() => import("./router/log").then((mod) => mod.logRouter)),
icon: iconsRouter, icon: lazy(() => import("./router/icons").then((mod) => mod.iconsRouter)),
import: importRouter, import: lazy(() => import("./router/import/import-router").then((mod) => mod.importRouter)),
onboard: onboardRouter, onboard: lazy(() => import("./router/onboard/onboard-router").then((mod) => mod.onboardRouter)),
home: homeRouter, home: lazy(() => import("./router/home").then((mod) => mod.homeRouter)),
docker: dockerRouter, docker: lazy(() => import("./router/docker/docker-router").then((mod) => mod.dockerRouter)),
kubernetes: kubernetesRouter, kubernetes: lazy(() => import("./router/kubernetes/router/kubernetes-router").then((mod) => mod.kubernetesRouter)),
serverSettings: serverSettingsRouter, serverSettings: lazy(() => import("./router/serverSettings").then((mod) => mod.serverSettingsRouter)),
cronJobs: cronJobsRouter, cronJobs: lazy(() => import("./router/cron-jobs").then((mod) => mod.cronJobsRouter)),
apiKeys: apiKeysRouter, apiKeys: lazy(() => import("./router/apiKeys").then((mod) => mod.apiKeysRouter)),
media: mediaRouter, media: lazy(() => import("./router/medias/media-router").then((mod) => mod.mediaRouter)),
updateChecker: updateCheckerRouter, updateChecker: lazy(() => import("./router/update-checker").then((mod) => mod.updateCheckerRouter)),
certificates: certificateRouter, certificates: lazy(() => import("./router/certificates/certificate-router").then((mod) => mod.certificateRouter)),
}); });
// export type definition of API // export type definition of API
+20 -36
View File
@@ -1,40 +1,24 @@
import { lazy } from "@trpc/server";
import { createTRPCRouter } from "../../trpc"; import { createTRPCRouter } from "../../trpc";
import { appRouter } from "./app";
import { calendarRouter } from "./calendar";
import { dnsHoleRouter } from "./dns-hole";
import { downloadsRouter } from "./downloads";
import { healthMonitoringRouter } from "./health-monitoring";
import { indexerManagerRouter } from "./indexer-manager";
import { mediaRequestsRouter } from "./media-requests";
import { mediaServerRouter } from "./media-server";
import { mediaTranscodingRouter } from "./media-transcoding";
import { minecraftRouter } from "./minecraft";
import { networkControllerRouter } from "./network-controller";
import { notebookRouter } from "./notebook";
import { optionsRouter } from "./options";
import { releasesRouter } from "./releases";
import { rssFeedRouter } from "./rssFeed";
import { smartHomeRouter } from "./smart-home";
import { stockPriceRouter } from "./stocks";
import { weatherRouter } from "./weather";
export const widgetRouter = createTRPCRouter({ export const widgetRouter = createTRPCRouter({
notebook: notebookRouter, notebook: lazy(() => import("./notebook").then((mod) => mod.notebookRouter)),
weather: weatherRouter, weather: lazy(() => import("./weather").then((mod) => mod.weatherRouter)),
app: appRouter, app: lazy(() => import("./app").then((mod) => mod.appRouter)),
dnsHole: dnsHoleRouter, dnsHole: lazy(() => import("./dns-hole").then((mod) => mod.dnsHoleRouter)),
smartHome: smartHomeRouter, smartHome: lazy(() => import("./smart-home").then((mod) => mod.smartHomeRouter)),
stockPrice: stockPriceRouter, stockPrice: lazy(() => import("./stocks").then((mod) => mod.stockPriceRouter)),
mediaServer: mediaServerRouter, mediaServer: lazy(() => import("./media-server").then((mod) => mod.mediaServerRouter)),
calendar: calendarRouter, calendar: lazy(() => import("./calendar").then((mod) => mod.calendarRouter)),
downloads: downloadsRouter, downloads: lazy(() => import("./downloads").then((mod) => mod.downloadsRouter)),
mediaRequests: mediaRequestsRouter, mediaRequests: lazy(() => import("./media-requests").then((mod) => mod.mediaRequestsRouter)),
rssFeed: rssFeedRouter, rssFeed: lazy(() => import("./rssFeed").then((mod) => mod.rssFeedRouter)),
indexerManager: indexerManagerRouter, indexerManager: lazy(() => import("./indexer-manager").then((mod) => mod.indexerManagerRouter)),
healthMonitoring: healthMonitoringRouter, healthMonitoring: lazy(() => import("./health-monitoring").then((mod) => mod.healthMonitoringRouter)),
mediaTranscoding: mediaTranscodingRouter, mediaTranscoding: lazy(() => import("./media-transcoding").then((mod) => mod.mediaTranscodingRouter)),
minecraft: minecraftRouter, minecraft: lazy(() => import("./minecraft").then((mod) => mod.minecraftRouter)),
options: optionsRouter, options: lazy(() => import("./options").then((mod) => mod.optionsRouter)),
releases: releasesRouter, releases: lazy(() => import("./releases").then((mod) => mod.releasesRouter)),
networkController: networkControllerRouter, networkController: lazy(() => import("./network-controller").then((mod) => mod.networkControllerRouter)),
}); });