vite 开发技巧

发布于 2024-10-05 05:45:14 字数 1437 浏览 8 评论 0

虚拟文件

所谓虚拟文件就是凭空创建出来的文件。比如往 js 里插一段 css,就可以在代码中注入 import '/my-virtual-prefix/xxx.css'

const virtualPlugin = () => {
  return {
    name: 'virtual-test',
    enforce: 'post',
    resolveId(id) {
      return id.startsWith('/my-virtual-prefix') ? id : null
    },
    load(id) {
      return generateCSSCode(id);
    }
  }
}

手动更新依赖

有时候需要手动触发依赖更新,比如当你使用了虚拟文件。
可以通过 server.moduleGraph 来管理依赖,并使用 server.ws 来提醒页面更新

const myPlugin = () => {
  let server
  let invalidate = (hash) => {
    if (!server) return
    const id = getYourId(hash)
    const mod = server.moduleGraph.getModuleById(id)
    if (!mod)
      return
    server.moduleGraph.invalidateModule(mod)
    // 这里需要客户端做些处理
    server.ws.send({
      type: 'update',
      updates: [{
        acceptedPath: id,
        path: id,
        timestamp: +Date.now(),
        type: 'js-update',
      }],
    })
  }
  return {
    name: 'configure-server',
    configureServer(_server) {
      server = _server
    },
    transform(code, id) {
      if (server) {
        // use server...
      }
    }
  }
}

插件间传递参数

vite 支持返回插件数组,可以在几个插件中传递一个 context 对象

export default function i18nPlugin() {
  const ctx = { dict: {} }
  return [
    extract(ctx),
    count(ctx)
  ]
}

resolveId

注意对于默认后缀,如果想要在内置的 plugin 前运行,需要添加 enforce: 'pre'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

濫情▎り

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

emdigitizer10

文章 0 评论 0

残龙傲雪

文章 0 评论 0

奢望

文章 0 评论 0

微信用户

文章 0 评论 0

又爬满兰若

文章 0 评论 0

独孤求败

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文