google-closure-library dependency resolver for node.js
JavaScript
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.gitignore
.gitmodules
.npmignore
README.md
index.js
package.json

README.md

#closure-deps-resolver

What's this

The dependency resolver for closure library style javascript modules.

Install

npm install closure-deps-resolver

Usage

var cdr = require('closure-deps-resolver');
var Resolver = cdr.Resolver;
var resolver = new Resolver({
  root: './js/src', //{(string|Array)} The root paths of modules.
  execludes: /-test\.js/, //{(RegExp|undefined)} The regular expression of the exclusion.
  depsJsPath: './deps.js', //{(string|undefined)} closure-compiler deps.js file path.
  writeDepsJs: true, //{(boolean|undefined)} Whether generate deps.js or not.
  pattern: cdr.closurePattern, //{(Pattern|undefined)} The module parse pattern. default => closurePattern
  depsCachePath: 'deps-cache', //{(string|undefined)} The dependency cache file path. default => module_deps_cache_{version}
  depsJsGenerator: function(depsPath) {}, //{(function(new:*, string):?|undefined)} deps.js file generator. This must be a constructor function.
  depsFileResolver: function(filename) {return /-main\.js/.test(filename);} //{(function(string):boolean|undefined)} The function which decide app file.
});

resolver.resolve(true).then(function(modules) {
  for (var prop in modules) {
    doSomething(modules[prop]);
  }
})

Api

cdr.Resolver.prototype.resolve(appFileOnly: boolean): Promise.<Module>
Resolve specified pattern module dependecies by async. If argument appFileOnly passed, resolve only app file.
If appFileOnly is not passed, return all modules.

cdr.Resolver.prototype.resolveSync(appFileOnly: boolean): Array.<Module>
Synced version of cdr.Resolver.prototype.resolve.

cdr.Resolver.prototype.resolveByName(filename: string): Promise.<Module>
Resolved specified filename.

cdr.Resolver.prototype.resolveByNameSync(filename: string): Array.<Module>
Synced version of cdr.Resolver.prototype.resolveByName.

cdr.closurePattern
The esquery pattern for closure library.

cdr.Pattern
The parser pattern builder.

Classes

Module

Module.prototype.getFilename(): string
Return the module filename.

Module.prototype.getDirectRequires(): Array.<string>
Return the required module which is specified in the file(excludes indirect dependencies) filepath list.

Module.prototype.getRequiredModules(): Array.<string>
Return the required module which is specified in the file(excludes indirect dependencies) module name list.

Module.prototype.getProvidedModules(): Array.<string>
Return the provided module.

Module.prototype.getDependentModules(): Array.<Module>
Return the all required module which is wrapped Module class.

Module.prototype.getNewestMtime(): Date
Return newest mtime in all dependent modules.

Pattern

*Pattern.prototype.addPattern(query: string, callback: function(filename: string, matches: Array, requires: Array, provides: Array), opt_context: ): void
Add parser pattern of esquery, if pattern is matched with syntax tree, callback function is called.
callback function parameters
filename Current parsing file name.
matches The array of the matched syntax tree of esprima.
requires The array of the required module.
provided The array of the provided module.
for detail. see lib/patterns/closure-pattern.js.