@serpent/common-cli
Version:
通用的 cli 相关的函数
37 lines (33 loc) • 1.05 kB
JavaScript
;
var Module = require('module');
var url = require('url');
var path = require('path');
/**
* esm 中获取 cjs 中的 require 函数
* @param currentFileUrl 一般是 import.meta.url
* @returns
*/
function getRequire(currentFileUrl) {
return Module.createRequire(currentFileUrl);
}
/**
* esm 中获取 cjs 中的 require.resolve 函数
* @param currentFileUrl 一般是 import.meta.url
* @returns
*/
function getResolver(currentFileUrl) {
var require = getRequire(currentFileUrl);
return require.resolve.bind(require);
}
/**
* 从 fileUrl 中解析出当前文件的路径及目录,主要用于模拟 cjs 中的 __filename 和 __dirname 变量
* @param currentFileUrl 一般是 import.meta.url
* @returns
*/
function getPathInfoFromFileUrl(currentFileUrl) {
var filename = url.fileURLToPath(currentFileUrl);
return { filename: filename, dirname: path.dirname(filename) };
}
exports.getPathInfoFromFileUrl = getPathInfoFromFileUrl;
exports.getRequire = getRequire;
exports.getResolver = getResolver;