2.0.1 • Published 7 months ago

@mnrendra/read-stacked-file v2.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

@mnrendra/read-stacked-file

npm version types license

Read a file based on the stack trace from any subdirectory in your project. Useful for reading files relative to the original caller — even when deeply nested. Ideal for accessing config files like package.json, .env, and more.

Install

npm i @mnrendra/read-stacked-file

Usage

  • readStackedFile(targetFile?, options?): Reads the stack-trace file asynchronously and returns the file data in a Promise<string>.
  • readStackedFileSync(targetFile?, options?): Reads the stack-trace file synchronously and returns the file data in a string.

Using CommonJS:

const { readStackedFile, readStackedFileSync } = require('@mnrendra/read-stacked-file')

// Asynchronously
const readAsync = async () => {
  const data = await readStackedFile('package.json')
  console.log('asynchronously:', data)
}

readAsync()

// Synchronously
const readSync = () => {
  const data = readStackedFileSync('package.json')
  console.log('synchronously:', data)
}

readSync()

Using ES Modules:

import { readStackedFile, readStackedFileSync } from '@mnrendra/read-stacked-file'

// Asynchronously
const readAsync = async () => {
  const data = await readStackedFile('package.json')
  console.log('asynchronously:', data)
}

readAsync()

// Synchronously
const readSync = () => {
  const data = readStackedFileSync('package.json')
  console.log('synchronously:', data)
}

readSync()

Examples

1. Read the package.json file in your development project:

Assuming your project's ~/project-name/package.json file is as follows:

{
  "name": "project-name",
  "version": "1.0.0"
}

This lets you read the ~/project-name/package.json file from any directory in your project. Examples:

• Read from ~/project-name/src/index.js:
const { readStackedFileSync } = require('@mnrendra/read-stacked-file')

// Synchronously
const main = () => {
  const data = readStackedFileSync('package.json')
  const { name, version } = JSON.parse(data)
  console.log('synchronously:', name, version) // Output: synchronously: project-name 1.0.0
}

main()
• Read from ~/project-name/src/any-directory/index.mjs:
import { readStackedFile } from '@mnrendra/read-stacked-file'

// Asynchronously
const main = async () => {
  const data = await readStackedFile('package.json')
  const { name, version } = JSON.parse(data)
  console.log('asynchronously:', name, version) // Output: asynchronously: project-name 1.0.0
}

main()

2. Read the package.json file in your published module:

Assuming your module is installed in the /consumer/node_modules/module-name/ directory and the package.json file for your module located at /consumer/node_modules/module-name/package.json is as follows:

{
  "name": "module-name",
  "version": "1.0.0"
}

This lets you access and read your module’s package.json file from any directory within the module itself. Here are some examples:

• Read from /consumer/node_modules/module-name/dist/index.js:
"use strict";

const { readStackedFileSync } = require('@mnrendra/read-stacked-file');

// Synchronously
const main = () => {
  const data = readStackedFileSync('package.json');
  const { name, version } = JSON.parse(data);
  console.log('synchronously:', name, version); // Output: synchronously: module-name 1.0.0
}

main();
• Read from /consumer/node_modules/module-name/dist/any-directory/index.js:
"use strict";

const { readStackedFile } = require('@mnrendra/read-stacked-file');

// Asynchronously
const main = async () => {
  const data = await readStackedFile('package.json');
  const { name, version } = JSON.parse(data);
  console.log('asynchronously:', name, version); // Output: asynchronously: module-name 1.0.0
}

main();

Options

caller

Type: (...args: any) => any A caller function to serve as the stack-trace target.

stackTraceLimit

Type: number Default: 10 The Error.stackTraceLimit property specifies the number of stack frames to be collected by a stack trace.

Types

import type {
  Options // The Options interface for `readStackedFile` and `readStackedFileSync`.
} from '@mnrendra/read-stacked-file'

License

MIT

Author

@mnrendra

1.5.3

8 months ago

1.5.2

8 months ago

1.5.1

12 months ago

1.5.0

12 months ago

2.0.1

7 months ago

2.0.0

7 months ago

1.4.0

1 year ago

1.3.1

1 year ago

1.3.0

1 year ago

1.2.0

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.0.0

1 year ago