Resolve google-closure-library dependencies.


The dependency resolver for closure library style javascript modules.

npm install closure-deps-resolver

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} 
  depsJsGeneratorfunction(depsPath) {}, //{(function(new:*, string):?|undefined)} deps.js file generator. This must be a constructor function. 
  depsFileResolverfunction(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) {

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.

The esquery pattern for closure library.

The parser pattern builder.

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.

*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.