Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

async-resolve

Meettya24MIT0.3.5

An asynchronous and configurable implementation of require.resolve(), like node-resolve or enhanced-resolve.

resolve, require, node, module, filepath, search

readme

Build Status Dependency Status

async-resolve

This module a fastest async and configurable requre.resolve() implementation.

Installation

$ npm install async-resolve

Usage

Resolve absolute path for given [file|directory|module] in given basedir in asynchronous manner.

var Resolver = require('async-resolve');
var resolver_obj = new Resolver();
resolver_obj.resolve('module', __dirname, function(err, filename) {
  return console.log(filename);
});

Methods

var Resolver = require('async-resolve');

new Resolver(opts)

The resolver object may be configured on creation time:

options = {
  // default: ['.js', '.json', '.node'] - specify allowed filetypes, note that the
  // order matters. in this example index.js is prioritized over index.coffee
  extensions: ['.js', '.coffee', '.eco'],
  // default : false - make searching verbose for debug and tests
  log: true
  // default : 'node_modules' - its 'node_modules' directory names, may be changed
  modules : 'other_modules'
};
resolver_obj = new Resolver(options);

resolve(pkg, basedir, cb)

Resolve pkg in basedir on node.js-based algorithm

resolver_obj.resolve('module', __dirname, function(err, filename) {
  return console.log(filename);
});

addExtensions(exts)

also resolver object may be configured after creation:

resolver_obj.addExtensions('.jade');

getState()

All options may be inspected (for testing and debug):

resolver_obj.getState();
/*
{
  log: true,
  modules : 'other_modules',
  extensions: [ '.js', '.coffee', '.eco', '.jade' ],
  dir_load_steps: [
   'package.json',
   'index.js',
   'index.coffee',
   'index.eco',
   'index.jade' 
   ] 
}
*/

isCoreModule()

Return true if filename is node.js core module or false otherwise.

resolver_obj.isCoreModule('util'); // -> true

This method use internal module names table for fast lookup, not IO.

Similar modules

Test

$ cake test

Benchmark

In short async-resolve 2.4 times as fast as enhanced-resolve.

My benchmark results.

Build you own in 2 steps:

  1. do $ npm install at root module folder
  2. run $ coffee ./bench/async-resolve_vs_other.coffee from root module folder

License

Copyright (c) 2013 Dmitrii Karpich

MIT (https://raw.github.com/Meettya/async-resolve/master/LICENSE)

changelog

0.3.5 / 2016-02-19 07:00 PM

  • Fix bug with 'module/foo'-style require (file in module without extension)
  • Replace monolith 'lodash' to modularized used only separate parts
  • Update all modules
  • Add node v5.6 & v4.3 to Travis test

0.3.3 / 2015-07-06 07:00 PM

  • Update core modules and move list to separate file
  • Update all modules
  • Rebuild with CoffeeScript 1.9.3
  • Add 0.12 to Travis test, remove 0.8

0.3.1 / 2014-04-02 07:00 PM

  • Update all modules
  • Rebuild with CoffeeScript 1.7.1

0.2.5 / 2013-03-25 09:10 PM

  • Re-build with new dependencies versions
  • Add 0.10 to Travis test
  • Delete obsolete index.js

0.2.5 / 2013-03-25 09:10 PM

  • Add 'bubling up search logic' test, as node do it.

0.2.3 / 2013-03-19 05:10 PM

  • Add Gemnasium bage
  • Fix dependencies

0.2.1 / 2013-03-17 09:50 PM

  • Fix package.json
  • Re-build lib with latest Coffee compiler

0.1.9 / 2013-03-01 03:00 PM

  • Add isCoreModule() method as fast lookup

0.1.7 / 2013-02-14 05:00 AM

  • Add Benchmarks
  • Update Readme

0.1.5 / 2013-02-14 03:30 AM

  • Add cache with 'async-cache', now we are faster than 'enhanced-resolve' by ~60%

0.1.3 / 2013-02-13 01:00 AM

  • Remove async dependencies
  • Add bench folder

0.1.1 / 2013-02-01 02:30 AM

  • Fix node engine to >=0.8.0
  • Re-place some function for readability

0.0.9 / 2013-01-30 04:50 PM

  • Change EventsEmmiter to plain cb, to fix bug if async-resolver was started multiply times in async wrapper. In short - its 'thread'-safe now.

0.0.7 / 2013-01-29 07:00 PM

  • Add 'modules' to options, or Travis cant pass test in tests 'node_modules' dirs

0.0.6 / 2013-01-29 07:00 PM

  • Build beta version