mirror of
https://gitee.com/niucloud-team/niucloud.git
synced 2026-08-01 20:15:49 +00:00
74 lines
2.4 KiB
JavaScript
74 lines
2.4 KiB
JavaScript
/**
|
||
* 编译完成后删除 src/components 下自动生成的插件 DIY bridge(diy-dynamic-bridge-{key})
|
||
* 保留 diy-dynamic-bridge(router)与 diy-dynamic-bridge-app
|
||
*/
|
||
const fs = require('fs')
|
||
const path = require('path')
|
||
const { ROOT } = require('./addon-utils.cjs')
|
||
|
||
const COMPONENTS_DIR = path.join(ROOT, 'src', 'components')
|
||
|
||
/** 不参与清理的 bridge 目录(diy-dynamic-bridge-app 编译完成后也需删除) */
|
||
const PRESERVE_DIRS = new Set(['diy-dynamic-bridge'])
|
||
|
||
/** 编译后待清理的 app bridge(框架构建生成) */
|
||
const POST_BUILD_CLEAN_DIRS = new Set(['diy-dynamic-bridge-app'])
|
||
|
||
function isAddonBridgeDir(name) {
|
||
return name.startsWith('diy-dynamic-bridge-') && !PRESERVE_DIRS.has(name)
|
||
}
|
||
|
||
function getAddonBridgeKey(dirName) {
|
||
return dirName.slice('diy-dynamic-bridge-'.length)
|
||
}
|
||
|
||
/**
|
||
* @param {{ keys?: string[], silent?: boolean }} options
|
||
* @returns {string[]} removed directory names
|
||
*/
|
||
function cleanupAddonDiyBridgeSrc(options = {}) {
|
||
const { keys, silent = false } = options
|
||
const keyFilter = keys?.length ? new Set(keys) : null
|
||
const removed = []
|
||
|
||
if (!fs.existsSync(COMPONENTS_DIR)) return removed
|
||
|
||
for (const name of fs.readdirSync(COMPONENTS_DIR)) {
|
||
// POST_BUILD_CLEAN_DIRS 不受 key 过滤(如 diy-dynamic-bridge-app)
|
||
if (POST_BUILD_CLEAN_DIRS.has(name)) {
|
||
const dir = path.join(COMPONENTS_DIR, name)
|
||
if (fs.existsSync(dir) && fs.statSync(dir).isDirectory()) {
|
||
fs.rmSync(dir, { recursive: true, force: true, maxRetries: 5, retryDelay: 200 })
|
||
removed.push(name)
|
||
}
|
||
continue
|
||
}
|
||
if (!isAddonBridgeDir(name)) continue
|
||
const key = getAddonBridgeKey(name)
|
||
if (keyFilter && !keyFilter.has(key)) continue
|
||
|
||
const dir = path.join(COMPONENTS_DIR, name)
|
||
if (!fs.existsSync(dir) || !fs.statSync(dir).isDirectory()) continue
|
||
|
||
fs.rmSync(dir, { recursive: true, force: true, maxRetries: 5, retryDelay: 200 })
|
||
removed.push(name)
|
||
}
|
||
|
||
if (removed.length && !silent) {
|
||
console.log(
|
||
`[cleanup-diy-bridge-src] removed ${removed.length} dir(s) under src/components: ${removed.join(', ')}`
|
||
)
|
||
}
|
||
return removed
|
||
}
|
||
|
||
module.exports = {
|
||
cleanupAddonDiyBridgeSrc,
|
||
COMPONENTS_DIR,
|
||
PRESERVE_DIRS
|
||
}
|
||
|
||
if (require.main === module) {
|
||
cleanupAddonDiyBridgeSrc()
|
||
}
|