This release is 2 versions behind 1.2.0 — the latest version of @ryoppippi/unplugin-typia. Jump to latest
@ryoppippi/unplugin-typia@1.1.0Built and signed on GitHub ActionsBuilt and signed on GitHub Actions
Built and signed on GitHub Actions
unplugin for Typia with an extra Bun plugin 🫶
This package works with Node.js, Bun

JSR Score
100%
Published
2 months ago (1.1.0)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258# unplugin-typia **unplugin for [Typia](https://typia.io/)** [](https://npmjs.com/package/@ryoppippi/unplugin-typia) [](https://npmjs.com/package/@ryoppippi/unplugin-typia) [](https://jsr.io/@ryoppippi/unplugin-typia) [](https://jsr.io/@ryoppippi/unplugin-typia) ## Why Typia is fantastic, but it is hard to setup, even for frontend development. If you use some bundlers for frontend like `Vite`, it is even harder to setup. This unplugin aims to make it easier to use Typia in your projects. ## Install First, install `unplugin-typia`: ```bash # jsr(recommended) npx jsr add -D @ryoppippi/unplugin-typia # npm npm install -D @ryoppippi/unplugin-typia ``` Then, install `typia`: ```bash # install typia! (nypm detects your PM ✨) npx nypm add typia # setup typia! npx typia setup # pnpm dlx typia setup # yarn dlx typia setup # after installing typia, run prepare script npm run prepare ``` More details about setting up Typia can be found in the [Typia Docs](https://typia.io/docs/setup/#unplugin-typia). Then, add the unplugin to your favorite bundler: <details> <summary>Vite</summary><br> ```ts // vite.config.ts import UnpluginTypia from '@ryoppippi/unplugin-typia/vite'; export default defineConfig({ plugins: [ UnpluginTypia({ /* options */ }), // should be placed before other plugins like `react`, `svetle`, etc. ], }); ``` > When using typia with types imported from non-relative paths like tsconfig `compilerOptions.paths` or relative to > tsconfig `compilerOptions.baseUrl`, they must be defined in vite.config.ts under [resolve.alias](https://vitejs.dev/config/shared-options#resolve-alias) > in order to be resolved, according to vite's resolution mechanism. Examples: - [`examples/vite-react`](https://github.com/ryoppippi/unplugin-typia/tree/main/examples/vite-react) - [`examples/vite-hono`](https://github.com/ryoppippi/unplugin-typia/tree/main/examples/vite-hono) - [`examples/sveltekit`](https://github.com/ryoppippi/unplugin-typia/tree/main/examples/sveltekit) <br></details> <details> <summary>esbuild</summary><br> ```ts // esbuild.config.js import UnpluginTypia from '@ryoppippi/unplugin-typia/esbuild'; export default { plugins: [ UnpluginTypia({ /* options */ }), ], }; ``` Examples: - [`tests/rollup.spec.ts`](https://github.com/ryoppippi/unplugin-typia/tree/main/packages/unplugin-typia/tests/esbuild.spec.ts) <br></details> <details> <summary>Next.js</summary><br> ```js // next.config.mjs import unTypiaNext from 'unplugin-typia/next'; /** @type {import('next').NextConfig} */ const nextConfig = { /* your next.js config */}; /** @type {import("unplugin-typia").Options} */ const unpluginTypiaOptions = { /* your unplugin-typia options */ }; export default unTypiaNext(nextConfig, unpluginTypiaOptions); // you can omit the unplugin-typia options when you don't need to customize it // export default unTypiaNext(nextConfig); ``` Examples: - [`examples/nextjs`](https://github.com/ryoppippi/unplugin-typia/tree/main/examples/nextjs) <br></details> <details> <summary>Bun.build</summary><br> ### Example 1: Using for building script ```ts // build.ts import UnpluginTypia from '@ryoppippi/unplugin-typia/bun'; await Bun.build({ entrypoints: ['./index.ts'], outdir: './out', plugins: [ UnpluginTypia({ /* your options */}) ] }); ``` For building the script: ```sh bun run ./build.ts node ./out/index.js ``` Check the [Plugins – Bundler | Bun Docs](https://bun.sh/docs/bundler/plugins) for more details. ### Example 2: Using for running script ```ts // preload.ts import { plugin } from 'bun'; import UnpluginTypia from '@ryoppippi/unplugin-typia/bun'; plugin(UnpluginTypia({ /* your options */})); ``` ```toml # bun.toml preload = "preload.ts" [test] preload = "preload.ts" ``` For running the script: ```sh bun run ./index.ts ``` Check the [Plugins – Runtime | Bun Docs](https://bun.sh/docs/runtime/plugins) for more details. <br></details> <details> <summary>Rollup</summary><br> ```ts // rollup.config.js import UnpluginTypia from '@ryoppippi/unplugin-typia/rollup'; export default { plugins: [ UnpluginTypia({ /* options */ }), ], }; ``` Examples: - [`tests/rollup.spec.ts`](https://github.com/ryoppippi/unplugin-typia/tree/main/packages/unplugin-typia/tests/rollup.spec.ts) <br></details> <details> <summary>Webpack</summary><br> > ⚠️ Note: Currently, this plugin works only with 'esm' target. > If you want to use 'cjs' target on Node < 20.17.0 , please use with [`jiti`](https://github.com/unjs/jiti). > If you want to use 'cjs' target on Node >= 20.17.0, please use with `require` and enable [`--experimental-require-modules` flag](https://github.com/nodejs/node/pull/51977). > If you want to use 'esm' target, don't worry! You can use this plugin without any additional setup. ```sh npm install jiti ``` ```js // webpack.config.js // if you use Node < 20.17.0 const jiti = require('jiti')(__filename); const { default: UnpluginTypia } = jiti('@ryoppippi/unplugin-typia/webpack'); // if you use Node >= 20.17.0 // const { default: UnpluginTypia } = require("@ryoppippi/unplugin-typia/webpack"); module.exports = { plugins: [ UnpluginTypia({ /* options */ }), ], }; ``` <br></details> More integration guides can be found in the [`JSR Doc`](https://jsr.io/@ryoppippi/unplugin-typia/doc) You can find examples in the [`examples/`](https://github.com/ryoppippi/unplugin-typia/tree/main/examples). ## Supported File Extensions - `.ts` - `.tsx` - `.mts` - `.mtsx` - `.svelte` (only script tag with `lang="ts"`) ## Development This repository is a monorepo managed by [Bun](https://bun.sh). - [unplugin-typia](https://github.com/ryoppippi/unplugin-typia/tree/main/packages/unplugin-typia) - [examples](https://github.com/ryoppippi/unplugin-typia/tree/main/examples) ```sh bun i --frozen-lockfile ``` ## Acknowledgements This project started as an unofficial integration of Typia for bundlers. Now, this plugin is one of the official integrations of Typia and is sponsored by [@samchon](https://github.com/samchon) (the creator of Typia). ## LICENSE [MIT](./LICENSE) 