• 受限制的 rollup 插件

    命名

  • rollup-plugin-xxx 希望在 vite 和 rollup 中通用

  • vite-plugin-xxx 在 vite 中使用

    兼容 rollup 的钩子

    服务启动时

  • options

  • buildStart

    每个模块

  • resolveId 找到这个文件

  • load 加载源码
  • transform 转换源码

    服务器关闭时

  • buildEnd

  • closeBundle

    注意

  • modulePased 不会被调用

  • rollup 插件可以在 build 中配置

    条件

  • 没有使用 modulePased 钩子

  • 在打包钩子和输出钩子之间没有很强的耦合

    vite 钩子

  • config 根据其他配置更新整体 config

  • configResolved 所有插件都执行之后
  • configureServer devServer 中间件
  • transformIndexHtml 入口 html 转换操作
  • handleHotUpdate 处理热更新

    Vite 插件的执行时机

  • pre 最快被执行的插件

  • noraml vite 核心插件执行之后,build 插件执行之前
  • post build之后,插件代码构建

    1. export default (enforce?: 'pre' | 'post') => {
    2. return {
    3. name: 'test',
    4. enforce,
    5. buildStart() {
    6. console.log('buildStart', enforce)
    7. },
    8. // resolveId() {
    9. // console.log('resolveId', enforce)
    10. // },
    11. load() {
    12. console.log('load', enforce)
    13. },
    14. }
    15. }