Skip to content

Commit

Permalink
perf(theme): 优化主题配置文件监听流
Browse files Browse the repository at this point in the history
  • Loading branch information
pengzhanbo committed Jul 9, 2024
1 parent 332d284 commit 8438cd5
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions theme/src/node/loadConfig/loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ export interface Loader {
dependencies: string[]
load: () => Promise<{ config: ThemeConfig, dependencies: string[] }>
loaded: boolean
watcher: FSWatcher | null
changeEvents: ChangeEvent[]
whenLoaded: ChangeEvent[]
defaultConfig: ThemeConfig
Expand All @@ -47,7 +46,6 @@ export async function initConfigLoader(
dependencies: [],
load: () => compiler(loader!.configFile),
loaded: false,
watcher: null,
changeEvents: [],
whenLoaded: [],
defaultConfig,
Expand All @@ -64,7 +62,7 @@ export async function initConfigLoader(

const { config, dependencies = [] } = await loader.load()
loader.loaded = true
addDependencies(dependencies)
loader.dependencies = [...dependencies]
updateResolvedConfig(app, config)
runChangeEvents()

Expand All @@ -81,14 +79,14 @@ export function watchConfigFile(app: App, watchers: any[]) {
cwd: path.join(path.dirname(loader.configFile), '../'),
})

addDependencies()
addDependencies(watcher)

watcher.on('change', async () => {
if (loader) {
loader.loaded = false
const { config, dependencies = [] } = await loader.load()
loader.loaded = true
addDependencies(dependencies)
addDependencies(watcher, dependencies)
updateResolvedConfig(app, config)
runChangeEvents()
}
Expand All @@ -99,8 +97,6 @@ export function watchConfigFile(app: App, watchers: any[]) {
runChangeEvents()
})

loader.watcher = watcher

watchers.push(watcher)
}

Expand Down Expand Up @@ -147,17 +143,17 @@ function runChangeEvents() {
}
}

function addDependencies(dependencies?: string[]) {
function addDependencies(watcher: FSWatcher, dependencies?: string[]) {
if (!loader)
return

if (dependencies?.length) {
const deps = dependencies
.filter(dep => !loader!.dependencies.includes(dep) && dep[0] === '.')
loader.dependencies.push(...deps)
deps.length && loader.watcher?.add(deps)
watcher.add(deps)
}
else {
loader.watcher?.add(loader.dependencies)
watcher.add(loader.dependencies)
}
}

0 comments on commit 8438cd5

Please sign in to comment.