anviljs/anvil.js — pull request #48 by arobson (2012-12-21 17:32:15+00:00)
Title: 0.9.0 - RC3.1

# RC3.1

Bug fix: anvil.fs.copy when used to copy entire directories had a nasty bug that nested files under folders named after themselves.

# RC3

## New Features

### Pre and Post Build Tasks
You can now specify a list of tasks for anvil to run before and after the build starts in the build file:

```javascript
{
"preBuild": {
"taskName": [ options ] // right now this will always be empty
},
"postBuild": {
"taskName": [ options ] // right now this will always be empty
}
}
```

### Minimatch wrapper
Since so many extensions required minimatch, it made better sense to include a new call in anvil.fs. In the future, features that are using regex filters for file names will use minimatch globs instead.

```javascript
anvil.fs.match( [ file path list ], "pattern", { options } ); // returns a list of matching files
```

### Load extensions asynchronously
Extensions are now loaded in 'parallel' asynchronously using anvil's scheduler.

### Testem Integration / Support
Testem integration required some new hooks (specifically the ability to stop console.logging) in order to support anvil.testem.

## Fixes

### Extension load diagnostics
Anvil now prints a debug statement reporting how long loading all extensions took to load. It also prints warning statements if an extension takes more than 10ms to load. This is used to diagnose slow start-ups due to extensions that are doing too much work during load.

### Scaffolds should not create empty files
If the done callback is given undefined, scaffolding should NOT create an empty file.

### Silence EBADF, close errors
Anvil seems to randomly get "EBADF, close" errors which based on reading appear to be related to odd npm install/versioning issues which don't actually affect the build output. Added a handler to prevent them from dumping to console since they're inconsistent, unpredictable and don't appear to have any affect.

### fsmock.warning
Call to incorrect member name caused tests to blow up when warnings were issued