mirror of
https://gitee.com/niucloud-team/niucloud.git
synced 2026-08-01 20:15:49 +00:00
53 lines
1.8 KiB
JavaScript
53 lines
1.8 KiB
JavaScript
/**
|
||
* 装修预览修复:alias useDiyGroup + 修正 diy-group index.vue 的 data 绑定
|
||
* 不修改 src/addon 源码;core / addon / dev 构建均需启用
|
||
*
|
||
* 注意:不可在 config() 中返回 resolve.alias,会覆盖 uni-app 默认 alias 导致 windi 等虚拟模块解析失败
|
||
*/
|
||
const path = require('path')
|
||
const { ROOT } = require('./addon-utils.cjs')
|
||
|
||
const CORE_USE_DIY_GROUP = path.join(ROOT, 'src', 'hooks', 'useDiyGroup.ts')
|
||
|
||
function isDiyGroupImporter(importer) {
|
||
if (!importer) return false
|
||
const norm = importer.replace(/\\/g, '/')
|
||
return norm.includes('/addon/components/diy/group/')
|
||
}
|
||
|
||
function patchDiyGroupScript(code) {
|
||
if (!code.includes('const data = ref(diyGroup.data)')) return null
|
||
return code.replace(/const data = ref\(diyGroup\.data\)/g, 'const data = diyGroup.data')
|
||
}
|
||
|
||
function createDiyGroupFixPlugin() {
|
||
return {
|
||
name: 'diy-group-fix',
|
||
enforce: 'pre',
|
||
resolveId(source, importer) {
|
||
if (
|
||
(source === './useDiyGroup' || source === './useDiyGroup.ts') &&
|
||
isDiyGroupImporter(importer)
|
||
) {
|
||
return CORE_USE_DIY_GROUP
|
||
}
|
||
if (
|
||
source === '@/addon/components/diy/group/useDiyGroup' ||
|
||
source === '@/addon/components/diy/group/useDiyGroup.ts'
|
||
) {
|
||
return CORE_USE_DIY_GROUP
|
||
}
|
||
return null
|
||
},
|
||
transform(code, id) {
|
||
const norm = id.replace(/\\/g, '/').split('?')[0]
|
||
if (!norm.includes('/diy/group/index.vue') && !norm.includes('/bridges/diy-group/index.vue')) {
|
||
return null
|
||
}
|
||
return patchDiyGroupScript(code)
|
||
}
|
||
}
|
||
}
|
||
|
||
module.exports = { createDiyGroupFixPlugin }
|