Node.js project/package root path detection.
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 using npm:
$ npm install @grimen/rootpathInstall using yarn:
$ yarn add @grimen/rootpathDetect 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
---
Clone down source code:
$ make installRun colorful tests using jest:
$ make testpython-rootpath- "Python project/package root path detection."
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.
Released under the MIT license.