跳到主要内容

自定义plugin

  • plugin插件其实就是个钩子函数,在vite会运行这个钩子函数

例子​

处理图片插件​

希望在开发环境和生产环境,图片小于4kb都统一转换为base64,因为目前vite只是在生产环境对图片进行了优化处理,而在开发环境还是一个图片文件

js
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}"`
}
},
}
}