@itcase/next
v2.0.4
Published
Shared Next.js page shell, content editor, SEO, API proxy, and default config for ITCase apps.
Maintainers
Readme
@itcase/next
Shared Next.js pieces for ITCase apps: the CMS page view, TinyMCE content editor, SEO wrapper, API proxy, and a default Next config.
The published package is the dist build. Import the paths below; the TypeScript sources are not shipped.
Page UI
import {
BasePageWrapper,
ContentEditor,
Page,
TinyMCEContextProvider,
} from '@itcase/next'Page renders CMS blocks. ContentEditor edits one block. BasePageWrapper renders the document shell and SEO tags. TinyMCEContextProvider shares editor access with the page.
Default Next config
next.config is loaded by Node, so this entry is plain JavaScript.
import defaultNextConfig, {
assertRequiredEnv,
copyDirectoryToApps,
} from '@itcase/next/config/defaultNextConfig'
// Copies `<directory>` into `<appsDirectory>/<app>/<directory>`.
// Defaults: appsDirectory `apps`, directory `public`.
copyDirectoryToApps({
apps: ['auth', 'manager', 'pages', 'participant'],
appsDirectory: 'apps',
directory: 'public',
})
// After loadEnvConfig(), so .env.local is already applied.
assertRequiredEnv(['REST_BASE_URL'])
const defaultConfig = defaultNextConfig()assertRequiredEnv stops the process when a listed name is missing or blank. Omit the call when the app has nothing to require.
copyDirectoryToApps copies one root directory into each app, keeping the same folder name. Next serves only that folder inside the app. When the process starts inside one listed app, only that app is updated. From the repository root, every listed app that has a package.json is updated. appsDirectory defaults to apps, directory defaults to public.
API proxy
App Router catch-all:
export {
DELETE,
GET,
HEAD,
OPTIONS,
PATCH,
POST,
PUT,
} from '@itcase/next/router/app/api/[...url]/route'Pages Router catch-all:
export { config, default } from '@itcase/next/router/pages/api/[...url]'Both forward /api/* and /media/* to the REST and media backends.
Pages Router data
The server helpers live next to the Pages Router code and are imported as @itcase/next/server.
import {
getPageCanonicalUrl,
getPageServerSideProps,
getServerSidePageData,
requestProxy,
} from '@itcase/next/server'getPageServerSideProps loads a CMS page for getServerSideProps. getPageCanonicalUrl builds the canonical URL for SSR or SSG. requestProxy is the Pages Router proxy handler.
