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>

83 lines (76 loc) 2.34 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'] /* use rollup to build esm code that target nodejs (run in native esm mode) instead of using tsc only to avoid error like this: [ERR_UNSUPPORTED_DIR_IMPORT]: Directory import '/path/to/vite-plugin-react-pages/packages/react-pages/dist/node-esm/page-strategy/DefaultPageStrategy' is not supported resolving ES modules imported from /path/to/vite-plugin-react-pages/packages/react-pages/dist/node-esm/index.js It is more flexable to use a bundler to build code for nodejs platform because: - it allows us to use directory import in source code - we don't need to add `.js` extension in relative import - we can bundle include some deps (currently we external all deps) */ export default [ { input: ['src/node/index.ts', 'src/node/cli.ts'], output: { dir: 'dist/node-esm', entryFileNames: `[name].mjs`, format: 'esm', sourcemap: true, }, external: [], plugins: [...plugins()], }, { input: 'src/node/index.ts', output: { dir: 'dist/node-cjs', entryFileNames: `[name].cjs`, format: 'cjs', sourcemap: true, exports: 'named', }, external: [], plugins: [ ...plugins({ // bundle esm-only packages if they can not be dynamically imported resolveOnly: (module) => module.startsWith('unist-util-') || module.startsWith('mdast-util-'), }), { // keep dynamic import to import esm-only packages // https://rollupjs.org/guide/en/#renderdynamicimport name: 'vite-pages-esm-dynamic-import', resolveDynamicImport(specifier) { return false }, renderDynamicImport({ targetModuleId }) { return { left: 'import(', right: ')', } }, }, ], }, ] function plugins({ resolveOnly } = {}) { return [ resolve({ // prevent bundling unexpected deps resolveOnly: resolveOnly || ['none!'], extensions, }), commonjs(), babel({ babelHelpers: 'bundled', extensions, presets: ['@babel/preset-typescript'], plugins: [], configFile: false, }), ] }