Resolve like require.resolve() on behalf of files asynchronously and synchronously
—
Utilities for detecting and working with Node.js core modules during module resolution. These functions help determine whether a given module name refers to a built-in Node.js module like 'fs', 'path', or 'http'.
Determines whether a given module name is a Node.js core module.
/**
* Check if a module name is a Node.js core module
* @param {string} moduleName - Module name to check
* @returns {boolean} True if the module is a Node.js core module
*/
function isCore(moduleName);Usage Examples:
const resolve = require('resolve');
// Check common core modules
console.log(resolve.isCore('fs')); // true
console.log(resolve.isCore('path')); // true
console.log(resolve.isCore('http')); // true
console.log(resolve.isCore('crypto')); // true
// Check non-core modules
console.log(resolve.isCore('lodash')); // false
console.log(resolve.isCore('express')); // false
console.log(resolve.isCore('./local')); // false
// Check edge cases
console.log(resolve.isCore('node:fs')); // true (Node.js protocol prefix)
console.log(resolve.isCore('')); // falseObject containing a mapping of all core module names to boolean values indicating whether they are core modules.
/**
* Object mapping core module names to boolean values
* Keys are module names, values are always true for core modules
* @type {object}
*/
const core;Usage Examples:
const resolve = require('resolve');
// Access the core modules object
console.log(resolve.core);
// {
// fs: true,
// path: true,
// http: true,
// https: true,
// crypto: true,
// ...
// }
// Check specific modules
if (resolve.core.fs) {
console.log('fs is a core module');
}
// Get all core module names
const coreModuleNames = Object.keys(resolve.core);
console.log('Core modules:', coreModuleNames);
// Filter user dependencies vs core modules
const userDependencies = ['lodash', 'fs', 'express', 'path']
.filter(name => !resolve.core[name]);
console.log('User dependencies:', userDependencies); // ['lodash', 'express']Core module detection is automatically integrated into the main resolution functions and can be controlled via options.
interface CoreModuleOptions {
/** Include Node.js core modules in search (default: true) */
includeCoreModules?: boolean;
}Usage Examples:
const resolve = require('resolve');
// Default behavior - core modules are resolved
resolve('fs', { basedir: __dirname }, (err, res) => {
console.log(res); // 'fs' (core module name returned as-is)
});
// Exclude core modules from resolution
resolve('fs', {
basedir: __dirname,
includeCoreModules: false
}, (err, res) => {
// Will attempt to find 'fs' as a regular module in node_modules
// Likely to result in MODULE_NOT_FOUND error
});
// Sync version
try {
const res = resolve.sync('path', {
basedir: __dirname,
includeCoreModules: true
});
console.log(res); // 'path'
} catch (err) {
console.error(err);
}The resolve package includes detection for all Node.js core modules across different Node.js versions. Some examples include:
fs - File system operationspath - Path utilitieshttp - HTTP client/serverhttps - HTTPS client/servercrypto - Cryptographic functionalityevents - Event emitterstream - Streaming interfacesbuffer - Binary data handlingutil - Utility functionsos - Operating system utilitiesSome core modules were added in specific Node.js versions:
worker_threads - Available in Node.js 10.5.0+fs/promises - Available in Node.js 10.0.0+perf_hooks - Available in Node.js 8.5.0+Core modules can also be imported with the node: protocol prefix:
const resolve = require('resolve');
// Both forms are recognized as core modules
console.log(resolve.isCore('fs')); // true
console.log(resolve.isCore('node:fs')); // true
resolve('node:fs', { basedir: __dirname }, (err, res) => {
console.log(res); // 'node:fs'
});The core module detection uses the is-core-module package internally, which maintains an up-to-date list of Node.js core modules across different versions. This ensures accurate detection regardless of the Node.js version being used.
The core module map (resolve.core) is generated from the same data and provides O(1) lookup performance for core module checking in performance-critical scenarios.
Install with Tessl CLI
npx tessl i tessl/npm-resolve