npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

scoped-require

v5.1.1

Published

Require that is scoped to directories

Downloads

19

Readme

NPM version Build Status Dependency Status

What is scoped-require?

scoped-require enables you to designate a directory as a "firewalled" directory - requires from this base directory will be firewalled into that directory and will not be allowed to escape. This means that require-ing a module external to that directory will fail.

Why would anyone use it? For user-code, that you want to run under your node program, but don't want them to use your modules and your code.

The module also enables you to re-import everything under that folder, to enable a use-case where the user changes something in the module and wants to reload it, without restarting your application. This can be done automatically, on every require, so that you can require the user code, and the user can edit it while knowing that her change will automatically be reloaded next time you require.

Install

$ npm install --save scoped-require

Usage

var scopedRequire = require('scoped-require');

var baseModule = scopedRequire(['dir-with-module']);

var aModule = baseModule.require('a-module');

// use module...

baseModule.clearCache();

// reload module
aModule = baseModule.require('a-module');

Note thate creating the "scoped require" needs to be done after any other hooks to require, e.g. Traceur, babel, and others. This is because other hooks may not execute the original hook, but will rather override them.

Reference API

var scopedRequire = require('scoped-require');

The module exposes a factory returning a base module -

scopedRequire(scopedDirs, /*optional*/options):

The parameters are:

  • scopedDirs: an array of directories (full or relative paths. If relative, they are relative to cwd). These directories are the search path - any scoped require will search these directories, in the order they were given.
  • options: an object with the following (optional) fields.
    • autoDeleteCache: every time require (see below) is called, it will also delete the cache, so that the next time require is called, the module will reload. Default: false.

Returns an object with the following method:

  • require: use this require to require any module which is in one of the scopedDirs
  • loadCodeAsModule(content, filename): use this as an alternative to require, to load code that is dynamic.
  • scopedDirs: same array passed as an argument. If the dirs were relative, then this array will contain the absolute paths. the filename is to make the errrors make sense.
  • clearCache(directoriesToClear): a method, that if called, will clear the module cache of all the modules already loaded from the scopedDirs. require-ing them again will reload them. Accepts an optional directoriesToClear array of strings argument. If given, clearCache will only clear modules inside the given directories from the cache.

License

MIT © Wix