smart-require v1.0.2
smart-require
Avoid ugly require('../../../some-file') using absolute paths, from
the root of your project.
This package follows the well-known UNIX convention where / is the
root.
For example, in this source tree:
.
├── index.js
├── image
│ ├── gif.js
│ ├── jpg.js
│ └── png.js
└── video
└── mp4.js…if you’re in image/gif.js, this package allows you to require
video/mp4.js like this:
const video = require('/video/mp4.js')…instead of:
const video = require('../video/mp4.js')Of course, it prohibits you to require anything from the root of your
system (but why doing so?). Since the behavior of require() changes,
this is not really safe, even if I never had any problem with it. Use
at your own risk.
Installation
yarn add smart-require…or:
npm install --save smart-requireThen, you just have to indicate your project root before any call to
the customized require, usually at the beginning of your
entrypoint. If you are in index.js in the example above, you can
write:
require('smart-require')(__dirname)…or if your entrypoint is in image/jpeg.js and you want the same
behavior:
const root = require('path').join(__dirname, '..')
require('smart-require')(root)See also
require-root, nice but different.