Eslint-plugin-vue: Rule proposal: no-unused-component

Created on 1 Mar 2018  路  3Comments  路  Source: vuejs/eslint-plugin-vue

Hello there,

In the SFC-styled component definition, one can import a component, and then register it in the components section, while not using it in the template. See the example below:

<template>
  <div>I'm not using any component.</div>
</template>

<script>
  import SomeComponent from './somewhere'
  export default {
    components: {
      SomeComponent  // Should be treated as unused component
    }
  }
</script>

In this case, the imported component is considered as used variable according to standard eslint rules, since the components section contains its reference. If there is a rule in eslint-plugin-vue that could prevent this happening, it would be great.

Cheers,
Zihan

accepted proposition new rule proposition

Most helpful comment

What about syntax like:
<template><component is="component_name"/></template>
when

const component_1 = import('./component_1.vue')
export default {
  components: {
    'component_name': component_1
  }
}

this is primarily used for dynamic components.
This currently can not be identified as used component.

All 3 comments

I agree this would be great - I'd put it in strongly-recommended.

Thank you very much for implementing the rule, it helps us a lot! 馃憤

What about syntax like:
<template><component is="component_name"/></template>
when

const component_1 = import('./component_1.vue')
export default {
  components: {
    'component_name': component_1
  }
}

this is primarily used for dynamic components.
This currently can not be identified as used component.

Was this page helpful?
0 / 5 - 0 ratings