mirror of https://github.com/webpack/webpack.git
				
				
				
			Merge pull request #14435 from webpack/bugfix/webpack-extension
This commit is contained in:
		
						commit
						ada210827a
					
				|  | @ -466,49 +466,68 @@ class NormalModuleFactory extends ModuleFactory { | ||||||
| 							: "") + | 							: "") + | ||||||
| 						stringifyLoadersAndResource(loaders, resourceData.resource); | 						stringifyLoadersAndResource(loaders, resourceData.resource); | ||||||
| 
 | 
 | ||||||
| 					const resourceDataForRules = matchResourceData || resourceData; |  | ||||||
| 					const result = this.ruleSet.exec({ |  | ||||||
| 						resource: resourceDataForRules.path, |  | ||||||
| 						realResource: resourceData.path, |  | ||||||
| 						resourceQuery: resourceDataForRules.query, |  | ||||||
| 						resourceFragment: resourceDataForRules.fragment, |  | ||||||
| 						scheme, |  | ||||||
| 						assertions, |  | ||||||
| 						mimetype: matchResourceData ? "" : resourceData.data.mimetype || "", |  | ||||||
| 						dependency: dependencyType, |  | ||||||
| 						descriptionData: matchResourceData |  | ||||||
| 							? undefined |  | ||||||
| 							: resourceData.data.descriptionFileData, |  | ||||||
| 						issuer: contextInfo.issuer, |  | ||||||
| 						compiler: contextInfo.compiler, |  | ||||||
| 						issuerLayer: contextInfo.issuerLayer || "" |  | ||||||
| 					}); |  | ||||||
| 					const settings = {}; | 					const settings = {}; | ||||||
| 					const useLoadersPost = []; | 					const useLoadersPost = []; | ||||||
| 					const useLoaders = []; | 					const useLoaders = []; | ||||||
| 					const useLoadersPre = []; | 					const useLoadersPre = []; | ||||||
| 					for (const r of result) { | 
 | ||||||
| 						if (r.type === "use") { | 					// handle .webpack[] suffix
 | ||||||
| 							if (!noAutoLoaders && !noPrePostAutoLoaders) { | 					let resource; | ||||||
| 								useLoaders.push(r.value); | 					let match; | ||||||
|  | 					if ( | ||||||
|  | 						matchResourceData && | ||||||
|  | 						typeof (resource = matchResourceData.resource) === "string" && | ||||||
|  | 						(match = /\.webpack\[([^\]]+)\]$/.exec(resource)) | ||||||
|  | 					) { | ||||||
|  | 						settings.type = match[1]; | ||||||
|  | 						matchResourceData.resource = matchResourceData.resource.slice( | ||||||
|  | 							0, | ||||||
|  | 							-settings.type.length - 10 | ||||||
|  | 						); | ||||||
|  | 					} else { | ||||||
|  | 						settings.type = "javascript/auto"; | ||||||
|  | 						const resourceDataForRules = matchResourceData || resourceData; | ||||||
|  | 						const result = this.ruleSet.exec({ | ||||||
|  | 							resource: resourceDataForRules.path, | ||||||
|  | 							realResource: resourceData.path, | ||||||
|  | 							resourceQuery: resourceDataForRules.query, | ||||||
|  | 							resourceFragment: resourceDataForRules.fragment, | ||||||
|  | 							scheme, | ||||||
|  | 							assertions, | ||||||
|  | 							mimetype: matchResourceData | ||||||
|  | 								? "" | ||||||
|  | 								: resourceData.data.mimetype || "", | ||||||
|  | 							dependency: dependencyType, | ||||||
|  | 							descriptionData: matchResourceData | ||||||
|  | 								? undefined | ||||||
|  | 								: resourceData.data.descriptionFileData, | ||||||
|  | 							issuer: contextInfo.issuer, | ||||||
|  | 							compiler: contextInfo.compiler, | ||||||
|  | 							issuerLayer: contextInfo.issuerLayer || "" | ||||||
|  | 						}); | ||||||
|  | 						for (const r of result) { | ||||||
|  | 							if (r.type === "use") { | ||||||
|  | 								if (!noAutoLoaders && !noPrePostAutoLoaders) { | ||||||
|  | 									useLoaders.push(r.value); | ||||||
|  | 								} | ||||||
|  | 							} else if (r.type === "use-post") { | ||||||
|  | 								if (!noPrePostAutoLoaders) { | ||||||
|  | 									useLoadersPost.push(r.value); | ||||||
|  | 								} | ||||||
|  | 							} else if (r.type === "use-pre") { | ||||||
|  | 								if (!noPreAutoLoaders && !noPrePostAutoLoaders) { | ||||||
|  | 									useLoadersPre.push(r.value); | ||||||
|  | 								} | ||||||
|  | 							} else if ( | ||||||
|  | 								typeof r.value === "object" && | ||||||
|  | 								r.value !== null && | ||||||
|  | 								typeof settings[r.type] === "object" && | ||||||
|  | 								settings[r.type] !== null | ||||||
|  | 							) { | ||||||
|  | 								settings[r.type] = cachedCleverMerge(settings[r.type], r.value); | ||||||
|  | 							} else { | ||||||
|  | 								settings[r.type] = r.value; | ||||||
| 							} | 							} | ||||||
| 						} else if (r.type === "use-post") { |  | ||||||
| 							if (!noPrePostAutoLoaders) { |  | ||||||
| 								useLoadersPost.push(r.value); |  | ||||||
| 							} |  | ||||||
| 						} else if (r.type === "use-pre") { |  | ||||||
| 							if (!noPreAutoLoaders && !noPrePostAutoLoaders) { |  | ||||||
| 								useLoadersPre.push(r.value); |  | ||||||
| 							} |  | ||||||
| 						} else if ( |  | ||||||
| 							typeof r.value === "object" && |  | ||||||
| 							r.value !== null && |  | ||||||
| 							typeof settings[r.type] === "object" && |  | ||||||
| 							settings[r.type] !== null |  | ||||||
| 						) { |  | ||||||
| 							settings[r.type] = cachedCleverMerge(settings[r.type], r.value); |  | ||||||
| 						} else { |  | ||||||
| 							settings[r.type] = r.value; |  | ||||||
| 						} | 						} | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
|  | @ -528,23 +547,6 @@ class NormalModuleFactory extends ModuleFactory { | ||||||
| 						} | 						} | ||||||
| 						for (const loader of preLoaders) allLoaders.push(loader); | 						for (const loader of preLoaders) allLoaders.push(loader); | ||||||
| 						let type = settings.type; | 						let type = settings.type; | ||||||
| 						if (!type) { |  | ||||||
| 							let resource; |  | ||||||
| 							let match; |  | ||||||
| 							if ( |  | ||||||
| 								matchResourceData && |  | ||||||
| 								typeof (resource = matchResourceData.resource) === "string" && |  | ||||||
| 								(match = /\.webpack\[([^\]]+)\]$/.exec(resource)) |  | ||||||
| 							) { |  | ||||||
| 								type = match[1]; |  | ||||||
| 								matchResourceData.resource = matchResourceData.resource.slice( |  | ||||||
| 									0, |  | ||||||
| 									-type.length - 10 |  | ||||||
| 								); |  | ||||||
| 							} else { |  | ||||||
| 								type = "javascript/auto"; |  | ||||||
| 							} |  | ||||||
| 						} |  | ||||||
| 						const resolveOptions = settings.resolve; | 						const resolveOptions = settings.resolve; | ||||||
| 						const layer = settings.layer; | 						const layer = settings.layer; | ||||||
| 						if (layer !== undefined && !layers) { | 						if (layer !== undefined && !layers) { | ||||||
|  |  | ||||||
|  | @ -14,8 +14,14 @@ const config = (i, options) => ({ | ||||||
| 	module: { | 	module: { | ||||||
| 		rules: [ | 		rules: [ | ||||||
| 			{ | 			{ | ||||||
| 				test: /\.css$/, | 				oneOf: [ | ||||||
| 				use: [MCEP.loader, "css-loader"] | 					{ | ||||||
|  | 						test: /\.css$/, | ||||||
|  | 						use: [MCEP.loader, "css-loader"] | ||||||
|  | 					}, | ||||||
|  | 					{ test: /\.js$/ }, | ||||||
|  | 					{ type: "asset" } | ||||||
|  | 				] | ||||||
| 			} | 			} | ||||||
| 		] | 		] | ||||||
| 	}, | 	}, | ||||||
|  |  | ||||||
|  | @ -8,9 +8,15 @@ module.exports = { | ||||||
| 		}, | 		}, | ||||||
| 		rules: [ | 		rules: [ | ||||||
| 			{ | 			{ | ||||||
| 				test: /\.css\.js$/, | 				oneOf: [ | ||||||
| 				use: "./loader", | 					{ | ||||||
| 				type: "asset/source" | 						test: /\.css\.js$/, | ||||||
|  | 						use: "./loader", | ||||||
|  | 						type: "asset/source" | ||||||
|  | 					}, | ||||||
|  | 					{ test: /\.(js|jpg|png)$/ }, | ||||||
|  | 					{ type: "asset/resource" } | ||||||
|  | 				] | ||||||
| 			} | 			} | ||||||
| 		] | 		] | ||||||
| 	}, | 	}, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue