mirror of
https://github.com/alex8088/electron-vite.git
synced 2025-11-10 06:24:33 +08:00
fix(modulePath): support watch mode
This commit is contained in:
parent
2576484604
commit
8892bf3679
@ -23,8 +23,8 @@ export default function modulePathPlugin(config: InlineConfig): Plugin {
|
|||||||
async load(id): Promise<string | void> {
|
async load(id): Promise<string | void> {
|
||||||
if (id.endsWith('?modulePath')) {
|
if (id.endsWith('?modulePath')) {
|
||||||
// id resolved by Vite resolve plugin
|
// id resolved by Vite resolve plugin
|
||||||
const bundle = await bundleEntryFile(cleanUrl(id), config)
|
const re = await bundleEntryFile(cleanUrl(id), config, this.meta.watchMode)
|
||||||
const [outputChunk, ...outputChunks] = bundle.output
|
const [outputChunk, ...outputChunks] = re.bundles.output
|
||||||
const hash = this.emitFile({
|
const hash = this.emitFile({
|
||||||
type: 'asset',
|
type: 'asset',
|
||||||
fileName: outputChunk.fileName,
|
fileName: outputChunk.fileName,
|
||||||
@ -43,6 +43,9 @@ export default function modulePathPlugin(config: InlineConfig): Plugin {
|
|||||||
assetCache.add(chunk.fileName)
|
assetCache.add(chunk.fileName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (const id of re.watchFiles) {
|
||||||
|
this.addWatchFile(id)
|
||||||
|
}
|
||||||
const refId = `__VITE_MODULE_PATH__${hash}__`
|
const refId = `__VITE_MODULE_PATH__${hash}__`
|
||||||
const dirnameExpr = isImportMetaPathSupported ? 'import.meta.dirname' : '__dirname'
|
const dirnameExpr = isImportMetaPathSupported ? 'import.meta.dirname' : '__dirname'
|
||||||
return `
|
return `
|
||||||
@ -78,7 +81,12 @@ export default function modulePathPlugin(config: InlineConfig): Plugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function bundleEntryFile(input: string, config: InlineConfig): Promise<RollupOutput> {
|
async function bundleEntryFile(
|
||||||
|
input: string,
|
||||||
|
config: InlineConfig,
|
||||||
|
watch: boolean
|
||||||
|
): Promise<{ bundles: RollupOutput; watchFiles: string[] }> {
|
||||||
|
const moduleIds: string[] = []
|
||||||
const viteConfig = mergeConfig(config, {
|
const viteConfig = mergeConfig(config, {
|
||||||
build: {
|
build: {
|
||||||
rollupOptions: { input },
|
rollupOptions: { input },
|
||||||
@ -94,11 +102,32 @@ async function bundleEntryFile(input: string, config: InlineConfig): Promise<Rol
|
|||||||
}
|
}
|
||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
...(watch
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
name: 'vite:get-watch-files',
|
||||||
|
buildEnd(): void {
|
||||||
|
const allModuleIds = Array.from(this.getModuleIds())
|
||||||
|
|
||||||
|
const sourceFiles = allModuleIds.filter(id => {
|
||||||
|
const info = this.getModuleInfo(id)
|
||||||
|
return info && !info.isExternal
|
||||||
|
})
|
||||||
|
|
||||||
|
moduleIds.push(...sourceFiles)
|
||||||
|
}
|
||||||
|
} as Plugin
|
||||||
|
]
|
||||||
|
: [])
|
||||||
],
|
],
|
||||||
logLevel: 'warn',
|
logLevel: 'warn',
|
||||||
configFile: false
|
configFile: false
|
||||||
})
|
})
|
||||||
const bundles = await viteBuild(viteConfig)
|
const bundles = await viteBuild(viteConfig)
|
||||||
return bundles as RollupOutput
|
|
||||||
|
return {
|
||||||
|
bundles: bundles as RollupOutput,
|
||||||
|
watchFiles: moduleIds
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user