Skip to content

Latest commit

 

History

History
181 lines (137 loc) · 3.35 KB

no-undef-components.md

File metadata and controls

181 lines (137 loc) · 3.35 KB
pageClass sidebarDepth title description since
rule-details
0
vue/no-undef-components
disallow use of undefined components in `<template>`
v8.4.0

vue/no-undef-components

disallow use of undefined components in <template>

This rule reports components that are used in the <template>, but that are not defined in the <script setup> or the Options API's components section.

Undefined components will be resolved from globally registered components. However, if you are not using global components, you can use this rule to prevent run-time errors.

::: warning Note This rule cannot check globally registered components and components registered in mixins unless you add them as part of the ignored patterns. :::

<script setup>
import Foo from './Foo.vue'
</script>

<template>
  <!-- ✓ GOOD -->
  <Foo />

  <!-- ✗ BAD -->
  <Bar />
</template>
<!-- ✓ GOOD -->
<template>
  <div>
    <h2>Lorem ipsum</h2>
    <the-modal>
      <component is="TheInput" />
      <component :is="'TheDropdown'" />
      <TheButton>CTA</TheButton>
    </the-modal>
  </div>
</template>

<script>
import TheButton from 'components/TheButton.vue'
import TheModal from 'components/TheModal.vue'
import TheInput from 'components/TheInput.vue'
import TheDropdown from 'components/TheDropdown.vue'

export default {
  components: {
    TheButton,
    TheModal,
    TheInput,
    TheDropdown,
  }
}
</script>
<!-- ✗ BAD -->
<template>
  <div>
    <h2>Lorem ipsum</h2>
    <TheModal />
  </div>
</template>

<script>
export default {
  components: {

  }
}
</script>

🔧 Options

{
  "vue/no-undef-components": ["error", {
    "ignorePatterns": []
  }]
}
  • ignorePatterns Suppresses all errors if component name matches one or more patterns.

ignorePatterns: ['custom(\\-\\w+)+']

<script setup>
</script>

<template>
  <!-- ✓ GOOD -->
  <CustomComponent />

  <!-- ✗ BAD -->
  <Bar />
</template>
<!-- ✓ GOOD -->
<template>
  <div>
    <h2>Lorem ipsum</h2>
    <CustomComponent />
  </div>
</template>

<script>
  export default {
    components: {

    },
  }
</script>
<!-- ✗ BAD -->
<template>
  <div>
    <h2>Lorem ipsum</h2>
    <WarmButton />
  </div>
</template>

<script>
  export default {
    components: {

    },
  }
</script>

👫 Related Rules

🚀 Version

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

🔍 Implementation