提交 73c00f2b 编写于 作者: fxy060608's avatar fxy060608

fix(h5): Compatible with vite@3

上级 c2b95783
......@@ -12,8 +12,8 @@ import { EXTNAME_VUE_RE } from '../constants'
import { parseVue } from '../vite/utils/ast'
import { generateCodeFrame } from '../vite/plugins/vitejs/utils'
const SIGNAL_H5_LOCAL = ' > Local:'
const SIGNAL_H5_NETWORK = ' > Network:'
const SIGNAL_H5_LOCAL = ' Local:'
const SIGNAL_H5_NETWORK = ' Network:'
const networkLogs: string[] = []
......@@ -39,19 +39,19 @@ export const h5ServeFormatter: Formatter = {
},
format(msg) {
if (msg.includes(SIGNAL_H5_NETWORK)) {
networkLogs.push(msg)
networkLogs.push(msg.replace('', ''))
process.nextTick(() => {
if (networkLogs.length) {
// 延迟打印所有 network,仅最后一个 network 替换 > 为 -,通知 hbx
// 延迟打印所有 network,仅最后一个 network 替换 为 -,通知 hbx
const len = networkLogs.length - 1
networkLogs[len] = networkLogs[len].replace('>', '-')
networkLogs[len] = networkLogs[len].replace('', '-')
console.log(networkLogs.join('\n'))
networkLogs.length = 0
}
})
return ''
}
return msg.replace('>', '-')
return msg.replace('', '-')
},
}
......
import os from 'os'
import fs from 'fs'
import path from 'path'
import type { Plugin, ResolvedConfig, ServerOptions } from 'vite'
......@@ -29,6 +30,13 @@ export function createConfig(options: {
const server: ServerOptions = {
host: true,
hmr: {
// mac 内置浏览器版本较低不支持 globalThis,而 overlay 使用了 globalThis
overlay:
os.platform() !== 'win32'
? process.env.UNI_H5_BROWSER !== 'builtin'
: true,
},
fs: { strict: false },
watch: {
ignored: [
......
......@@ -6,6 +6,20 @@ export function createTransformIndexHtml(): Plugin['transformIndexHtml'] {
return async function (html) {
const manifestJson = parseManifestJsonOnce(process.env.UNI_INPUT_DIR)
const title = manifestJson.h5?.title || manifestJson.name || ''
return html.replace(/<title>(.*?)<\/title>/, `<title>${title}</title>`)
return {
html: html.replace(/<title>(.*?)<\/title>/, `<title>${title}</title>`),
tags:
process.env.NODE_ENV === 'development'
? [
{
tag: 'script',
children: `if (typeof globalThis === 'undefined') {
window.globalThis = window
}`,
injectTo: 'head-prepend',
},
]
: [],
}
}
}
......@@ -221,15 +221,16 @@ const getCompilerServer = ():
): Promise<boolean>
}
| false => {
try {
const compilerServerPath = path.resolve(
process.env.UNI_HBUILDERX_PLUGINS,
'uniapp-runextension/out/main.js'
)
const compilerServerPath = path.resolve(
process.env.UNI_HBUILDERX_PLUGINS,
'uniapp-runextension/out/main.js'
)
if (fs.existsSync(compilerServerPath)) {
// eslint-disable-next-line no-restricted-globals
return require(compilerServerPath)
} catch (e) {
} else {
installHBuilderXPlugin('uniapp-runextension')
}
return false
}
......@@ -185,9 +185,9 @@ function printServerUrls(
): void {
if (hostname.host === '127.0.0.1') {
const url = `${protocol}://${hostname.name}:${colors.bold(port)}${base}`
info(` > Local: ${colors.cyan(url)}`)
info(` - Local: ${colors.cyan(url)}`)
if (hostname.name !== '127.0.0.1') {
info(` > Network: ${colors.dim('use `--host` to expose')}`)
info(` - Network: ${colors.dim('use `--host` to expose')}`)
}
} else {
Object.values(os.networkInterfaces())
......@@ -203,13 +203,19 @@ function printServerUrls(
)
.map((detail) => {
const type = detail.address.includes('127.0.0.1')
? 'Local: '
: 'Network: '
? ' - Local: '
: 'Network: '
const host = detail.address.replace('127.0.0.1', hostname.name)
const url = `${protocol}://${host}:${colors.bold(port)}${base}`
return ` > ${type} ${colors.cyan(url)}`
return `${type} ${colors.cyan(url)}`
})
.forEach((msg, index, arr) => {
if (arr.length - 1 === index) {
info(msg.replace('', '-'))
} else {
info(msg)
}
})
.forEach((msg) => info(msg))
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册