Skip to content

Repository files navigation

node-rootpathNPM versionBuild StatusCoverage Status

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:

$ npm install @grimen/rootpath

Install using yarn:

$ 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

constassert=require('assert')constrootpath=require('@grimen/rootpath')asyncfunctionbar(){constpath=awaitrootpath.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)

constassert=require('assert')constrootpath=require('@grimen/rootpath')asyncfunctionbaz(){constpath=awaitrootpath.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)

constassert=require('assert')constrootpath=require('@grimen/rootpath')asyncfunctionsay(){constpath=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...

$ 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:

$ make install

Run colorful tests using jest:

$ make test

Related

About

This project was mainly initiated - in lack of solid existing alternatives - to be used at our work at 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.

Releases

Packages

Used by

Contributors

Languages