DEV Community

Cover image for ECMAScript decorators with Vite
Kiran Mantha
Kiran Mantha

Posted on

ECMAScript decorators with Vite

I felt very happy when i saw the progress on bringing typescript decorators to vanillajs. I thought to give it a try in my vanillajs + vite application and bammmmm πŸ’₯ it broke 🀯 πŸ™‡β€β™‚οΈ.

ESbuild, which comes with OOB of vite, doesn't support decorators yet πŸ™„ 🀷

That only left me the option to go for babel but i don't want to get away from my love, vite πŸ₯Ί

Then i found the vite-plugin-babel package and made few changes to vite config. It worked wohooooo 🀩

Here's the config:

import { defineConfig } from 'vite';
import babel from 'vite-plugin-babel';

export default defineConfig({
  base: "./",
  plugins: [
    babel({
      babelConfig: {
        babelrc: false,
        configFile: false,
        plugins: [
          [
            "@babel/plugin-proposal-decorators",
            { loose: true, version: "2022-03" },
          ],
        ],
      },
    }),
  ],
  server: {
    host: true,
    port: 3001,
    open: "/",
  },
});
Enter fullscreen mode Exit fullscreen mode

That's it. This resolved my issue and i happily went on using decorators in javascript.

FYI, decorator proposal is in stage3 and one step behind of getting finalized.

Thanks for the read,
Kiran πŸ‘‹ πŸ‘‹

Top comments (5)

Collapse
Β 
przyb profile image
Jakub Przyborowski β€’

Hi @kiranmantha, Kuba here from the team behind this tiny plugin. Thanks for using vite-plugin-babel and spreading a good word about it! :) Cheers! πŸ™Œ

Collapse
Β 
naucode profile image
Al - Naucode β€’

Great article, you got my follow, keep writing!

Collapse
Β 
kiranmantha profile image
Kiran Mantha β€’

Thanks alot @naubit . 😊

Collapse
Β 
daria_selezneva_af738b49f profile image
Daria Selezneva β€’

Cannot start nuxt: Invalid plugin. src option is required: {"name":"babel-plugin","enforce":"pre"}

Collapse
Β 
kiranmantha profile image
Kiran Mantha β€’

Can you provide me ur git repo.. I'll check it out