unplugin-vue-images

Use the image resource as a component in the vue project.
Install
npm i unplugin-vue-images
Vite
import VueImages from 'unplugin-vue-images/vite'
export default defineConfig({
plugins: [VueImages({ })],
})
Rollup
import VueImages from 'unplugin-vue-images/rollup'
export default {
plugins: [VueImages({ })],
}
Webpack
module.exports = {
plugins: [
require('unplugin-vue-images/webpack')({ })
]
}
Nuxt
export default {
buildModules: [
['unplugin-vue-images/nuxt', { }],
],
}
This module works for both Nuxt 2 and Nuxt Vite
Vue CLI
module.exports = {
configureWebpack: {
plugins: [
require('unplugin-vue-images/webpack')({ }),
],
},
}
Esbuild
import { build } from 'esbuild'
import VueImages from 'unplugin-vue-images/esbuild'
build({
plugins: [VueImages({ })],
})
Usage
You can learn more by looking at the examples.
vite-vue2
vite-vue3
Without
<script>
import ImageUrl from '@/assets/image.png'
</script>
<template>
<img :src="ImageUrl" width="120" height="120">
</template>
With
<script>
import Image from '~images/image.png?width=120&height=120'
</script>
<template>
<Image />
</template>
Note
By default this plugin will import images in the src/assets/images path. You can customize it using the dirs option.
Import rule is ~images[:alias]/filename[.extension][?attrs], So you have the flexibility to import your image resources.
Configuration
VueImages({
dirs: [
],
extensions: [],
compiler: 'vue3'
})
config
import type { UserConfig } from 'vite'
import Vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import VueImages from 'unplugin-vue-images/vite'
import { ImagesResolver } from 'unplugin-vue-images/resolver'
const collectionDirs = [
'src/assets/images',
{ icons: 'src/assets/icons' },
]
const extensions = ['jpg', 'jpeg', 'png', 'svg', 'webp', 'gif']
const config: UserConfig = {
plugins: [
Vue(),
VueImages({
dirs: collectionDirs,
extensions,
compiler: 'vue3',
}),
Components({
resolvers: [
ImagesResolver({
prefix: 'img',
dirs: collectionDirs,
extensions,
}),
],
}),
],
}
export default config
usage
<template>
<div>
<img-account />
<img-normal-password-png />
<img-icons-name />
</div>
</template>
Note
By default this plugin will import images in the src/assets/images path. You can customize it using the dirs option.
Usage rule is [prefix-][alias-]name[-extension], So you have the flexibility to usage generate components.
License
MIT License © 2022 Victor Bo