unplugin-auto-import的配置和eslint报错解决

本文介绍了unplugin-auto-import的配置方法,包括自动导入目标文件类型和全局插件设置,并展示了如何解决eslint报错。通过eslintrc配置文件,可以避免eslint冲突。同时,讨论了.d.ts文件的引入以解决类型错误,以及在eslint 8.*版本后的配置变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unplugin-auto-import的配置和eslint报错解决

先上官网:unplugin-auto-import

unplugin-auto-import 解决了vue3-hook、vue-router、useVue等多个插件的自动导入,也支持自定义插件的自动导入,是一个功能强大的typescript支持工具。

unplugin-auto-import常用的配置如下:

AutoImport({
  // 目标文件
  include: [
    /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
    /\.vue$/, /\.vue\?vue/, // .vue
    /\.md$/, // .md
  ],

  // 全局引入插件
  imports: [
    // presets
    'vue',
    'vue-router',
    // custom
    {
      '@vueuse/core': [
        // named imports
        'useMouse', // import { useMouse } from '@vueuse/core',
        // alias
        ['useFetch', 'useMyFetch'], // import { useFetch as useMyFetch } from '@vueuse/core',
      ],
      'axios': [
        // default imports
        ['default', 'axios'], // import { default as axios } from 'axios',
      ],
      '[package-name]': [
        '[import-names]',
        // alias
        ['[from]', '[alias]'],
      ],
    },
  ],

  // eslint报错解决
  eslintrc: {
    enabled: false, // Default `false`
    filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json`
    globalsPropValue: true, // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable')
  },

  // 解析器,例如element-plus的ElementPlusResolver
  // see https://github.com/antfu/unplugin-auto-import/pull/23/
  resolvers: [
    /* ... */
  ],
  // 声明文件生成位置和文件名称
  dts: './auto-import.d.ts'
})

includeimport官方文档已经说的很明白了,我就不在这里赘述了。

eslintrc是用来解决eslint报错问题的配置项。当enabledtrue时,会根据filepath生成一个eslint的配置文件。这个文件需要引入到eslint的配置文件中,例如:

// .eslintrc.js
module.exports = {
  extends: [
    ...
    './.eslintrc-auto-import.json'
  ]
}

然后一定要记得重新启动项目,这样才会生成这个配置文件。配置完成后,eslint报错就会消失。

需要注意的是,一旦生成配置文件之后,最好把enable关掉,即改成false。否则这个文件每次会在重新加载的时候重新生成,这会导致eslint有时会找不到这个文件。当需要更新配置文件的时候,再重新打开吧。

resolvers可以引入解析器来进行组件声明,但是就element-plus而言,单独使用unplugin-auto-import是无法连同样式一起导入进来的。element-plus的自动引入可以参考我之前的一篇文章,里面有比较详细的叙述。

Cannot find name ‘ref’.问题解决方法

我看到评论区有小伙伴在配置完成后会出现这个问题:

在这里插入图片描述
从报错代码来看,这是一个ts错误,而且是找不到名称。我们可以把问题初步定位到没有将*.d.ts文件加入到tsconfig.json配置文件中,所以typescript还不认识它们。

现在我们来引入一下:

{
  "include": [
    "src/**/*.ts",
    "src/**/*.d.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "./auto-imports.d.ts" // 引入到这里
  ]
}

等一下,或者重启项目就会发现,这个问题已经解决了。

eslint 8.*之后的变化(This appears to be in eslintrc format rather than flat config format问题)

eslint 8.*之后版本,eslint的配置改变很大。具体,大家可以参考官网

那么.eslintrc-auto-imoprt.json文件如何引用呢?参考如下:

import { readFile } from "node:fs/promises";

const autoImportFile = new URL("./.eslintrc-auto-import.json", import.meta.url);
const autoImportGlobals = JSON.parse(await readFile(autoImportFile, "utf8"));

export default [
  {
    languageOptions: {
      globals: {
        ...autoImportGlobals.globals,
      },
    },
  },
];
unplugin-vue-componentsunplugin-auto-import是两个插件,用于在整合element-plus时进行自动导入模块引用。你可以通过npm安装这两个插件,命令为npm install -D unplugin-vue-components unplugin-auto-importunplugin-vue-components是一个用于Vite、Webpack、Rollupesbuild的插件,它可以按需自动导入API,并且支持TypeScriptunplugin-auto-import也是一个用于Vite、Webpack、Rollupesbuild的插件,它可以自动导入所需的模块。 在使用这两个插件时,你需要在vite.config.ts文件中进行一些修改。比如,你可以按照以下方式导入ElementPlusResolver,并在resolvers中配置它: import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' AutoImport({ imports: ["vue", "vue-router"], resolvers: [ElementPlusResolver()], }) Components({ resolvers: [ElementPlusResolver()], }) 注意,尽管使用了这两个插件进行自动导入,但仍然可能出现eslint报错的情况。这可能是由于eslint配置或其他插件的问题。你可以检查eslint配置文件以及其他相关插件的设置,以解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [unplugin-auto-import unplugin-vue-components 的正确使用方式](https://blog.csdn.net/goodcto/article/details/130022782)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [unplugin-auto-import unplugin-vue-components](https://blog.csdn.net/Android062005/article/details/128684495)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值