vite 开发技巧
虚拟文件
所谓虚拟文件就是凭空创建出来的文件。比如往 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 技术交流群。
上一篇: Vue 自定义模态框
下一篇: 不要相信一个熬夜的人说的每一句话
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论