https://github.com/bjornstar/builder.js
Component builder implemented with node.js
https://github.com/bjornstar/builder.js
Last synced: 3 months ago
JSON representation
Component builder implemented with node.js
- Host: GitHub
- URL: https://github.com/bjornstar/builder.js
- Owner: bjornstar
- Fork: true (componentjs/builder.js)
- Created: 2013-12-12T12:21:14.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2013-12-12T12:26:25.000Z (over 11 years ago)
- Last Synced: 2024-10-02T08:34:07.028Z (7 months ago)
- Language: JavaScript
- Size: 320 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- Changelog: History.md
Awesome Lists containing this project
README
# builder.js
Component build tool. This is the library that `component(1)` utilizes
to perform component builds.## Installation
$ npm install component-builder
## API
### new Builder(dir)
Creates a new `Builder` for the given component's `dir`:
```js
var Builder = require('component-builder');
var builder = new Builder('components/visionmedia-page');
```### Builder#config
The component's component.json contents as an object.
### Builder#addSourceURLs()
Add "sourceURL" support, wrapping the module functions
in `Function()` calls so that browsers may assign a
name to the scripts to aid in debugging.### Builder#addLookup(path)
Append the given dependency lookup `path`. This lookup `path` is
"global", thus it influences all dependency lookups.### Builder#development()
Include development dependencies.
### Builder#addFile(type, filename, val)
Add a fabricated file of the given `type`, `filename`,
and contents `val`. For example if you were translating
a Stylus file to .css, or a Jade template to .js you may
do something like:```js
builder.addFile('scripts', 'view.js', 'compiled view js');
```### Builder#ignore(name, [type])
Ignore building `name`'s `type`, where `type` is "scripts" or "styles". When
no `type` is given both are ignored, this includes dependencies of `name` as well.```js
builder.ignore('visionmedia-page')
```### Builder#build(fn)
Perform the build and pass an object to `fn(err, obj)` containing
the `.css` and `.js` properties.### Builder#hook(name, fn)
A build "hook" is like an event that lets you manipulate the build in process. For
example you may use a hook to translate coffee script files to javascript automatically,
or compile a template to javascript so that it may be loaded with `require()`, or use
CSS pre-processors such as [rework](https://github.com/visionmedia/rework).
Available hooks are:
- `before scripts`
- `before styles`### Builder#use(fn)
Give the builder a plugin to use. The `fn` args are `fn(builder [, done])`. If The plugin has async logic it should invoke the `done` callback as needed. Sync plugins should ignore this argument.
## Examples
### Basic build
The follow demonstrates the most basic build you can possible do using
this component builder implementation. A root component directory is
passed to `new Builder`, followed by a `.build()` call which then responds
with a `res` object containing the followign properties:- `.require` the require implementation script
- `.js` compiled javascript
- `.css` compiled css```js
var builder = new Builder('lib/boot');builder.build(function(err, res){
if (err) throw err;
console.log(res.require + res.js);
console.log(res.css);
});
```### Lookup paths
In the previous example all the application's private components live in `./lib`,
thus if you want to specify dependencies without a leading `"lib/"` a lookup path
should be created with `.addLookup()`:```js
var builder = new Builder('lib/boot');builder.addLookup('lib');
...
```## License
MIT