Socket
Socket
Sign inDemoInstall

@grimen/rootpath

Package Overview
Dependencies
22
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @grimen/rootpath

Node.js project/package root path detection.


Version published
Weekly downloads
2
Maintainers
1
Created
Weekly downloads
 

Readme

Source

node-rootpath NPM version Build Status Coverage 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

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
  • 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.

FAQs

Last updated on 28 Dec 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc