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>

65 lines (57 loc) 1.97 kB
import chalk from 'chalk' import fs from 'fs-extra' import minimist from 'minimist' import path from 'node:path' import { resolveConfig } from 'vite' import type { InlineConfig } from 'vite' import { PKG_ROOT } from './constants' import { ssrBuild } from './static-site-generation' import type { staticSiteGenerationConfig } from './types' const argv: any = minimist(process.argv.slice(2)) console.log( chalk.cyan( `vite-pages v${ fs.readJSONSync(path.resolve(PKG_ROOT, 'package.json')).version }` ) ) // console.log(chalk.cyan(`vite v${require('vite/package.json').version}`)) // cli usage: vite-pages ssr [root] [--minifyHtml] [vite options like: --configFile, --base, --logLevel, --mode, --build.outDir, etc.] const [command, root] = argv._ if (root) { argv.root = root } // make `--minifyHtml=false` to be treated as boolean false instead of string "false" Object.entries(argv).forEach(([key, value]) => { if (value === 'false') argv[key] = false }) // console.log('@@argv', argv) ;(async () => { if (!command || command === 'ssr') { const toBeResovledConfig: InlineConfig = { ...argv, } // user can pass in vite config like --outDir or --configFile const viteConfig = await resolveConfig( toBeResovledConfig, 'build', 'production', 'production' ) const thisPlugin = viteConfig.plugins.find((plugin) => { return plugin.name === 'vite-plugin-react-pages' }) //@ts-expect-error const ssrConfig = thisPlugin?.vitePagesStaticSiteGeneration as | staticSiteGenerationConfig | undefined await ssrBuild(viteConfig, argv, ssrConfig).catch((err: any) => { console.error(chalk.red(`ssr error:\n`), err) process.exit(1) }) } else { console.error( `[vite-pages] Invalid command. CLI usage: vite-pages ssr [root] [--minifyHtml] [vite options like: --configFile, --base, --logLevel, --mode, --build.outDir, etc.]` ) } })()