npm package: @mnrendra/read-stacked-json
Description: Read the stacked JSON file from any sub-directory in your project.
Author: Muhammad Rendra
Latest version: 1.6.3

# @mnrendra/read-stacked-json
Read the stacked JSON file from any sub-directory in your project.

## Install
```bash
npm i @mnrendra/read-stacked-json
```

## Usage

Using `CommonJS`:
```javascript
const { read, readSync } = require('@mnrendra/read-stacked-json')

// Asynchronously
read('file.json')
  .then((data) => {
    console.log('asynchronously:', data)
  })

// Synchronously
const data = readSync('file.json')
console.log('synchronously:', data)
```

Using `ES Module`:
```javascript
import { read, readSync } from '@mnrendra/read-stacked-json'

// Asynchronously
read('file.json')
  .then((data) => {
    console.log('asynchronously:', data)
  })

// Synchronously
const data = readSync('file.json')
console.log('synchronously:', data)
```

### Examples

#### 1. Read the `package.json` file in your development project:
Assuming your project's `~/project-name/package.json` file is as follows:
```json
{
  "name": "project-name",
  "version": "1.0.0"
}
```

Then, you can access and read the `~/project-name/package.json` file from any directory within your project.<br/>
Here are some examples:<br/>

##### • Read from `~/project-name/src/index.js`:
```javascript
const { readSync } = require('@mnrendra/read-stacked-json')

// Synchronously
const { name, version } = readSync('package.json')
console.log('synchronously:', name, version) // Output: synchronously: project-name 1.0.0
```

##### • Read from `~/project-name/src/any-directory/index.mjs`:
```javascript
import { read } from '@mnrendra/read-stacked-json'

// Asynchronously
read('package.json')
  .then(({ name, version }) => {
    console.log('asynchronously:', name, version) // Output: asynchronously: project-name 1.0.0
  })
```

#### 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:
```json
{
  "name": "module-name",
  "version": "1.0.0"
}
```

Then, you can access and read your `package.json` file from any directory within your module.<br/>
Here are some examples:<br/>

##### • Read from `/consumer/node_modules/module-name/dist/index.js`:
```javascript
"use strict";
const { readSync } = require('@mnrendra/read-stacked-json');

// Synchronously
const { name, version } = readSync('package.json');
console.log('synchronously:', name, version); // Output: synchronously: module-name 1.0.0
```

##### • Read from `/consumer/node_modules/module-name/dist/any-directory/index.js`:
```javascript
"use strict";
const { read } = require('@mnrendra/read-stacked-json');

// Asynchronously
read('package.json')
  .then(({ name, version }) => {
    console.log('asynchronously:', name, version); // Output: asynchronously: module-name 1.0.0
  });
```

## Options
### • `isJSON5`
*type: `boolean`*<br/>
*default: `false`*<br/>
To tell the parser to parse using native `JSON` or `JSON5`.
### • `skippedStacks`
*type: `string|string[]`*<br/>
*default: `[]`*<br/>
A name or a list of names of stack traces that need to be skipped.
### • `stackTraceLimit`
*type: `number`*<br/>
*default: `10`*<br/>
The `Error.stackTraceLimit` property specifies the number of stack frames to be collected by a stack trace.
### • `useCWD`
*type: `boolean`*<br/>
*default: `false`*<br/>
If set to `true`, it will use `process.cwd()` instead of `@mnrendra/read-stacked-file` to get the target path.

## Utilities
```javascript
import {
  validateSkippedStacks // To validate a name or a list of names of stack traces that need to be skipped. More info: @see https://github.com/mnrendra/validate-skipped-stacks
} from '@mnrendra/read-stacked-json'
```

## Types
```typescript
import type {
  Options, // @mnrendra/read-stacked-json options
  SkippedStacks, // @mnrendra/validate-skipped-stacks input
  ValidSkippedStacks // @mnrendra/validate-skipped-stacks output
} from '@mnrendra/read-stacked-json'
```

## License
[MIT](https://github.com/mnrendra/read-stacked-json/blob/HEAD/LICENSE)

## Author
[@mnrendra](https://github.com/mnrendra)