Socket
Socket
Sign inDemoInstall

require-at

Package Overview
Dependencies
0
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

require-at

Call require pretending your are at another directory


Version published
Maintainers
1
Weekly downloads
613,395
decreased by-7.1%

Weekly downloads

Readme

Source

NPM version Build Status Dependency Status devDependency Status

require-at

Allow you to call require or require.resolve pretending that you are at another directory.

Purpose

Given the directory structure below with two NodeJS apps:

app1
|-+ foo
| +-- index.js
| +--+ node_modules
|    +--+ x 
|       + ...
app2
|-+ bar
| +-- index.js
| +--+ node_modules
|    +--+ y
|       + ...

When you call require("x") in /app1/foo/index.js, NodeJS will search and find module x there.

Now from the same file, if you want to resolve the module y under the directory /app2/bar, you have to use an absolute or relative path directly pointing to y, and you may have to do some searching, probably re-implementing Node's module searching algorithm if you don't know exactly where y could be.

However, in the file /app2/bar/index.js, it can just do require("y") and Node would automatically find the module for it, because that file is at the location where y is under.

What if from the file /app1/foo/index.js, you can call require as if you were at the directory /app2/bar, then you would be able to utilize Node's module searching automatically.

To achieve this, most other implementations choose to re-implement Node's module searching algorithm.

This module's approach is to tap into Node's module and let it do the work.

Install

$ npm install require-at --save

Usage

A single function is exported.

requireAt(dir, [request])
  • If you call it with just dir, then it returns a require function that's been binded to the directory dir. You can use it to load any module as if you are at dir.
    • You can also call require.resolve with the same effect.
  • If you call it with dir and a request, then it will load and return the module request as if at dir.
Example
const requireAt = require("require-at");

// get back a require binded to /another/dir

const requireAtAnother = requireAt("/another/dir/");
const modXPath = requireAtAnother.resolve("modX");
const modX = requireAtAnother("modX");

// load modY at /another/yet/dir directly

const modY = requireAt("/another/yet/dir", "modY");

License

Apache-2.0 © Joel Chen

FAQs

Last updated on 28 Nov 2020

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