0.4.1 • Published 12 months ago

unplugin-vue-tsx-auto-props v0.4.1

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

unplugin-vue-tsx-auto-props

NPM version

Why?

Vue does not provide a way to automatically specify props for functional components written in TSX. This plugin solves this problem.

Before:

import { defineComponent } from "vue";

interface Props {
  foo: string;
}

const Foo = defineComponent((props: Props) => () => <div>{props.foo}</div>);
Foo.props = ["foo"]; // 👈 You need to manually specify the props :(

After:

import { defineComponent } from "vue";

interface Props {
  foo: string;
}

const Foo = defineComponent((props: Props) => () => <div>{props.foo}</div>);
Object.defineProperty(Foo, "props", {
  value: ["foo"],
}); // 👈 This plugin will do it for you!

📦 Installation

$ npm install -D unplugin-vue-tsx-auto-props
$ yarn add -D unplugin-vue-tsx-auto-props
$ pnpm add -D unplugin-vue-tsx-auto-props

🚀 Usage

// vite.config.ts
import VueTsxAutoProps from "unplugin-vue-tsx-auto-props/vite";

export default defineConfig({
  plugins: [
    VueTsxAutoProps({
      /* options */
    }),
  ],
});

// rollup.config.js
import VueTsxAutoProps from "unplugin-vue-tsx-auto-props/rollup";

export default {
  plugins: [
    VueTsxAutoProps({
      /* options */
    }),
    // other plugins
  ],
};

// webpack.config.js
module.exports = {
  /* ... */
  plugins: [
    require("unplugin-vue-tsx-auto-props/webpack")({
      /* options */
    }),
  ],
};

// nuxt.config.ts
export default defineNuxtConfig({
  modules: ["unplugin-vue-tsx-auto-props/nuxt"],
});

// vue.config.js
module.exports = {
  configureWebpack: {
    plugins: [
      require("unplugin-vue-tsx-auto-props/webpack")({
        /* options */
      }),
    ],
  },
};

// quasar.conf.js [Vite]
module.exports = {
  vitePlugins: [
    [
      "unplugin-vue-tsx-auto-props/vite",
      {
        /* options */
      },
    ],
  ],
};
// quasar.conf.js [Webpack]
const VueTsxAutoPropsPlugin = require("unplugin-vue-tsx-auto-props/webpack");

module.exports = {
  build: {
    chainWebpack(chain) {
      chain.plugin("unplugin-vue-tsx-auto-props").use(
        VueTsxAutoPropsPlugin({
          /* options */
        }),
      );
    },
  },
};

// esbuild.config.js
import { build } from "esbuild";

build({
  /* ... */
  plugins: [
    require("unplugin-vue-tsx-auto-props/esbuild")({
      /* options */
    }),
  ],
});

// astro.config.mjs
import VueTsxAutoProps from "unplugin-vue-tsx-auto-props/astro";

export default defineConfig({
  integrations: [
    VueTsxAutoProps({
      /* options */
    }),
  ],
});

📝 License

MIT. Made with ❤️ by Ray

0.4.1

12 months ago

0.4.0

12 months ago

0.3.1

12 months ago

0.3.0

12 months ago

0.2.0

12 months ago

0.1.1

12 months ago

0.1.0

12 months ago