unplugin-jsx-string 

Converts JSX to HTML strings at compile time.
Installation
npm i unplugin-jsx-string
Vite
import DefineOptions from 'unplugin-jsx-string/vite'
import Vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [Vue(), DefineOptions()],
})
Rollup
import DefineOptions from 'unplugin-jsx-string/rollup'
export default {
plugins: [DefineOptions()],
}
esbuild
import { build } from 'esbuild'
build({
plugins: [
require('unplugin-jsx-string/esbuild')(),
],
})
Webpack
module.exports = {
plugins: [require('unplugin-jsx-string/webpack')()],
}
Vue CLI
module.exports = {
configureWebpack: {
plugins: [require('unplugin-jsx-string/webpack')()],
},
}
TypeScript Support
// tsconfig.json
{
"compilerOptions": {
// ...
"types": ["unplugin-jsx-string" /* ... */]
}
}
Usage
jsxToString(<div>Hello</div>)
jsxToString(<div className={['bar', 'foo']} />)
jsxToString(<div style={{ color: 'red', textAlign: 'center' }} />)
jsxToString(<button onClick={() => 'clicked'}></button>)
jsxToString(
<div>
<p>foo</p>
<p>bar</p>
<br />
<div />
123
</div>
)
License
MIT License © 2022 三咲智子