4466ba436b
## Description This PR ensures that the default prettier config is used for examples and templates. This config is compatible with `prettier@3` as well (upgrading prettier is bigger change that can be a future PR). ## Changes - Updated `.prettierrc.json` in root with `"trailingComma": "es5"` (will be needed upgrading to prettier@3) - Added `examples/.prettierrc.json` with default config (this will change every example) - Added `packages/create-next-app/templates/.prettierrc.json` with default config (this will change every template) ## Related - Fixes #54402 - Closes #54409
33 lines
1,008 B
TypeScript
33 lines
1,008 B
TypeScript
import type { DocumentContext, DocumentInitialProps } from "next/document";
|
|
import Document from "next/document";
|
|
import { ServerStyleSheet, StyleSheetManager } from "styled-components";
|
|
import stylisRTLPlugin from "stylis-plugin-rtl";
|
|
|
|
export default class MyDocument extends Document {
|
|
static async getInitialProps(
|
|
ctx: DocumentContext,
|
|
): Promise<DocumentInitialProps> {
|
|
const sheet = new ServerStyleSheet();
|
|
const originalRenderPage = ctx.renderPage;
|
|
|
|
try {
|
|
ctx.renderPage = () =>
|
|
originalRenderPage({
|
|
enhanceApp: (App) => (props) =>
|
|
sheet.collectStyles(
|
|
<StyleSheetManager stylisPlugins={[stylisRTLPlugin]}>
|
|
<App {...props} />
|
|
</StyleSheetManager>,
|
|
),
|
|
});
|
|
|
|
const initialProps = await Document.getInitialProps(ctx);
|
|
return {
|
|
...initialProps,
|
|
styles: [initialProps.styles, sheet.getStyleElement()],
|
|
};
|
|
} finally {
|
|
sheet.seal();
|
|
}
|
|
}
|
|
}
|