自定义plugin
- plugin插件其实就是个钩子函数,在vite会运行这个钩子函数
例子
处理图片插件
希望在开发环境和生产环境,图片小于4kb都统一转换为base64,因为目前vite只是在生产环境对图片进行了优化处理,而在开发环境还是一个图片文件
const fs = require('node')
export default function imagePlugin(limit = 4096){
return {
name: 'transform-image-file', // 插件名字
// 转换函数
async transform(src, id) {
if(process.env,NODE_ENV !== 'development'){
return
}
// 其他图片格式,需要额外处理
if(!id.endWidth('.png')){
return
}
const stat = await fs.promises.stat(id)
if(stat.size>limit){
return
}
const buffer = await fs.promises.readFile(id)
const base64 = buffer.toString('base64')
const dataurl = 'data:image/png;base64,${base64}'
return {
code:`export default "${dataurl}"`
}
},
}
}