diff --git a/packages/bundler-webpack/src/requireHook.ts b/packages/bundler-webpack/src/requireHook.ts index 7f89bf9ea212..1b1120fb2664 100644 --- a/packages/bundler-webpack/src/requireHook.ts +++ b/packages/bundler-webpack/src/requireHook.ts @@ -16,6 +16,7 @@ const hookPropertyMap = new Map([ ['webpack/package.json', resolve('compiled/webpack/package')], ['webpack/lib/webpack', resolve('compiled/webpack')], ['webpack/lib/webpack.js', resolve('compiled/webpack')], + ['tapable', require.resolve('@umijs/bundler-utils/compiled/tapable')], ]); deepImports.forEach((item: string) => { diff --git a/packages/preset-vue/src/index.ts b/packages/preset-vue/src/index.ts index e226927aded5..951d1ef0adb0 100644 --- a/packages/preset-vue/src/index.ts +++ b/packages/preset-vue/src/index.ts @@ -1,5 +1,4 @@ import type { IApi } from 'umi'; -import './requireHook'; export default (api: IApi) => { api.describe({ diff --git a/packages/preset-vue/src/requireHook.ts b/packages/preset-vue/src/requireHook.ts deleted file mode 100644 index 6b82160d735a..000000000000 --- a/packages/preset-vue/src/requireHook.ts +++ /dev/null @@ -1,46 +0,0 @@ -// MIT: copy from https://github.com/vercel/next.js/blob/canary/packages/next/build/webpack/require-hook.ts -// sync injects a hook for webpack and webpack/... requires to use the internal ncc webpack version -// this is in order for userland plugins to attach to the same webpack instance as umi -// the individual compiled modules are as defined for the compilation in bundles/webpack/packages/* - -// TODO 之后走预打包处理 -// @ts-ignore -import deepImports from '@umijs/bundler-webpack/compiled/webpack/deepImports.json'; - -const hookPropertyMap = new Map([ - ['webpack', '@umijs/bundler-webpack/compiled/webpack'], - ['webpack/package', '@umijs/bundler-webpack/compiled/webpack/package'], - ['webpack/package.json', '@umijs/bundler-webpack/compiled/webpack/package'], - ['webpack/lib/webpack', '@umijs/bundler-webpack/compiled/webpack'], - ['webpack/lib/webpack.js', '@umijs/bundler-webpack/compiled/webpack'], - ['tapable', '@umijs/bundler-utils/compiled/tapable'], -]); - -deepImports.forEach((item: string) => { - const name = item.split('/').pop(); - - hookPropertyMap.set(item, `@umijs/bundler-webpack/compiled/webpack/${name}`); - hookPropertyMap.set( - `${item}.js`, - `@umijs/bundler-webpack/compiled/webpack/${name}`, - ); -}); - -const mod = require('module'); - -const resolveFilename = mod._resolveFilename; -mod._resolveFilename = function ( - request: string, - parent: any, - isMain: boolean, - options: any, -) { - const hookResolved = hookPropertyMap.get(request); - - if (hookResolved) { - request = hookResolved; - } - return resolveFilename.call(mod, request, parent, isMain, options); -}; - -export { hookPropertyMap };