node-rootpath v0.1.1
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:
$ 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
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)
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)
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...
$ 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
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 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.
5 years ago