@itrocks/class-file
v0.0.21
Published
Retrieve the absolute file path of an imported class
Downloads
789
Maintainers
Readme
class-file
Retrieve the absolute file path of an imported class:
- Automatic for your CommonJS-compiled projects,
- Using a
@Filedecorator in ESM-compiled projects.
Installation
npm install @itrocks/class-fileActivation
This library associates each imported class with the absolute file path where it is defined. Its behavior differs depending on the module compilation mode:
CommonJS: Recommended for most use cases.
Add this line to the very start of your main file:
import '@itrocks/class-file/automation'or:
require('@itrocks/class-file/automation')This enables automatic file path resolution for all subsequently imported classes.
ESModule: Requires manual setup.
Due to the limitation of ESM, you must explicitly decorate classes with the @File(fileURLToPath(import.meta.url))
decorator to enable file path resolution. Without this decorator, fileOf() will return undefined.
Example
Given a file my-class.js, with CommonJS transpilation:
export class MyClass {}Or on transpiling to an ESModule:
import { fileURLToPath } from 'node:url'
@File(fileURLToPath(import.meta.url))
export class MyClass {}Retrieving the file path:
import { fileOf } from '@itrocks/class-file'
import { MyClass } from './my-class.js'
console.log(fileOf(MyClass)) // Returns the absolute file path
console.log(fileOf(new MyClass)) // Also returns the absolute file path