mirror of
				https://github.com/strapi/strapi.git
				synced 2025-10-31 18:08:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | ||
| 
 | ||
| const { sep, join } = require('path');
 | ||
| 
 | ||
| const NODE_MODULES = 'node_modules';
 | ||
| /**
 | ||
|  * @param {string[]} pluginsPath – an array of paths to the plugins from the user's directory
 | ||
|  * @returns {RegExp} a regex that will exclude _all_ node_modules except for the plugins in the pluginsPath array.
 | ||
|  */
 | ||
| const createPluginsExcludePath = (pluginsPath = []) => {
 | ||
|   /**
 | ||
|    * converts the full path to just the plugin path
 | ||
|    * e.g. `/Users/username/strapi/node_modules/@scope/plugin-name`
 | ||
|    * to `@scope/plugin-name`
 | ||
|    */
 | ||
|   const tsxPlugins = pluginsPath.reduce((acc, curr) => {
 | ||
|     const dirPaths = curr.split(sep);
 | ||
| 
 | ||
|     const nodeModulePathIndex = dirPaths.findIndex((val) => val === NODE_MODULES);
 | ||
| 
 | ||
|     if (nodeModulePathIndex > 0) {
 | ||
|       const pluginNodeModulePath = dirPaths.slice(nodeModulePathIndex + 1);
 | ||
|       return [...acc, join(...pluginNodeModulePath)];
 | ||
|     }
 | ||
| 
 | ||
|     return acc;
 | ||
|   }, []);
 | ||
| 
 | ||
|   /**
 | ||
|    * If there aren't any plugins in the node_modules array, just return the node_modules regex
 | ||
|    * without complicating it.
 | ||
|    */
 | ||
|   if (tsxPlugins.length === 0) {
 | ||
|     return /node_modules/;
 | ||
|   }
 | ||
| 
 | ||
|   return new RegExp(`${NODE_MODULES}/(?!(${tsxPlugins.join('|')}))`);
 | ||
| };
 | ||
| 
 | ||
| module.exports = createPluginsExcludePath;
 | 
