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

requiring

v0.0.5

Published

Requiring modules sync or async, existent or non.

Downloads

62

Readme

requiring Build Status

Main use case is to avoid errors when requiring files from current working directory that may not exist. e.g. You want to build a module that reads a config file from the user's project root (not node_modules/my-module/ directory).

This only works on file & folder modules -not core modules or modules installed in node_modules directory

npm install requiring

npm test

####require a module async

var requiring = require('requiring');

requiring.async('./cool-tool', function(err, mod) {
  if (err !== null) {
    return console.log(err);
  }
  mod.doStuff();
});

// specify a different base directory to look for a module (default is current working directory)
requiring.async('./another-tool', {
  directory: __dirname // `__dirname` returns directory of current executing script.
}, function(err, mod) {
  if (err !== null) {
    return console.log(err);
  }
  mod.doStuff();
});

####require a module sync

var coolTool = requiring.sync('./cool-tool'); // undefined if there is no 'cool-tool'

// pass a default value to return if no module is found
var configFile = requiring.sync('./config-file', {}); //returns {} if there is no 'config-file'

// specify a different base directory to look for a module (default is current working directory)
var anotherTool = requiring.sync('./another-tool', {
  directory: __dirname // path is resolved via `path.resolve()`
});

####other info

This utility attempts to resolve using a full path so requiring('./cool-tool'); turns into something like this requiring('/Users/johndoe/projects/my-project/cool-tool');

To specify a different base directory use the options hash which is passed in as 2nd parameter in both sync and async (see examples) (TO BE CHANGED IN 0.1.0).

It will validate the path before requiring the module. If no file extension is given, it validates the path in this order: ./cool-tool, ./cool-tool.js, ./cool-tool.json, ./cool-took.node

for the case of ./cool-tool This utility will leverage node's module loading pattern and look for ./cool-tool/index.js or the main file defined in ./cool-tool/package.json

requiring a module async is really just validating the path async, then requiring the module sync.

All paths passed to requiring(path) are looked for relative to the current working directory

supports iojs and is backwards compatible with at least node v0.10.0