UNPKG

vite-plugin-react-pages

Version:

<p> <a href="https://www.npmjs.com/package/vite-plugin-react-pages" target="_blank" rel="noopener"><img src="https://img.shields.io/npm/v/vite-plugin-react-pages.svg" alt="npm package" /></a> </p>

69 lines (64 loc) 1.75 kB
import babel from '@rollup/plugin-babel' import commonjs from '@rollup/plugin-commonjs' import resolve from '@rollup/plugin-node-resolve' const extensions = ['.js', '.jsx', '.ts', '.tsx'] /* bundle client modules to reduce browser request during dev also prevent conflict npm packages with users (like jotai) */ export default [ { input: [ 'src/client/entries/ssg-client.tsx', 'src/client/entries/ssg-server.tsx', ], ...config(), }, // 1. stand alone bundle for dev, without code spliting. To reduce request waterfall // 2. `hoistTransitiveImports` will add import (like `import '/@react-pages/pages'`) to the entry, which will mess up the hmr handling, so turn it off { input: ['src/client/entries/csr.tsx'], ...config({ hoistTransitiveImports: false }), }, ] function config({ hoistTransitiveImports } = {}) { return { output: { dir: 'dist/client-bundles/entries', entryFileNames: `[name].mjs`, format: 'esm', sourcemap: true, hoistTransitiveImports, }, external: [], plugins: [ { name: 'client-external', resolveId(source, importer) { if (source.startsWith('/@react-pages/')) { return { id: source, external: 'absolute', } } }, }, resolve({ // prevent bundling unexpected deps resolveOnly: ['jotai'], extensions, }), commonjs(), babel({ babelHelpers: 'bundled', extensions, presets: [ '@babel/preset-typescript', ['@babel/preset-react', { runtime: 'automatic' }], ], plugins: [], configFile: false, }), ], } }