optimize NormalModuleFactory
This commit is contained in:
parent
9debdd3bc6
commit
a521ca1372
|
@ -309,25 +309,28 @@ class NormalModuleFactory extends ModuleFactory {
|
|||
compiler: contextInfo.compiler
|
||||
});
|
||||
const settings = {};
|
||||
const useLoadersPost = [];
|
||||
const useLoaders = [];
|
||||
const useLoadersPre = [];
|
||||
let useLoadersPost = undefined;
|
||||
let useLoadersNormal = undefined;
|
||||
let useLoadersPre = undefined;
|
||||
for (const r of result) {
|
||||
if (r.type === "use") {
|
||||
if (r.enforce === "post" && !noPrePostAutoLoaders) {
|
||||
if (useLoadersPost === undefined) useLoadersPost = [];
|
||||
useLoadersPost.push(r.value);
|
||||
} else if (
|
||||
r.enforce === "pre" &&
|
||||
!noPreAutoLoaders &&
|
||||
!noPrePostAutoLoaders
|
||||
) {
|
||||
if (useLoadersPre === undefined) useLoadersPre = [];
|
||||
useLoadersPre.push(r.value);
|
||||
} else if (
|
||||
!r.enforce &&
|
||||
!noAutoLoaders &&
|
||||
!noPrePostAutoLoaders
|
||||
) {
|
||||
useLoaders.push(r.value);
|
||||
if (useLoadersNormal === undefined) useLoadersNormal = [];
|
||||
useLoadersNormal.push(r.value);
|
||||
}
|
||||
} else if (
|
||||
typeof r.value === "object" &&
|
||||
|
@ -341,65 +344,55 @@ class NormalModuleFactory extends ModuleFactory {
|
|||
}
|
||||
}
|
||||
|
||||
let postLoaders, normalLoaders, preLoaders;
|
||||
const useLoaders = [];
|
||||
if (useLoadersPost !== undefined) {
|
||||
for (const loader of useLoadersPost) useLoaders.push(loader);
|
||||
}
|
||||
const loadersPos = useLoaders.length;
|
||||
if (useLoadersNormal !== undefined) {
|
||||
for (const loader of useLoadersNormal) useLoaders.push(loader);
|
||||
}
|
||||
if (useLoadersPre !== undefined) {
|
||||
for (const loader of useLoadersPre) useLoaders.push(loader);
|
||||
}
|
||||
|
||||
const continueCallback = needCalls(3, err => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
const allLoaders = postLoaders;
|
||||
for (const loader of loaders) allLoaders.push(loader);
|
||||
for (const loader of normalLoaders) allLoaders.push(loader);
|
||||
for (const loader of preLoaders) allLoaders.push(loader);
|
||||
const type = settings.type;
|
||||
const resolveOptions = settings.resolve;
|
||||
Object.assign(data.createData, {
|
||||
request: stringifyLoadersAndResource(allLoaders, resource),
|
||||
userRequest,
|
||||
rawRequest: request,
|
||||
loaders: allLoaders,
|
||||
resource,
|
||||
matchResource,
|
||||
resourceResolveData,
|
||||
settings,
|
||||
type,
|
||||
parser: this.getParser(type, settings.parser),
|
||||
generator: this.getGenerator(type, settings.generator),
|
||||
resolveOptions
|
||||
});
|
||||
callback();
|
||||
});
|
||||
this.resolveRequestArray(
|
||||
contextInfo,
|
||||
this.context,
|
||||
useLoadersPost,
|
||||
loaderResolver,
|
||||
resolveContext,
|
||||
(err, result) => {
|
||||
postLoaders = result;
|
||||
continueCallback(err);
|
||||
}
|
||||
);
|
||||
this.resolveRequestArray(
|
||||
contextInfo,
|
||||
this.context,
|
||||
useLoaders,
|
||||
loaderResolver,
|
||||
resolveContext,
|
||||
(err, result) => {
|
||||
normalLoaders = result;
|
||||
continueCallback(err);
|
||||
}
|
||||
);
|
||||
this.resolveRequestArray(
|
||||
contextInfo,
|
||||
this.context,
|
||||
useLoadersPre,
|
||||
loaderResolver,
|
||||
resolveContext,
|
||||
(err, result) => {
|
||||
preLoaders = result;
|
||||
continueCallback(err);
|
||||
(err, resolvedLoaders) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
const allLoaders = [];
|
||||
for (let i = 0; i < resolvedLoaders.length; i++) {
|
||||
if (i === loadersPos) {
|
||||
for (const loader of loaders) allLoaders.push(loader);
|
||||
}
|
||||
allLoaders.push(resolvedLoaders[i]);
|
||||
}
|
||||
if (resolvedLoaders.length === loadersPos) {
|
||||
for (const loader of loaders) allLoaders.push(loader);
|
||||
}
|
||||
const type = settings.type;
|
||||
const resolveOptions = settings.resolve;
|
||||
Object.assign(data.createData, {
|
||||
request: stringifyLoadersAndResource(allLoaders, resource),
|
||||
userRequest,
|
||||
rawRequest: request,
|
||||
loaders: allLoaders,
|
||||
resource,
|
||||
matchResource,
|
||||
resourceResolveData,
|
||||
settings,
|
||||
type,
|
||||
parser: this.getParser(type, settings.parser),
|
||||
generator: this.getGenerator(type, settings.generator),
|
||||
resolveOptions
|
||||
});
|
||||
callback();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue