import fs from 'fs'; import Document, { Html, Head, Main, NextScript } from 'next/document'; import { Favicon, CustomJavascript, CustomHtml } from '~/components'; import favicons from '../favicon-formats'; import type { DocumentContext, DocumentInitialProps } from 'next/document'; interface DocumentExtra extends DocumentInitialProps { customJs: string; customHtml: string; } class MyDocument extends Document { static async getInitialProps(ctx: DocumentContext): Promise { const initialProps = await Document.getInitialProps(ctx); const customJs = fs.readFileSync('custom.js').toString(); const customHtml = fs.readFileSync('custom.html').toString(); return { customJs, customHtml, ...initialProps }; } render(): JSX.Element { return ( {favicons.map((favicon, idx) => ( ))} {this.props.customJs}
{this.props.customHtml} ); } } export default MyDocument;