### Configure Auto-Import for Solid.js with Vite
Source: https://context7.com/unplugin/unplugin-auto-import/llms.txt
This configuration example demonstrates setting up unplugin-auto-import for a Solid.js project with Vite. It integrates with unplugin-icons for automatic icon imports and includes imports for Solid.js core APIs and routing. The setup also generates TypeScript declaration files.
```typescript
// vite.config.ts
import IconsResolver from 'unplugin-icons/resolver'
import Icons from 'unplugin-icons/vite'
import { defineConfig } from 'vite'
import solidPlugin from 'vite-plugin-solid'
import AutoImport from 'unplugin-auto-import/vite'
export default defineConfig({
plugins: [
solidPlugin(),
Icons({ compiler: 'solid' }),
AutoImport({
imports: ['solid-js', '@solidjs/router'],
dts: './src/auto-imports.d.ts',
resolvers: [
IconsResolver({ prefix: 'Icon' }),
],
}),
],
build: { target: 'esnext' },
})
```
--------------------------------
### Install unplugin-auto-import
Source: https://github.com/unplugin/unplugin-auto-import/blob/main/README.md
Command to install the package as a development dependency using npm.
```bash
npm i -D unplugin-auto-import
```
--------------------------------
### Configure unplugin-auto-import for Build Tools
Source: https://github.com/unplugin/unplugin-auto-import/blob/main/README.md
Examples showing how to integrate the plugin into various build tool configurations including Vite, Rollup, Webpack, Rspack, and esbuild.
```typescript
// vite.config.ts
import AutoImport from 'unplugin-auto-import/vite'
export default defineConfig({
plugins: [
AutoImport({ /* options */ }),
],
})
```
```typescript
// rollup.config.js
import AutoImport from 'unplugin-auto-import/rollup'
export default {
plugins: [
AutoImport({ /* options */ }),
],
}
```
```typescript
// webpack.config.js
module.exports = {
plugins: [
require('unplugin-auto-import/webpack')({ /* options */ }),
],
}
```
```typescript
// esbuild.config.js
import { build } from 'esbuild'
import AutoImport from 'unplugin-auto-import/esbuild'
build({
plugins: [
AutoImport({ /* options */ }),
],
})
```
--------------------------------
### Configure unplugin-auto-import for Bundlers
Source: https://context7.com/unplugin/unplugin-auto-import/llms.txt
Examples of how to integrate the plugin into various build tool configurations including Vite, Webpack, Rollup, Rspack, esbuild, and Astro.
```typescript
// vite.config.ts
import AutoImport from 'unplugin-auto-import/vite'
import { defineConfig } from 'vite'
export default defineConfig({
plugins: [
AutoImport({
imports: ['vue', 'vue-router', '@vueuse/core'],
dts: './auto-imports.d.ts',
dirs: [
'./composables',
'./composables/**',
],
vueTemplate: true,
}),
],
})
```
```javascript
// webpack.config.js
const AutoImport = require('unplugin-auto-import/webpack')
module.exports = {
plugins: [
AutoImport({
imports: ['react', 'react-router-dom'],
dts: './src/auto-imports.d.ts',
}),
],
}
```
```javascript
// rollup.config.js
import AutoImport from 'unplugin-auto-import/rollup'
export default {
plugins: [
AutoImport({
imports: ['vue', 'vue-router'],
dts: true,
}),
],
}
```
```javascript
// rspack.config.js
module.exports = {
plugins: [
require('unplugin-auto-import/rspack')({
imports: ['react', 'ahooks'],
dts: './src/auto-imports.d.ts',
}),
],
}
```
```typescript
// esbuild.config.js
import { build } from 'esbuild'
import AutoImport from 'unplugin-auto-import/esbuild'
build({
entryPoints: ['src/index.ts'],
bundle: true,
outfile: 'dist/index.js',
plugins: [
AutoImport({
imports: ['vue'],
dts: true,
}),
],
})
```
```javascript
// astro.config.mjs
import react from '@astrojs/react'
import svelte from '@astrojs/svelte'
import vue from '@astrojs/vue'
import { defineConfig } from 'astro/config'
import AutoImport from 'unplugin-auto-import/astro'
export default defineConfig({
integrations: [
vue(),
svelte(),
react(),
AutoImport({
imports: [
'vue',
'svelte',
'svelte/store',
'react',
],
dirs: ['src/utils/*.ts'],
dts: './src/auto-imports.d.ts',
}),
],
})
```
--------------------------------
### Vue API Auto-import Example
Source: https://github.com/unplugin/unplugin-auto-import/blob/main/README.md
Demonstrates how the plugin removes the need for explicit import statements for Vue composition APIs.
```typescript
// Without auto-import
import { computed, ref } from 'vue'
const count = ref(0)
const doubled = computed(() => count.value * 2)
// With auto-import
const count = ref(0)
const doubled = computed(() => count.value * 2)
```
--------------------------------
### React Component Auto-import Example
Source: https://github.com/unplugin/unplugin-auto-import/blob/main/README.md
Demonstrates how the plugin removes the need for explicit import statements for React hooks.
```tsx
// Without auto-import
import { useState } from 'react'
export function Counter() {
const [count, setCount] = useState(0)
return
{ count }
}
// With auto-import
export function Counter() {
const [count, setCount] = useState(0)
return
{ count }
}
```
--------------------------------
### Enable Vite Dependency Optimization
Source: https://context7.com/unplugin/unplugin-auto-import/llms.txt
Automatically adds auto-imported packages to Vite's optimizeDeps configuration. This improves cold start performance by pre-bundling the dependencies.
```typescript
import AutoImport from 'unplugin-auto-import/vite'
export default {
plugins: [
AutoImport({
imports: ['vue', 'vue-router', '@vueuse/core'],
viteOptimizeDeps: true,
}),
],
}
```
--------------------------------
### Implement Custom Resolvers
Source: https://context7.com/unplugin/unplugin-auto-import/llms.txt
Uses resolvers to dynamically resolve imports at build time. This example demonstrates integrating third-party libraries like Element Plus and custom composable resolution.
```typescript
import IconsResolver from 'unplugin-icons/resolver'
import Icons from 'unplugin-icons/vite'
import AutoImport from 'unplugin-auto-import/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
export default {
plugins: [
Icons({ compiler: 'vue3' }),
AutoImport({
imports: ['vue'],
resolvers: [
ElementPlusResolver(),
IconsResolver({
prefix: 'Icon',
enabledCollections: ['mdi', 'heroicons']
}),
(name) => {
if (name.startsWith('use')) {
return { from: '@/composables', name }
}
}
]
})
]
}
```
--------------------------------
### Use Built-in Presets
Source: https://context7.com/unplugin/unplugin-auto-import/llms.txt
Demonstration of configuring the plugin with multiple framework presets for automated API resolution.
```typescript
// vite.config.ts
import AutoImport from 'unplugin-auto-import/vite'
export default {
plugins: [
AutoImport({
imports: [
'vue',
'vue-router',
'vuex',
'@vueuse/core',
'@vueuse/head',
'@vueuse/math',
'react',
'react-dom',
'react-router',
'react-router-dom',
'react-i18next',
'ahooks',
'jotai',
'jotai/utils',
'recoil',
'mobx',
'mobx-react-lite',
'svelte',
'svelte/store',
'svelte/motion',
'svelte/transition',
'svelte/animate',
'svelte/easing',
'solid-js',
'@solidjs/router',
'preact',
'quasar',
'vitepress',
'vee-validate',
'uni-app',
],
}),
],
}
```
--------------------------------
### Configure Package Presets
Source: https://github.com/unplugin/unplugin-auto-import/blob/main/README.md
Demonstrates how to add custom package presets to the auto-import configuration. This allows the plugin to detect and auto-import functions from local dependencies.
```typescript
AutoImport({
/* other options */
packagePresets: ['detect-browser-es']
})
```
--------------------------------
### Configure React Project Auto-Imports
Source: https://context7.com/unplugin/unplugin-auto-import/llms.txt
A comprehensive configuration for React projects, including hooks, routing, internationalization, and icon resolution. It also enables ESLint configuration generation.
```typescript
import React from '@vitejs/plugin-react'
import IconsResolver from 'unplugin-icons/resolver'
import Icons from 'unplugin-icons/vite'
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
export default defineConfig({
plugins: [
React(),
Icons({ compiler: 'jsx', jsx: 'react' }),
AutoImport({
imports: [
'react',
'react-router-dom',
'react-i18next',
'ahooks',
],
dts: './src/auto-imports.d.ts',
dirs: ['src/hooks', 'src/layouts', 'src/components'],
eslintrc: { enabled: true },
defaultExportByFilename: true,
resolvers: [
IconsResolver({ componentPrefix: 'Icon' }),
],
}),
],
})
```
--------------------------------
### Presets
Source: https://github.com/unplugin/unplugin-auto-import/blob/main/README.md
Information about available presets for unplugin-auto-import, which provide pre-configured import sets for common libraries and frameworks.
```APIDOC
## Presets
Unplugin-auto-import comes with a set of pre-defined presets that can be easily included in your configuration. These presets simplify the setup process by providing common import mappings for popular libraries and frameworks.
Refer to the `src/presets` directory for a list of available presets and their configurations.
```
--------------------------------
### Configure unplugin-auto-import options
Source: https://github.com/unplugin/unplugin-auto-import/blob/main/README.md
This snippet demonstrates the full configuration object for the AutoImport plugin. It includes settings for file inclusion, custom import presets, directory scanning, and generation of declaration files for TypeScript and linting tools.
```typescript
AutoImport({
include: [
/\.[tj]sx?$/,
/\.vue$/,
/\.vue\?vue/,
/\.vue\.[tj]sx?\?vue/,
/\.md$/,
],
imports: [
'vue',
'vue-router',
{
'@vueuse/core': [
'useMouse',
['useFetch', 'useMyFetch'],
],
'axios': [
['default', 'axios'],
],
},
{
from: 'vue-router',
imports: ['RouteLocationRaw'],
type: true,
},
],
dirs: [
'./hooks',
'./composables/**',
{
glob: './hooks',
types: true
}
],
dts: './auto-imports.d.ts',
eslintrc: {
enabled: false,
filepath: './.eslintrc-auto-import.json',
globalsPropValue: true,
}
})
```
--------------------------------
### Integrate with ESLint
Source: https://context7.com/unplugin/unplugin-auto-import/llms.txt
Sets up ESLint configuration to recognize auto-imported globals, preventing 'no-undef' errors. It generates a JSON file that can be extended in the main ESLint configuration.
```typescript
import AutoImport from 'unplugin-auto-import/vite'
export default {
plugins: [
AutoImport({
imports: ['vue', 'vue-router'],
eslintrc: {
enabled: true,
filepath: './.eslintrc-auto-import.json',
globalsPropValue: true
}
})
]
}
```
--------------------------------
### Define Include and Exclude File Patterns
Source: https://context7.com/unplugin/unplugin-auto-import/llms.txt
Configures which files the plugin processes for auto-imports. It uses regex patterns to include specific file types like .vue, .ts, or .md and exclude directories like node_modules.
```typescript
import AutoImport from 'unplugin-auto-import/vite'
export default {
plugins: [
AutoImport({
imports: ['vue'],
include: [
/\.[tj]sx?$/,
/\.vue$/,
/\.vue\?vue/,
/\.vue\.[tj]sx?\?vue/,
/\.md$/,
/\.astro$/,
/\.svelte$/,
],
exclude: [
/[\\/]node_modules[\\/]/,
/[\\/]\.git[\\/]/,
],
}),
],
}
```
--------------------------------
### Configure Directory Scanning with Type Control
Source: https://context7.com/unplugin/unplugin-auto-import/llms.txt
Provides granular control over type scanning when importing from local directories. Allows enabling or disabling type imports on a per-directory basis.
```typescript
import AutoImport from 'unplugin-auto-import/vite'
export default {
plugins: [
AutoImport({
imports: ['vue'],
dirsScanOptions: { types: true },
dirs: [
'./src/composables/**',
{ glob: './src/hooks', types: true },
{ glob: './src/utils', types: false },
],
}),
],
}
```
--------------------------------
### Configure ESLint for Auto-Imports
Source: https://github.com/unplugin/unplugin-auto-import/blob/main/README.md
Enables ESLint support to prevent 'no-undef' errors. This involves enabling the plugin's internal ESLint config generation and extending the project's ESLint configuration.
```typescript
AutoImport({
eslintrc: {
enabled: true,
},
})
```
```javascript
module.exports = {
extends: [
'./.eslintrc-auto-import.json',
],
}
```
--------------------------------
### Configure Package Presets
Source: https://context7.com/unplugin/unplugin-auto-import/llms.txt
Registers external npm packages as auto-import sources. Supports ignoring specific exports and generating TypeScript declaration files for better IDE support.
```typescript
import AutoImport from 'unplugin-auto-import/vite'
export default {
plugins: [
AutoImport({
imports: ['svelte', 'svelte/store'],
packagePresets: [
'detect-browser-es',
'date-fns',
{ package: 'my-custom-lib', ignore: ['internalHelper'] },
],
dts: './src/auto-imports.d.ts',
}),
],
}
```
--------------------------------
### Generate TypeScript Declaration Files
Source: https://context7.com/unplugin/unplugin-auto-import/llms.txt
Configures unplugin-auto-import to generate .d.ts files for IDE type support. It allows specifying the output path, update mode, and exclusion patterns for specific imports.
```typescript
import AutoImport from 'unplugin-auto-import/vite'
export default {
plugins: [
AutoImport({
imports: ['vue', 'vue-router', '@vueuse/core'],
dts: './src/auto-imports.d.ts',
dtsMode: 'append',
dtsPreserveExts: false,
ignoreDts: [
'ignoredFunction',
/^internal_/
]
})
]
}
```
--------------------------------
### Enable TypeScript Declaration Generation
Source: https://github.com/unplugin/unplugin-auto-import/blob/main/README.md
Configures the plugin to generate a d.ts file for auto-imported APIs. This ensures that TypeScript can provide proper type hints for imported functions.
```typescript
AutoImport({
dts: true // or a custom path
})
```
--------------------------------
### AutoImport Configuration
Source: https://github.com/unplugin/unplugin-auto-import/blob/main/README.md
Configuration options for the AutoImport plugin, including include patterns, custom imports, ignored imports, directory scanning, and type declaration file generation.
```APIDOC
## AutoImport Configuration
This section details the configuration options for the `AutoImport` plugin. These options allow you to customize how and what modules are automatically imported into your project.
### Options
- **include** (Array) - Targets to transform. Specifies the file patterns for which auto-import should be applied.
- **imports** (Array) - Global imports to register. Can be preset names (e.g., 'vue') or custom import configurations.
- Custom import configuration example:
```json
{
'@vueuse/core': [
'useMouse', // named imports
['useFetch', 'useMyFetch'] // alias
],
'axios': [
['default', 'axios'] // default imports
]
}
```
- **ignore** (Array) - Imports meant to be filtered out.
- **defaultExportByFilename** (boolean) - Enable auto import by filename for default module exports under directories.
- **dirsScanOptions** (object) - Options for scanning directories for auto import.
- **filePatterns** (Array) - Glob patterns for matching files.
- **fileFilter** (function) - Filter files based on a custom function.
- **types** (boolean) - Enable auto import of types under the directories.
- **dirs** (Array) - Auto import for module exports under directories. Can specify glob patterns and type import options.
- **dts** (string | boolean) - Filepath to generate the corresponding `.d.ts` file. Set to `false` to disable.
- **dtsMode** (string) - The mode for generating the `.d.ts` file ('overwrite' or 'append'). Defaults to 'append'.
- **dtsPreserveExts** (boolean) - Preserve the original file extensions in the generated `.d.ts` file. Defaults to `false`.
- **ignoreDts** (Array) - Imports to be ignored during declaration file generation.
- **vueTemplate** (boolean) - Enable auto import inside Vue templates.
- **vueDirectives** (boolean | undefined) - Enable auto import directives inside Vue templates.
- **resolvers** (Array