mirror of
				https://github.com/strapi/strapi.git
				synced 2025-11-03 19:36:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
// Adapted from https://github.com/tleunen/babel-plugin-module-resolver/blob/master/src/resolvePath.js
 | 
						|
 | 
						|
const path = require('path');
 | 
						|
const normalizeOptions = require('./normalizeOptions');
 | 
						|
const mapToRelative = require('./mapToRelative');
 | 
						|
const { nodeResolvePath, replaceExtension, toLocalPath, toPosixPath } = require('./utils');
 | 
						|
 | 
						|
function getRelativePath(sourcePath, currentFile, absFileInRoot, opts) {
 | 
						|
  const realSourceFileExtension = path.extname(absFileInRoot);
 | 
						|
  const sourceFileExtension = path.extname(sourcePath);
 | 
						|
 | 
						|
  let relativePath = mapToRelative(opts.cwd, currentFile, absFileInRoot);
 | 
						|
 | 
						|
  if (realSourceFileExtension !== sourceFileExtension) {
 | 
						|
    relativePath = replaceExtension(relativePath, opts);
 | 
						|
  }
 | 
						|
 | 
						|
  return toLocalPath(toPosixPath(relativePath));
 | 
						|
}
 | 
						|
 | 
						|
function findPathInRoots(sourcePath, { extensions, roots }) {
 | 
						|
  // Search the source path inside every custom root directory
 | 
						|
 | 
						|
  const resolvedEESourceFile = nodeResolvePath(
 | 
						|
    `./${sourcePath.replace('ee_else_ce', '')}`,
 | 
						|
    roots.eeRoot,
 | 
						|
    extensions
 | 
						|
  );
 | 
						|
  const resolvedCESourceFile = nodeResolvePath(
 | 
						|
    `./${sourcePath.replace('ee_else_ce', '')}`,
 | 
						|
    roots.ceRoot,
 | 
						|
    extensions
 | 
						|
  );
 | 
						|
 | 
						|
  return { resolvedEESourceFile, resolvedCESourceFile };
 | 
						|
}
 | 
						|
 | 
						|
function resolvePathFromRootConfig(sourcePath, currentFile, opts) {
 | 
						|
  const absFileInRoot = findPathInRoots(sourcePath, opts);
 | 
						|
 | 
						|
  const relativeEEPath = getRelativePath(
 | 
						|
    sourcePath,
 | 
						|
    currentFile,
 | 
						|
    absFileInRoot.resolvedEESourceFile,
 | 
						|
    opts
 | 
						|
  );
 | 
						|
 | 
						|
  const relativeCEPath = getRelativePath(
 | 
						|
    sourcePath,
 | 
						|
    currentFile,
 | 
						|
    absFileInRoot.resolvedCESourceFile,
 | 
						|
    opts
 | 
						|
  );
 | 
						|
 | 
						|
  return { relativeCEPath, relativeEEPath };
 | 
						|
}
 | 
						|
 | 
						|
function resolvePath(sourcePath, currentFile, opts) {
 | 
						|
  const normalizedOpts = normalizeOptions(currentFile, opts);
 | 
						|
 | 
						|
  // File param is a relative path from the environment current working directory
 | 
						|
  // (not from cwd param)
 | 
						|
  const absoluteCurrentFile = path.resolve(currentFile);
 | 
						|
  const resolvedPaths = resolvePathFromRootConfig(sourcePath, absoluteCurrentFile, normalizedOpts);
 | 
						|
 | 
						|
  return resolvedPaths;
 | 
						|
}
 | 
						|
 | 
						|
module.exports = resolvePath;
 |