You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							36 lines
						
					
					
						
							948 B
						
					
					
				
			
		
		
	
	
							36 lines
						
					
					
						
							948 B
						
					
					
				| const defaults = require('../config');
 | |
| const normalizeRule = require('./normalize-rule');
 | |
| 
 | |
| const spriteLoaderPath = require.resolve('../loader');
 | |
| 
 | |
| /**
 | |
|  * @param {NormalModule} module
 | |
|  * @return {boolean}
 | |
|  */
 | |
| function isModuleShouldBeExtracted(module) {
 | |
|   const { request, issuer, loaders } = module;
 | |
|   let rule = null;
 | |
| 
 | |
|   if (Array.isArray(loaders) && loaders.length > 0) {
 | |
|     // Find loader rule
 | |
|     rule = loaders.map(normalizeRule).find(data => data.loader === spriteLoaderPath);
 | |
|   }
 | |
| 
 | |
|   let issuerResource = null;
 | |
|   if (issuer) {
 | |
|     // webpack 1 compat
 | |
|     issuerResource = typeof issuer === 'string' ? issuer : issuer.resource;
 | |
|   }
 | |
| 
 | |
|   if (typeof request === 'string' && (!request.includes(spriteLoaderPath) || !rule)) {
 | |
|     return false;
 | |
|   }
 | |
| 
 | |
|   return !!(
 | |
|     (issuer && defaults.EXTRACTABLE_MODULE_ISSUER_PATTERN.test(issuerResource)) ||
 | |
|     (rule && rule.options && rule.options.extract)
 | |
|   );
 | |
| }
 | |
| 
 | |
| module.exports = isModuleShouldBeExtracted;
 |