vite-plugin-compression
vite-plugin-compression copied to clipboard
插件执行的顺序
我想在 viteCompression 之后增加一个自定义的 Vite 插件,但是我增加的插件无法保证在 viteCompression 后面执行,总是先于它执行,为什么呢?
vite.config.ts:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { viteSingleFile } from 'vite-plugin-singlefile'
import viteCompression from 'vite-plugin-compression'
import vitePROGMEM from './vite-plugin-progmem' // <-- 自定义插件
export default defineConfig({
plugins: [
vue(),
viteSingleFile(),
viteCompression(),
vitePROGMEM({
source: './dist/index.html.gz',
destination: './dist/index.h'
})
],
//...
})
vite-plugin-progmem:
import { Plugin } from "vite"
import * as fs from 'fs'
interface vitePluginPROGMEMOptions {
/**
* Source of the .html.gz file
*/
source: string;
/**
* Destination of the .h file
*/
destination: string;
}
export default function vitePROGMEM(options: vitePluginPROGMEMOptions): Plugin {
return {
name: "vite:progmem",
apply: 'build',
async closeBundle() {
console.log(options)
console.log('source: ' + fs.existsSync(options.source));
console.log('destination: ' + fs.existsSync(options.destination));
// .gz 文件不存在
}
}
}
同样的问题,难道不能以插件的形式,只能用success方法来回调了?
这个问题我也遇到了,原因是源码里面的closeBundle函数根本就不能是一个async函数 里面的await全都没用、我改成node的同步函数就可以了