# vue/define-macros-order

enforce order of defineEmits and defineProps compiler macros

# 📖 Rule Details

This rule reports the defineProps and defineEmits compiler macros when they are not the first statements in <script setup> (after any potential import statements or type definitions) or when they are not in the correct order.

# 🔧 Options

{
  "vue/define-macros-order": ["error", {
    "order": ["defineProps", "defineEmits"]
  }]
}
  • order (string[]) ... The order of defineEmits and defineProps macros

# { "order": ["defineProps", "defineEmits"] } (default)

<!-- ✓ GOOD --> <script setup> defineProps(/* ... */) defineEmits(/* ... */) </script>
Now loading...
<!-- ✗ BAD --> <script setup> defineEmits(/* ... */) defineProps(/* ... */) </script>
Now loading...
<!-- ✗ BAD --> <script setup> const bar = ref() defineProps(/* ... */) defineEmits(/* ... */) </script>
Now loading...

# 🚀 Version

This rule was introduced in eslint-plugin-vue v8.7.0

# 🔍 Implementation