mirror of
https://github.com/strapi/strapi.git
synced 2025-07-25 01:49:34 +00:00
59 lines
1.3 KiB
JavaScript
59 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
// From https://github.com/tleunen/babel-plugin-module-resolver/blob/master/src/utils.js
|
|
|
|
const path = require('path');
|
|
const resolve = require('resolve');
|
|
|
|
const nodeResolvePath = (modulePath, basedir, extensions) => {
|
|
try {
|
|
return resolve.sync(modulePath, { basedir, extensions });
|
|
} catch (e) {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
const toPosixPath = (modulePath) => {
|
|
return modulePath.replace(/\\/g, '/');
|
|
};
|
|
|
|
const isRelativePath = (nodePath) => {
|
|
return nodePath.match(/^\.?\.\//);
|
|
};
|
|
|
|
const stripExtension = (modulePath, stripExtensions) => {
|
|
let name = path.basename(modulePath);
|
|
stripExtensions.some((extension) => {
|
|
if (name.endsWith(extension)) {
|
|
name = name.slice(0, name.length - extension.length);
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
return name;
|
|
};
|
|
|
|
const replaceExtension = (modulePath, opts) => {
|
|
const filename = stripExtension(modulePath, opts.extensions);
|
|
return path.join(path.dirname(modulePath), filename);
|
|
};
|
|
|
|
const toLocalPath = (modulePath) => {
|
|
let localPath = modulePath.replace(/\/index$/, ''); // remove trailing /index
|
|
|
|
if (!isRelativePath(localPath)) {
|
|
localPath = `./${localPath}`; // insert `./` to make it a relative path
|
|
}
|
|
|
|
return localPath;
|
|
};
|
|
|
|
module.exports = {
|
|
nodeResolvePath,
|
|
replaceExtension,
|
|
stripExtension,
|
|
toPosixPath,
|
|
toLocalPath,
|
|
isRelativePath,
|
|
};
|