Skip to content

Latest commit

 

History

History
125 lines (89 loc) · 2.64 KB

valid-define-options.md

File metadata and controls

125 lines (89 loc) · 2.64 KB
pageClass sidebarDepth title description since
rule-details
0
vue/valid-define-options
enforce valid `defineOptions` compiler macro
v9.13.0

vue/valid-define-options

enforce valid defineOptions compiler macro

  • ⚙️ This rule is included in all of "plugin:vue/essential", *.configs["flat/essential"], "plugin:vue/strongly-recommended", *.configs["flat/strongly-recommended"], "plugin:vue/recommended" and *.configs["flat/recommended"].

This rule checks whether defineOptions compiler macro is valid.

📖 Rule Details

This rule reports defineOptions compiler macros in the following cases:

  • defineOptions is referencing locally declared variables.
  • defineOptions has been called multiple times.
  • Options are not defined in defineOptions.
  • defineOptions has type arguments.
  • defineOptions has props, emits, expose or slots options.
<script setup>
/* ✓ GOOD */
defineOptions({ name: 'foo' })
</script>
<script>
const def = { name: 'foo' }
</script>
<script setup>
/* ✓ GOOD */
defineOptions(def)
</script>
<script setup>
/* ✗ BAD */
const def = { name: 'foo' }
defineOptions(def)
</script>
<script setup>
/* ✗ BAD */
defineOptions({ name: 'foo' })
defineOptions({ inheritAttrs: false })
</script>
<script setup>
/* ✗ BAD */
defineOptions()
</script>
<script setup lang="ts">
/* ✗ BAD */
defineOptions<{ name: 'Foo' }>()
</script>
<script setup>
/* ✗ BAD */
defineOptions({ props: { msg: String } })
</script>

🔧 Options

Nothing.

👫 Related Rules

🚀 Version

This rule was introduced in eslint-plugin-vue v9.13.0

🔍 Implementation