postinstall
hook. This removes a spurious dependency on
multidep
.build
event to watcherbeginBuild
/endBuild
(formerly start
/end
) events on builderAdd watcher.watch()
method. Watcher
no longer automatically starts
watching; instead, you must call this method explicitly. It returns a promise
that is fulfilled if you later call watcher.quit()
, or rejected if watching
one of the source directories fails.
server
will call watcher.watch()
for you.getMiddleware
expects a watcher that is already watching.Drop support for plugins that implement only the old .read/.rebuild
API
Fail build when a source node is a file rather than a directory
Fail build when a source node doesn't exist
Builder API changes:
new Builder
has a tmpdir
option, which defaults to os.tmpdir()
(typically /tmp
); pass { tmpdir: './tmp' }
to get the old behavior.build()
no longer returns a promise to the output path; instead, the
output path stored at builder.outputPath
and doesn't change between
buildsstart
, end
, nodeStart
, nodeEnd
events renamed to
beginBuild
, endBuild
, beginNode
, endNode
nodeBegin
/nodeEnd
arguments are "node wrapper"
objects (also accessible at builder.nodeWrappers
); timings now
reside at nodeWrapper.buildState.selfTime/totalTime
and are in
milliseconds, not nanosecondsbuild()
no longer takes a willReadStringTree
callback argument;
instead, source directories are recorded at builder.watchedPaths
Watcher API changes:
watcher.quit()
method, which returns a promise until a running
build has finished (if any)watcher.current
to watcher.currentBuild
, and remove
watcher.then
RSVP.EventTarget
instead of EventEmitter
for eventsBuild error objects have been changed to Builder.BuildError
objects, which
contain additional information at err.broccoliPayload
Watcher
and getMiddleware
Builder.getDescription(tree)
helper functionCache-Control
header for directory listings and redirectsliveReloadPath
middleware option in directory listings as wellautoIndex
middleware option to disable directory listingsbuild
output directory already exists.read
API.rebuild
API,
in addition to existing (now deprecated) .read
API.rebuild
-based
pluginsvar
cleanup
method to be asynchronous (by returning a promise).broccoli serve
broccoli build
output by copying the files or
directories they point to into placelogo
and test
directories from npm distributionbroccoli serve
when there is no index.html
willReadStringTree
callback argument to Builder::build
and retire
Builder::treesRead
Watcher
and Builder
interaction to prevent double builds.Watcher
's change
event to provide the full build results (instead of just the directory).broccoli serve
output.Builder::build()
method to return a { directory, graph }
hash
instead of only the directory, where graph
contains the output directories
and timings for each treeBrocfile.js
now exports a tree, not a function (sample diff)broccoli.MergedTree
; it has been extracted into broccoli-merge-trees
(sample diff)broccoli.makeTree('foo')
in favor of string literals (just 'foo'
)
(sample diff)broccoli.Reader
--version
command line optionbroccoli.helpers
into broccoli-kitchen-sink-helpers package.treeDir
property on error objectslocalhost
instead of 0.0.0.0
(whole wide world) by defaultbower-config
package instead of bower
to parse bower.json
files--port
, --host
, and --live-reload-port
options to serve
commandBrocfile.js
, accept lowercase brocfile.js
Broccolifile.js
to Brocfile.js
tree.cleanup
non-optionalbroccoli.read
to broccoli.makeTree
helpers.walkSync
(now in node-walk-sync)Transformer
into broccoli-transform
package (now "Transform
")Filter
into broccoli-filter
package.afterBuild
with .cleanup
factory.env
into broccoli-env packagefactory
argument to Broccolifile.read
-based everything-is-a-tree architectureMergedTree
broccoli.bowerTrees()
, which will hopefully be redesigned and go
away againComponent
base classCompilerCollection
and Compiler
base class; use a Transformer
Tree::addTransform
, Tree::addTrees
, and Tree::addBower
Builder::build
now has a promise interface as wellTree
, not a Builder
, returned from Broccolifile.jsReader
into Tree
PreprocessorPipeline
and Preprocessor
with Filter
; each
Filter
is added directly on the tree or builder with addTransform
0.0.0.0
instead of localhost
factory.env
based on $BROCCOLI_ENV
# master * Update findup-sync dependency # 1.0.0-beta.7 * Remove wrong `postinstall` hook. This removes a spurious dependency on `multidep`. # 1.0.0-beta.6 * Add `build` event to watcher # 1.0.0-beta.5 * Remove redundant `beginBuild`/`endBuild` (formerly `start`/`end`) events on builder # 1.0.0-beta.4 * Improve test suite # 1.0.0-beta.3 * Minor cosmetic changes # 1.0.0-beta.2 * Add `watcher.watch()` method. `Watcher` no longer automatically starts watching; instead, you must call this method explicitly. It returns a promise that is fulfilled if you later call `watcher.quit()`, or rejected if watching one of the source directories fails. - `server` will call `watcher.watch()` for you. - In contrast, `getMiddleware` expects a watcher that is already watching. # 1.0.0-beta.1 * Drop support for plugins that implement only the old `.read/.rebuild` API * Fail build when a source node is a file rather than a directory * Fail build when a source node doesn't exist * Builder API changes: - `new Builder` has a `tmpdir` option, which defaults to `os.tmpdir()` (typically `/tmp`); pass `{ tmpdir: './tmp' }` to get the old behavior - `.build()` no longer returns a promise to the output path; instead, the output path stored at `builder.outputPath` and doesn't change between builds - `start`, `end`, `nodeStart`, `nodeEnd` events renamed to `beginBuild`, `endBuild`, `beginNode`, `endNode` - Nodes passed to `nodeBegin`/`nodeEnd` arguments are "node wrapper" objects (also accessible at `builder.nodeWrappers`); timings now reside at `nodeWrapper.buildState.selfTime/totalTime` and are in milliseconds, not nanoseconds - `build()` no longer takes a `willReadStringTree` callback argument; instead, source directories are recorded at `builder.watchedPaths` * Watcher API changes: - Add `watcher.quit()` method, which returns a promise until a running build has finished (if any) - Rename `watcher.current` to `watcher.currentBuild`, and remove `watcher.then` - Use `RSVP.EventTarget` instead of `EventEmitter` for events * Build error objects have been changed to `Builder.BuildError` objects, which contain additional information at `err.broccoliPayload` # 0.17.0 * use structured logging via heimdalljs # 0.16.10 * add instantion stack to node.toJSON to improve broccoli-viz output # 0.16.9 * Update handlebars dependency # 0.16.8 * Add builder hooks # 0.16.7 * Export watcher and middleware as `Watcher` and `getMiddleware` # 0.16.6 * Export watcher and middleware # 0.16.5 * On BROCCOLI_WARN_READ_API=y, print deprecation warning for .rebuild as well # 0.16.4 * Return server objects for easier extensibility # 0.16.3 * Do not silently swallow errors in change/error event handlers # 0.16.2 * Add missing dependency # 0.16.1 * Add Node interface to Builder, to enable building visualizations * Export `Builder.getDescription(tree)` helper function * Add footer to directory listings, so people know where they come from # 0.16.0 * Remove built-in LiveReload server; tools like Ember CLI inject LiveReload scripts, which is generally preferable because it doesn't need a separate port # 0.15.4 * Send `Cache-Control` header for directory listings and redirects * Honor `liveReloadPath` middleware option in directory listings as well * Add `autoIndex` middleware option to disable directory listings # 0.15.3 * Correctly display multi-line error messages # 0.15.2 * Add ability to inject live-reload script into error messages # 0.15.1 * Hide API warnings behind $BROCCOLI_WARN_READ_API env flag * Add support for new error API * Fail fast if `build` output directory already exists # 0.15.0 * Print deprecation warnings for plugins only providing old `.read` API # 0.14.0 * Add support for new [`.rebuild` API](https://github.com/broccolijs/broccoli/blob/master/docs/new-rebuild-api.md), in addition to existing (now deprecated) `.read` API # 0.13.6 * Throw helpful error when we encounter as-yet unsupported [`.rebuild`-based plugins](https://github.com/broccolijs/broccoli/blob/master/docs/new-rebuild-api.md) # 0.13.5 * Add missing `var` # 0.13.4 * More detailed error message when a tree object is invalid * Watcher no longer rebuilds forever when a very early build error occurs # 0.13.3 * Fix SIGINT/SIGTERM (Ctrl+C) handling to avoid leaking tmp files # 0.13.2 * Extract slow trees printout into broccoli-slow-trees package * Allow the tree `cleanup` method to be asynchronous (by returning a promise). # 0.13.1 * Update dependencies to fix [various low-severity vulnerabilities](https://github.com/broccolijs/broccoli/issues/196) in `broccoli serve` # 0.13.0 * Dereference symlinks in `broccoli build` output by copying the files or directories they point to into place * Sort entries when browsing directories in middleware # 0.12.3 * Exclude `logo` and `test` directories from npm distribution # 0.12.2 * Fix directory handling in server on Windows # 0.12.1 * Show directory listing with `broccoli serve` when there is no `index.html` # 0.12.0 * Add `willReadStringTree` callback argument to `Builder::build` and retire `Builder::treesRead` * Update `Watcher` and `Builder` interaction to prevent double builds. * Avoid unhandled rejected promise * Fix trailing slash handling in server on Windows # 0.11.0 * Change `Watcher`'s `change` event to provide the full build results (instead of just the directory). * Add slow tree logging to `broccoli serve` output. * Add logo # 0.10.0 * Move process.exit listener out of builder into server * Change `Builder::build()` method to return a `{ directory, graph }` hash instead of only the directory, where `graph` contains the output directories and timings for each tree * Avoid keeping file streams open in server, to fix EBUSY issues on Windows # 0.9.0 * `Brocfile.js` now exports a tree, not a function ([sample diff](https://gist.github.com/joliss/15630762fa0f43976418)) # 0.8.0 * Extract bowerTrees into broccoli-bower plugin ([sample diff](https://github.com/joliss/broccoli-sample-app/commit/829e869f795012c08f5643a047b3f46c61dd0168)) # 0.7.2 * Update dependencies # 0.7.1 * Do not use hardlinks in bower implementation # 0.7.0 * Remove `broccoli.MergedTree`; it has been extracted into broccoli-merge-trees ([sample diff](https://github.com/joliss/broccoli-sample-app/commit/b6b30d5dd23ddf86d8b95b1440b2937de1b8bbcd#diff-ec6fb87583b2323d013c3e30c0a5084dL50)) # 0.6.0 * Disallow returning arrays from Brocfile.js, in favor of broccoli-merge-trees plugin ([sample diff](https://github.com/joliss/broccoli-sample-app/commit/b6b30d5dd23ddf86d8b95b1440b2937de1b8bbcd)) # 0.5.0 * Remove `broccoli.makeTree('foo')` in favor of string literals (just `'foo'`) ([sample diff](https://github.com/joliss/broccoli-sample-app/commit/ccd03da8e803a15fdd50e47c0ee71f9bbcfd911e)) * Remove `broccoli.Reader` * Add `--version` command line option # 0.4.3 * Correct mis-publish on npm # 0.4.2 * Preserve value/error on Watcher::current promise * This version has been unpublished due to a mis-publish # 0.4.1 * Extract `broccoli.helpers` into broccoli-kitchen-sink-helpers package # 0.3.1 * Report unhandled errors in the watcher * Add support for `.treeDir` property on error objects * Improve watcher logic to stop double builds when build errors happen # 0.3.0 * Bind to `localhost` instead of `0.0.0.0` (whole wide world) by default # 0.2.6 * Overwrite mis-pushed release # 0.2.5 * Refactor watcher logic to use promises * Turn the hapi server into a connect middleware # 0.2.4 * Use smaller `bower-config` package instead of `bower` to parse `bower.json` files # 0.2.3 * Add `--port`, `--host`, and `--live-reload-port` options to `serve` command # 0.2.2 * Update hapi dependency to avoid file handle leaks, causing EMFILE errors # 0.2.1 * In addition to `Brocfile.js`, accept lowercase `brocfile.js` * Fix error reporting for string exceptions # 0.2.0 * Rename `Broccolifile.js` to `Brocfile.js` * Change default port from 8000 to 4200 # 0.1.1 * Make `tree.cleanup` non-optional * Rename `broccoli.read` to `broccoli.makeTree` # 0.1.0 * Bump to indicate beta status * Remove unused `helpers.walkSync` (now in node-walk-sync) # 0.0.13 * Extract `Transformer` into `broccoli-transform` package (now "`Transform`") * Extract `Filter` into `broccoli-filter` package # 0.0.12 * In plugin (tree) API, replace `.afterBuild` with `.cleanup` * Move temporary directories out of the way # 0.0.11 * Extract `factory.env` into broccoli-env package * Eliminate `factory` argument to Broccolifile # 0.0.10 * Change to a `.read`-based everything-is-a-tree architecture * Various performance improvements * Various plugin API changes * Add `MergedTree` * Broccolifile may now return an array of trees, which will be merged * Expose `broccoli.bowerTrees()`, which will hopefully be redesigned and go away again * Remove `Component` base class * Remove `CompilerCollection` and `Compiler` base class; use a `Transformer` * Remove `Tree::addTransform`, `Tree::addTrees`, and `Tree::addBower` * `Builder::build` now has a promise interface as well # 0.0.9 * Expect a `Tree`, not a `Builder`, returned from Broccolifile.js # 0.0.8 * Fold `Reader` into `Tree` * Replace `PreprocessorPipeline` and `Preprocessor` with `Filter`; each `Filter` is added directly on the tree or builder with `addTransform` # 0.0.7 * Bind to `0.0.0.0` instead of `localhost` * Add `factory.env` based on `$BROCCOLI_ENV` * Do not fail on invalid Cookie header * Use promises instead of callbacks in all external APIs # 0.0.6 * Here be dragons