module-parent

Get one of the module's parents, cleaning the require cache

Usage no npm install needed!

<script type="module">
  import moduleParent from 'https://cdn.skypack.dev/module-parent';
</script>

README

npm version Build Status Coverage Status Code Climate Inch CI

Dependency Status devDependency Status

module-parent

Get one of the module's parents, cleaning the require cache

If you have different needs regarding the functionality, please add a feature request.

Installation

npm install --save module-parent

Usage

var parentModule = require('module-parent')(module, 0);
var parentName = parentModule && path.basename(parentModule.filename, '.js') || 'app';

Caution: this module clears require.cache to resolve the filename for the parent modules (if numParentsToSkip parameter is set, then require.cache is set for all the module when going up to parent, except last parent). By default, module.parent points to the module which required this one at first time, not all the modules require'ing it later.

That means, each time module loads as at first time and, for example, it's not possible to use singleton pattern for all the modules which uses package module-parent.

Parameters

var parentModule = require('module-parent')(
  moduleToStart,      // module to start from
  numParentsToSkip    // number of parents to skip; default: 0
);

moduleToStart

Type: Object Description: Module to start from. Usually equals to module, means to determine parents of current module. Mandatory Default: none

numParentsToSkip

Type: Number Description: Number of parent module to skip. For example, if you need to find module.parent.parent, you need to set it to 1 etc. Optional Default: 0, means use parent of the module provided as first parameter.

Examples

Fragment of package require-dir-all:

var moduleParent = require('module-parent');
....
options._parentsToSkip = options._parentsToSkip || 0;
...
var originalModule     = moduleParent(module, options._parentsToSkip);
var parentDir          = path.dirname(originalModule.filename);

Fragment of package config-dir-all:

var moduleParent   = require('module-parent');
var originalModule = moduleParent(module, 0);
var parentDir      = path.dirname(originalModule.filename);

Fragment of package mini-rest-logger:

var parent     = require('module-parent')(module, 1);
var parentName = parent && path.basename(parent.filename, '.js') || 'app';

Credits

Alexander

Links to package pages:

github.com   npmjs.com   travis-ci.org   coveralls.io   inch-ci.org

License

MIT