mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
165924b71b
* Server JSON pages directly from the filesystem. * Make Json pages even if there's an error. * Implement much better page serving. * Use JsonPagesPlugin in the production mode as well. * Add gzip support for JSON pages. * Use glob-promise instead of recursive-readdir * Handle renderStatic 404 properly. * Simply the gzip code. * Cache already read JSON pages. * Change JSON pages extension to .json. * Fix HMR related issue. * Fix hot-reload for .json solely on server. * Properly clear cache on hot-reloader. * Convert .js pages into .json page right inside the plugin. * Fix gzipping .json pages. * Remove unwanted json pages cleanup. * Get rid of deprecated fs.exists for fs.access
26 lines
481 B
JavaScript
26 lines
481 B
JavaScript
import fs from 'mz/fs'
|
|
import resolve from './resolve'
|
|
|
|
/**
|
|
* resolve a JSON page like `require.resolve`,
|
|
* and read and cache the file content
|
|
*/
|
|
|
|
async function readPage (path) {
|
|
const f = await resolve(path)
|
|
if (cache.hasOwnProperty(f)) {
|
|
return cache[f]
|
|
}
|
|
|
|
const source = await fs.readFile(f, 'utf8')
|
|
const { component } = JSON.parse(source)
|
|
|
|
cache[f] = component
|
|
return component
|
|
}
|
|
|
|
export default readPage
|
|
export const cache = {}
|
|
|
|
readPage.cache = cache
|