vue-automatic-import-loader

Using a match function to automatic import your own project's components
1,479 23
Install
npm install vue-automatic-import-loader
Latest Version:1.0.0
License:MIT
Last Updated:Dec 11, 2022
Links: GitHub  ·  npm
Maintainer: hunterliu1003

vue-automatic-import-loader

Using a match function to automatic import your own project's components

This repo copy from vuetify-loader and remove the vuetify part.

Introduction

vue-automatic-import-loader is a webpack plugin that automatically import SFC.

Here is the example:

<template>
  <base-button>This is a button component</base-button>
</template>

will be automatically compiled to:

<template>
  <base-button>This is a button component</base-button>
</template>

<script>
  import BaseButton from '@/components/base/Button.vue'

  export default {
    components: {
      BaseButton
    }
  }
</script>

Run example project

$ git clone https://github.com/hunterliu1003/vue-automatic-import-loader.git
$ cd vue-automatic-import-loader/dev
$ yarn install
$ yarn serve

Then you can see demo in http://localhost:8080/

Usage

Install package

$ npm install --save vue-automatic-import-loader
# or
$ yarn add vue-automatic-import-loader

Vue CLI 3

in vue.config.js:

const VueAutomaticImportPlugin = require('vue-automatic-import-loader/lib/plugin')

module.exports = {
  configureWebpack: {
    plugins: [
      new VueAutomaticImportPlugin({
        match(originalTag, { kebabTag, camelTag }) {
          /**
           * This function will be called for every tag used in each vue component
           * It should return an array, the first element will be inserted into the
           * components array, the second should be a corresponding import
           *
           * originalTag - the tag as it was originally used in the template
           * kebabTag    - the tag normalised to kebab-case
           * camelTag    - the tag normalised to PascalCase
           * path        - a relative path to the current .vue file
           * component   - a parsed representation of the current component
           */
          if (kebabTag.startsWith('base-')) {
            return [
              camelTag,
              `import ${camelTag} from '@/components/base/${camelTag}.vue'`
            ]
          }
        }
      })
    ]
  }
}

Nuxt.js

in nuxt.config.js:

import VueAutomaticImportPlugin from 'vue-automatic-import-loader/lib/plugin'

export default {
  build: {
    plugins: [
      new VueAutomaticImportPlugin({
        match(originalTag, { kebabTag, camelTag, path, component }) {
          /**
           * This function will be called for every tag used in each vue component
           * It should return an array, the first element will be inserted into the
           * components array, the second should be a corresponding import
           *
           * originalTag - the tag as it was originally used in the template
           * kebabTag    - the tag normalised to kebab-case
           * camelTag    - the tag normalised to PascalCase
           * path        - a relative path to the current .vue file
           * component   - a parsed representation of the current component
           */
          if (kebabTag.startsWith('base-')) {
            return [
              camelTag,
              `import ${camelTag} from '@/components/base/${camelTag}.vue'`
            ]
          }
        }
      })
    ]
  }
}

Related Packages

vue-cli-plugin-import-components

Automatically import components in your Vue CLI app

2,097 39
vue3-i18n-service

Collects SFC i18n's and makes them translatable with one file

14,527 0
auto-textarea

基于Vue的自适应高度的文本输入框

3,050 26
eslint-import-resolver-nuxt-import

ESLint plugin with rules that help validate proper imports.

1,658 2
vue-auto-draggable

An element-dragable plug-in based on Vue3.3

551 3

Version History

Version Released License
1.0.0 MIT
0.1.4 MIT
0.1.3 MIT
0.1.2 MIT
0.1.1 MIT