Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/grimen/node-rootpath
Node.js project/package root path detection.
https://github.com/grimen/node-rootpath
auto-detect autodetect common detect node package-root package-root-path project-root project-root-path root root-path rootpath utility
Last synced: about 1 month ago
JSON representation
Node.js project/package root path detection.
- Host: GitHub
- URL: https://github.com/grimen/node-rootpath
- Owner: grimen
- License: mit
- Created: 2019-10-10T07:03:55.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-04T12:17:26.000Z (almost 2 years ago)
- Last Synced: 2024-04-25T00:31:10.669Z (8 months ago)
- Topics: auto-detect, autodetect, common, detect, node, package-root, package-root-path, project-root, project-root-path, root, root-path, rootpath, utility
- Language: JavaScript
- Homepage: https://npmjs.com/package/@grimen/rootpath
- Size: 402 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: MIT-LICENSE
Awesome Lists containing this project
README
# `node-rootpath` [![NPM version](https://badge.fury.io/js/%40grimen%2Frootpath.svg)](https://badge.fury.io/js/%40grimen%2Frootpath) [![Build Status](https://travis-ci.com/grimen/node-rootpath.svg?token=sspjPRWbecBSpceU8Jyn&branch=master)](https://travis-ci.com/grimen/node-rootpath) [![Coverage Status](https://codecov.io/gh/grimen/node-rootpath/branch/master/graph/badge.svg)](https://codecov.io/gh/grimen/node-rootpath)
*Node.js project/package root path detection.*
## Introduction
Auto-magic project/package root path detection - from a child module file for Node.js libraries/projects.
It does this by detecting typical package/project root files/folders (e.g. `.git`, `package.json`, etc.), but it can also be overriden easily if needed.
## Install
Install using **npm**:
```bash
$ npm install @grimen/rootpath
```Install using **yarn**:
```bash
$ yarn add @grimen/rootpath
```# Use
Detect a project/package root path:
**1.** Assuming we have a **Node.js** library/application project...
```
/home/me/projects
└── node-foo
└── foo
└── utils
└── __init__.js
└── baz.js
└── say.js
└── __init__.js
└── bar.js
README.md
package.json
setup.js
````foo/bar.js` - top level package module
```javascript
const assert = require('assert')const rootpath = require('@grimen/rootpath')
async function bar () {
const path = await rootpath.detect()assert(path === '/home/me/projects/node-foo')
console.log('---')
console.log('FILE:', __filename)
console.log('ROOT:', path)
console.log('---')
}if (require.main === module) {
bar()
}
````foo/utils/baz.js` - nested level package module (dependency)
```javascript
const assert = require('assert')const rootpath = require('@grimen/rootpath')
async function baz () {
const path = await rootpath.detect()assert(path === '/home/me/projects/node-foo')
console.log('---')
console.log('FILE:', __filename)
console.log('ROOT:', path)
console.log('---')
}if (require.main === module) {
baz()
}
````foo/utils/say.js` - nested level package module (dependency)
```javascript
const assert = require('assert')const rootpath = require('@grimen/rootpath')
async function say () {
const path = rootpath.detect()console.log('---')
console.log(`SAY: ${path}`)
console.log('---')
}if (require.main === module) {
say()
}
```**2.** Let's run the files individually - they should both with successful assertions and output accurately detected root paths...
```sh
$ cd /home/me/projects/node-foo$ node ./foo/bar.js
---
FILE: /home/me/projects/node-foo/foo/bar.js
ROOT: /home/me/projects/node-foo
---$ node ./foo/utils/baz.js
---
FILE: /home/me/projects/node-foo/foo/utils/baz.js
ROOT: /home/me/projects/node-foo
---$ node ./foo/utils/say.js
---
SAY: /home/me/projects/node-foo
---```
## Test
Clone down source code:
```sh
$ make install
```Run **colorful tests** using **jest**:
```sh
$ make test
```## Related
- [**`python-rootpath`**](https://github.com/grimen/python-rootpath) - *"Python project/package root path detection."*
## About
This project was mainly initiated - in lack of solid existing alternatives - to be used at our work at **[Markable.ai](https://markable.ai)** to have common code conventions between various programming environments where **Node.js** (for I/O heavy operations) is heavily used.
## License
Released under the MIT license.