Closed frg2089 closed 9 months ago
@frg2089 ,😆根据你的建议,做了个调整,你试试是否满足你的需求。
vite build 时,根据 index.html
生成 webview 的 html 代码,也支持多页面。
辛苦了 我实际开发的过程中发现 多个html文件似乎多余 因为到最后都是只挂载一个vue
所以 模板什么的只要一个就好了
或许我需要的是这样的东西
当运行在dev模式下
process.env.VITE_DEV_SERVER_URL + '?src=' + encodeURIComponent(path);
使用build构建后 读/dist/webview/index.html
文件然后稍作修改
👌我最初dev阶段,也考虑了类似的思路。是用 vite build --watch
,然后再用 fs.read
读取文本内容去更新 html,不过每次修改后就等于页面强刷了,没了热更新。
使能够在vscode扩展的代码中能够导入html内容
项目中已经包含了一个或多个html文件 能否实现直接导入html文件内容而不是在代码中内联html
直接用import的话可能会使热重载失效 提供一个工具函数也可以
这是我之前写的导入html内容的esbuild插件
插件
```typescript import * as esbuild from 'esbuild' import * as fs from 'node:fs' import * as path from 'node:path' import * as crypto from 'node:crypto' import * as url from 'node:url' interface HtmlPluginData { resolveDir: string fileName: string fullPath: string } export const htmlCompiler = (): esbuild.Plugin => { return { name: 'esbuild-plugin-html', setup: build => { // 处理 *.vue 文件中的 script build.onResolve({ filter: /\.html$/ }, async args => { const filePath = args.path const fileName = path.basename(filePath) const fullPath = path.resolve(args.resolveDir, filePath) return { path: args.path, namespace: 'vscode-html', pluginData: { ...args.pluginData, resolveDir: args.resolveDir, fileName, fullPath, } as HtmlPluginData, } }) build.onLoad( { filter: /\.html$/, namespace: 'vscode-html' }, async args => { const data = args.pluginData as HtmlPluginData const content = await fs.promises.readFile(data.fullPath, 'utf8') const code = new Array示例
```html