mirror of
https://github.com/unjs/unplugin.git
synced 2025-12-08 20:26:33 +00:00
perf: lazy load webpack-virtual-modules
This commit is contained in:
parent
6dd76a50e9
commit
daf0a3955b
@ -1,9 +1,9 @@
|
||||
import type { ResolvePluginInstance, Resolver } from 'webpack'
|
||||
import type VirtualModulesPluginType from 'webpack-virtual-modules'
|
||||
import type { ResolvedUnpluginOptions, UnpluginContext, UnpluginContextMeta, UnpluginFactory, UnpluginInstance, WebpackCompiler } from '../types'
|
||||
import fs from 'node:fs'
|
||||
import { resolve } from 'node:path'
|
||||
import process from 'node:process'
|
||||
import VirtualModulesPlugin from 'webpack-virtual-modules'
|
||||
import { normalizeObjectHook } from '../utils/filter'
|
||||
import { toArray } from '../utils/general'
|
||||
import { normalizeAbsolutePath, transformUse } from '../utils/webpack-like'
|
||||
@ -24,6 +24,9 @@ export function getWebpackPlugin<UserOptions = Record<string, never>>(
|
||||
factory: UnpluginFactory<UserOptions>,
|
||||
): UnpluginInstance<UserOptions>['webpack'] {
|
||||
return (userOptions?: UserOptions) => {
|
||||
// eslint-disable-next-line ts/no-require-imports
|
||||
const VirtualModulesPlugin: typeof VirtualModulesPluginType = require('webpack-virtual-modules')
|
||||
|
||||
return {
|
||||
apply(compiler: WebpackCompiler) {
|
||||
// We need the prefix of virtual modules to be an absolute path so webpack let's us load them (even if it's made up)
|
||||
@ -51,7 +54,7 @@ export function getWebpackPlugin<UserOptions = Record<string, never>>(
|
||||
|
||||
// resolveId hook
|
||||
if (plugin.resolveId) {
|
||||
let vfs = compiler.options.plugins.find(i => i instanceof VirtualModulesPlugin) as VirtualModulesPlugin
|
||||
let vfs = compiler.options.plugins.find(i => i instanceof VirtualModulesPlugin)
|
||||
if (!vfs) {
|
||||
vfs = new VirtualModulesPlugin()
|
||||
compiler.options.plugins.push(vfs)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user