Require non-public definitions from node modules
npm install require-fromRequire non-public definitions from node modules.
It is convenient to be able to expose internal module definitions that are not
part of the public API without having to create a separate module. A common
use case is testing.
Usually this module is only needed for development.
npm install require-from --save-dev
Version 0.10.0 requires passing an additional parameter (module, see usage
below) to correctly handle relative imports. Users of earlier versions should upgrade.
1. Expose the desired definitions through module using a key other than
exports. e.g.: module.testExports.
2. From another module require the definition through
requireFrom('exports-key', module, 'path-to-module'). Where
'exports-key' is a string matching the name of the object with the
definitions (testExports above).
module is the Node provided object representing the current module.
'path-to-module' is a path following the
Node.js require API.
exporter.js:
``js`
module.testExports = 'testExports';
module.exports = 'regular exports';
importer.js:
`js
var requireFrom = require('require-from');
console.log('requireFrom("testExports", module, "./exporter") ->',
requireFrom('testExports', module, './exporter'));
console.log('requireFrom("exports", module, "./exporter") ->',
requireFrom('exports', module, './exporter'));
`
output:
``
requireFrom("testExports", module, "./exporter") -> testExports
requireFrom("exports", module, "./exporter") -> regular exports
Define a naming convention and use bind:
`javascript``
var requireFromTest = require('require-from').bind(undefined, 'testExports', module);
var m1 = requireFromTest('./m1');
var m2 = requireFromTest('./m2');
--------------------------------------------------------------------------------
require-from Copyright 2014 © DEADB17
Distributed under the MIT license.