mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-09-22 05:40:48 +02:00
Stop using module.createRequire (problematic under webpack), incorporate and export resolveModule helper from markdownlint-cli2.
This commit is contained in:
parent
a1da464618
commit
53ff5c43f1
16 changed files with 327 additions and 25 deletions
52
lib/resolve-module.cjs
Normal file
52
lib/resolve-module.cjs
Normal file
|
@ -0,0 +1,52 @@
|
|||
// @ts-check
|
||||
|
||||
"use strict";
|
||||
|
||||
// @ts-ignore
|
||||
// eslint-disable-next-line camelcase, no-inline-comments, no-undef
|
||||
const nativeRequire = (typeof __non_webpack_require__ === "undefined") ? require : /* c8 ignore next */ __non_webpack_require__;
|
||||
// Captures the native require implementation (even under webpack).
|
||||
|
||||
/**
|
||||
* @typedef RequireResolveOptions
|
||||
* @property {string[]} [paths] Additional paths to resolve from.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @callback RequireResolve
|
||||
* @param {string} id Module name or path.
|
||||
* @param {RequireResolveOptions} options Options to apply.
|
||||
* @returns {string} Resolved module path.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Resolves modules according to Node's resolution rules.
|
||||
*
|
||||
* @param {RequireResolve} resolve Node-like require.resolve implementation.
|
||||
* @param {string} id Module name or path.
|
||||
* @param {string[]} [paths] Additional paths to resolve from.
|
||||
* @returns {string} Resolved module path.
|
||||
*/
|
||||
const resolveModuleCustomResolve = (resolve, id, paths = []) => {
|
||||
// resolve.paths is sometimes not present under webpack or VS Code
|
||||
// @ts-ignore
|
||||
const resolvePaths = resolve.paths?.("") || [];
|
||||
const allPaths = [ ...paths, ...resolvePaths ];
|
||||
return resolve(id, { "paths": allPaths });
|
||||
};
|
||||
|
||||
/**
|
||||
* Resolves modules according to Node's resolution rules.
|
||||
*
|
||||
* @param {string} id Module name or path.
|
||||
* @param {string[]} [paths] Additional paths to resolve from.
|
||||
* @returns {string} Resolved module path.
|
||||
*/
|
||||
const resolveModule = (id, paths) => (
|
||||
resolveModuleCustomResolve(nativeRequire.resolve, id, paths)
|
||||
);
|
||||
|
||||
module.exports = {
|
||||
resolveModule,
|
||||
resolveModuleCustomResolve
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue