1.0.1 • Published 4 years ago

t2-project v1.0.1

Weekly downloads
10
License
MIT
Repository
github
Last release
4 years ago

t2-project

Travis-CI Build Status Appveyor Build status

Given a specified entry point file, determine and resolve the dependency graph.

Dependencies

The resulting output is an array of data objects containing the following properties:

NameDescription
idUnique file identity
fileAbsolute path to file
sourceThe contents of the file

For example, the following program:

var Project = require('t2-project');

var project = new Project({
  entry: 'eg/project-conditional/index.js',
});

project.exclude(['b.js']);
project.exclude(['c.*']);

project.collect((error, entries) => console.log(entries));

Where eg/project-conditional/ contains:

.
├── a.js
├── b.js
├── c.js
└── index.js

0 directories, 4 files

Would have the following result (just assume ${ABSOLUTE_PATH} is the absolute path to project-conditional):

[{
  id: '${ABSOLUTE_PATH}/eg/project-conditional/a.js',
  source: 'module.exports = function() {\n  return \'a\';\n};\n',
  deps: {},
  file: '${ABSOLUTE_PATH}/eg/project-conditional/a.js'
}, {
  file: '${ABSOLUTE_PATH}/eg/project-conditional/index.js',
  entry: true,
  id: '${ABSOLUTE_PATH}/eg/project-conditional/index.js',
  source: 'var conditional = true ? require(\'./a\') : require(\'./b\');\n\nrequire(\'./c\');\n\n\nconsole.log(conditional());\n',
  deps: {
    './b': '${ABSOLUTE_PATH}/eg/project-conditional/b.js',
    './c': '${ABSOLUTE_PATH}/eg/project-conditional/c.js',
    './a': '${ABSOLUTE_PATH}/eg/project-conditional/a.js'
  }
}]

Usage

Install via npm:

npm install t2-project
var Project = require('t2-project');

var a = new Project({
  entry: './eg/project-simple/index.js',
});

a.collect((error, entries) => {
  console.log('DONE: a', entries.length);
  entries.forEach(entry => console.log(entry.file));
});

var b = new Project({
  entry: './eg/project-conditional/index.js',
});

b.exclude(['b.js', 'c.*']);

/*
Or...

b.exclude('b.js');
b.exclude('c.*');

Or... 

b.exclude({
  files: ['b.js', 'c.*'],
  basedir: (optionally specify a basedir)
});
*/

var p = b.collect((error, entries) => {
  console.log('CALLBACK: b', entries.length);
  entries.forEach(entry => console.log(entry));
});

p.then(entries => {
  console.log('RESOLVED: b', entries.length);
  entries.forEach(entry => console.log(entry.file));
});

API

  • exclude(file): Call this method with a string file name to exclude a single file.
  • exclude([ ...files]): Call this method with an array of string file names to exclude many files.
  • exclude({ files: [ ...files], basedir: '...' }): Call this method with an object containing a files property, whose value is an array of string file names to exclude many files; and optionally a basedir property to specify the base directory to exclude from.
  • filter: meh, this is unfinished and might not live to see another day.

License

Copyright (c) 2015 Rick Waldron waldron.rick@gmail.com Licensed under the MIT license.

1.0.1

4 years ago

0.4.0

8 years ago

0.3.0

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago