@itrocks/class-file
TypeScript icon, indicating that this package has built-in type declarations

0.0.18 • Public • Published

npm version npm downloads GitHub issues discord

class-file

Retrieve the absolute file path of an imported class:

  • Automatic for your CommonJS-compiled projects,
  • Using a @File decorator in ESM-compiled projects.

Installation

npm install @itrocks/class-file

Activation

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

Package Sidebar

Install

npm i @itrocks/class-file

Homepage

it.rocks

Weekly Downloads

45

Version

0.0.18

License

LGPL-3.0-or-later

Unpacked Size

13.7 kB

Total Files

9

Last publish

Collaborators

  • baptistepillot