You've already forked template-MP
修复:vite编译配置在热重载的情况下导致内存溢出的问题
This commit is contained in:
@@ -1,14 +1,26 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import uni from '@dcloudio/vite-plugin-uni'
|
||||
import { resolve } from 'path'
|
||||
import { readFileSync, writeFileSync } from 'fs'
|
||||
import { readFileSync, writeFileSync, existsSync, unlinkSync } from 'fs'
|
||||
import dotenv from 'dotenv'
|
||||
|
||||
// 自定义插件:替换 manifest.json 中的 appid
|
||||
// 仅在通过HBuilder首次编译时执行,避免热重载时重复执行导致内存占用高
|
||||
function replaceManifestAppid() {
|
||||
return {
|
||||
name: 'replace-manifest-appid',
|
||||
buildStart() {
|
||||
// 检查是否通过HBuilder编译
|
||||
// 检查是否已经执行过插件
|
||||
const manifestUpdatedFlag = resolve(__dirname, '.manifest-updated')
|
||||
const isFirstCompile = !existsSync(manifestUpdatedFlag)
|
||||
|
||||
// 仅首次编译时执行
|
||||
if (!isFirstCompile) {
|
||||
console.log('跳过 manifest appid 更新(已执行过首次编译)')
|
||||
return
|
||||
}
|
||||
|
||||
// 获取环境变量,明确指定路径为项目根目录
|
||||
dotenv.config({ path: resolve(__dirname, '.env') })
|
||||
const appid = process.env.VITE_APPID
|
||||
@@ -18,19 +30,19 @@ function replaceManifestAppid() {
|
||||
// 读取 manifest.json 文件
|
||||
const manifestPath = resolve(__dirname, 'manifest.json')
|
||||
let manifestContent = readFileSync(manifestPath, 'utf-8')
|
||||
|
||||
// 解析 JSON
|
||||
const manifest = JSON.parse(manifestContent)
|
||||
|
||||
// 替换
|
||||
manifest.appid = uni_appId
|
||||
|
||||
if (manifest['mp-weixin']) {
|
||||
manifest['mp-weixin'].appid = appid
|
||||
}
|
||||
|
||||
// 写回文件
|
||||
writeFileSync(manifestPath, JSON.stringify(manifest, null, 4))
|
||||
|
||||
// 创建标记文件,表示已执行过插件
|
||||
writeFileSync(manifestUpdatedFlag, 'Manifest updated by HBuilder first compile')
|
||||
console.log(`Manifest appid 已更新为: ${uni_appId}`)
|
||||
console.log(`Manifest mp-weixin appid 已更新为: ${appid}`)
|
||||
} else {
|
||||
@@ -40,8 +52,17 @@ function replaceManifestAppid() {
|
||||
}
|
||||
}
|
||||
|
||||
// 检查是否通过HBuilder编译,决定是否启用插件
|
||||
const manifestUpdatedFlag = resolve(__dirname, '.manifest-updated')
|
||||
|
||||
if (existsSync(manifestUpdatedFlag)) {
|
||||
unlinkSync(manifestUpdatedFlag)
|
||||
console.log('已清理 manifest 更新标记文件')
|
||||
}
|
||||
|
||||
const plugins = manifestUpdatedFlag ? [replaceManifestAppid(), uni()] : [uni()]
|
||||
export default defineConfig({
|
||||
plugins: [replaceManifestAppid(), uni()],
|
||||
plugins,
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': '/src',
|
||||
|
||||
Reference in New Issue
Block a user