require-from
Require non-public definitions from node modules.
Motivation
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.
Installation
Usually this module is only needed for development.
npm install require-from --save-dev
0.9.x
users
Notice to Version 0.10.0
requires passing an additional parameter (module
, see usage
below) to correctly handle relative imports. Users of earlier versions should upgrade.
Usage
-
Expose the desired definitions through
module
using a key other thanexports
. e.g.:module.testExports
. -
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.
Sample
exporter.js:
moduletestExports = 'testExports';moduleexports = 'regular exports';
importer.js:
var requireFrom = ; console; console;
output:
requireFrom("testExports", module, "./exporter") -> testExports
requireFrom("exports", module, "./exporter") -> regular exports
Tip
Define a naming convention and use bind
:
var requireFromTest = ;var m1 = ;var m2 = ;
require-from Copyright 2014 © DEADB17 DEADB17@gmail.com
Distributed under the MIT license.