1.0.0 • Published 9 months ago
@mnrendra/get-caller-file v1.0.0
@mnrendra/get-caller-file
A utility to get the caller's file path from a specific callee. Useful for debugging, logging, or building tools that need to get the file locations at runtime.
Install
npm i @mnrendra/get-caller-fileAPI
getCallerFile
Gets the caller's file path from a specific callee. Extracts the file name as an absolute path from the first call site in the stack trace. If a callee is provided, the stack trace will start from the caller of the callee.
Type:
(callee?: ((...args: any) => any) | null) => stringParameters
| Name | Type | Description |
|---|---|---|
callee | ((...args: any) => any) \| null | Optional callee function or method to start tracing from. If undefined or null, tracing starts from the current caller. |
Return Type:
stringA string representing the absolute path of the caller's file.
Usage
CommonJS
/foo/callee.cjs
const { getCallerFile } = require('@mnrendra/get-caller-file')
const callee = () => {
const callerFile1 = getCallerFile()
const callerFile2 = getCallerFile(callee) // set the `callee` function as the callee.
console.log(callerFile1) // output: /foo/callee.cjs
console.log(callerFile2) // output: /foo/caller.cjs
}
module.exports = callee/foo/caller.cjs
const callee = require('./callee.cjs')
const caller = () => callee()
caller()ES Modules
/foo/callee.mjs
import { getCallerFile } from '@mnrendra/get-caller-file'
const callee = () => {
const callerFile1 = getCallerFile()
const callerFile2 = getCallerFile(callee) // set the `callee` function as the callee.
console.log(callerFile1) // output: /foo/callee.mjs
console.log(callerFile2) // output: /foo/caller.mjs
}
export default callee/foo/caller.mjs
import callee from './callee.mjs'
const caller = () => callee()
caller()Examples
- Call from your development project
/foo/project-name/src/index.mjs:
import { fileURLToPath } from 'node:url'
import { getCallerFile } from '@mnrendra/get-caller-file'
const caller = () => getCallerFile()
const callerFile = caller()
console.log(callerFile) // output: /foo/project-name/src/index.mjs- Call from your production package
/foo/consumer/node_modules/module-name/dist/index.js:
"use strict";
const { getCallerFile } = require("@mnrendra/get-caller-file");
const caller = () => getCallerFile();
const callerFile = caller();
console.log(callerFile); // output: /foo/consumer/node_modules/module-name/dist/index.jsLicense
Author
1.0.0
9 months ago