- #478 Manually exit process (@asakusuma)
- Asa Kusuma (@asakusuma)
- #476 Exit broccoli-cli with correct status code (@chiragpat)
- fix TypeScript types
- add missing semi colon
- Revert retry feature (caused downstream failures for ember-cli users) (#459)
- [Feature] stop current build, when rebuild is triggered (#408)
- [BUGFIX] Ensure buildAnnotation survives a round trip from watcher -> builder -> the fulfillment value of watcher.currentBuild
- Semver compatible dependency upgrades
- [BUGFIX] restore static APIs on Broccoli.Builder that got dropped during the typescript conversion
- Code-base utilizes async/await where appropriate
- [BUGFIX] no longer cause spurious unhandled promise rejections warnings
- convert lib to typescript
- migrate to github actions
- Add input node change tracking (#419)
- Initial typescript conversion (#422)
- Fixup cli usage information (#421)
- Use a more appropriate data structure for nodeWrappers (#418)
- Support serving over HTTPS (#417)
-
Enable colored syntax highlighting in error messages from babel (#415)
-
[BUGFIX] Add
annotation
object for broccoli-sane-watcher compatibility
- [Feature] use console-ui
- [BUGFIX] ensure parity broccoli-sane-watcher the filePath property in the change event and the additional console logging from a sane event.
- Add rebuild memoization support behind feature flag (#396)
- BROCCOLI_ENABLED_MEMOIZE=true to turn on
- Add more watcher events (#398)
- Drop support for unsupported Node versions (#400)
- Drop Node 6 support.
- Bump broccoli-node-info to v2.0.0
- Pass watchedNodes to Watcher/WatcherAdapter (#403)
- Require watchedNodes arguments to Watcher/WatcherAdapter (#405)
- Add Brocfile.ts TypeScript support (#390)
- Cleanup syntax (#383)
- Ensure
builder.cleanup()
waits on pending work (#393)
- Add support for ES Modules syntax (#385)
- Add support for Export function (#386)
- Add support for Environment flag (#387)
- Fix various issues resulting in out of memory errors during instrumentation node traversal.
- Update
sane
to ensure no native dependencies are needed. - Cleanup
Builder.prototype.build
to properly returnPromise<void>
(removing theoutputNodeWrapper
). - Add documentation for programmatic
Builder
usage. - Update internal dependencies to latest versions.
- Remove usages of
RSVP
(in favor of using native promises). - Add support for Node 10.
- Drop support for Node versions older than 6.
- Drop Node 4 support.
- Drop Node 0.12 support.
- Add visualization support via heimdalljs.
- Ensure that mid-build cancelation avoids extra work.
- Add
--overwrite
option to the command line interface which clobbers any existing directory contents with the contents of the new build. - Add
--cwd
option to the command line interface which allows customizing the builders working directory (and where theBrocfile.js
is looked up from). - Add
--output-path
option to the command line interface. - Add
--watch
option tobuild
sub-command. - Add
--no-watch
option toserve
sub-command. - Add
--watcher
option to allow configuration of the watcher to be used. Currently supported values are polling, watchman, node, events. - General code cleanup and modernization.
- Roll back broccoli-slow-trees dependency
- Update dependencies
- Update findup-sync dependency
- Fix option parsing for
--port
- Add
needsCache
topluginInterface
. Allows opting out of cache directory creation.
- Release without change
- Builder throws an error when a watched input directory is missing
- Rework watcher
- Pull broccoli-sane-watcher functionality into core
- Update findup-sync dependency
- Remove wrong
postinstall
hook. This removes a spurious dependency onmultidep
.
- Add
build
event to watcher
- Remove redundant
beginBuild
/endBuild
(formerlystart
/end
) events on builder
- Improve test suite
- Minor cosmetic changes
-
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 callwatcher.quit()
, or rejected if watching one of the source directories fails.server
will callwatcher.watch()
for you.- In contrast,
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 atmpdir
option, which defaults toos.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 atbuilder.outputPath
and doesn't change between buildsstart
,end
,nodeStart
,nodeEnd
events renamed tobeginBuild
,endBuild
,beginNode
,endNode
- Nodes passed to
nodeBegin
/nodeEnd
arguments are "node wrapper" objects (also accessible atbuilder.nodeWrappers
); timings now reside atnodeWrapper.buildState.selfTime/totalTime
and are in milliseconds, not nanoseconds build()
no longer takes awillReadStringTree
callback argument; instead, source directories are recorded atbuilder.watchedPaths
-
Watcher API changes:
- Add
watcher.quit()
method, which returns a promise until a running build has finished (if any) - Rename
watcher.current
towatcher.currentBuild
, and removewatcher.then
- Use
RSVP.EventTarget
instead ofEventEmitter
for events
- Add
-
Build error objects have been changed to
Builder.BuildError
objects, which contain additional information aterr.broccoliPayload
- Add builder hooks
- Export watcher and middleware as
Watcher
andgetMiddleware
- Export watcher and middleware
- On BROCCOLI_WARN_READ_API=y, print deprecation warning for .rebuild as well
- Return server objects for easier extensibility
- Do not silently swallow errors in change/error event handlers
- Add missing dependency
- 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
- Remove built-in LiveReload server; tools like Ember CLI inject LiveReload scripts, which is generally preferable because it doesn't need a separate port
- 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
- Correctly display multi-line error messages
- Add ability to inject live-reload script into error messages
- Hide API warnings behind $BROCCOLI_WARN_READ_API env flag
- Add support for new error API
- Fail fast if
build
output directory already exists
- Print deprecation warnings for plugins only providing old
.read
API
- Add support for new
.rebuild
API, in addition to existing (now deprecated).read
API
- Throw helpful error when we encounter as-yet unsupported
.rebuild
-based plugins
- Add missing
var
- More detailed error message when a tree object is invalid
- Watcher no longer rebuilds forever when a very early build error occurs
- Fix SIGINT/SIGTERM (Ctrl+C) handling to avoid leaking tmp files
- Extract slow trees printout into broccoli-slow-trees package
- Allow the tree
cleanup
method to be asynchronous (by returning a promise).
- Update dependencies to fix
various low-severity vulnerabilities
in
broccoli serve
- Dereference symlinks in
broccoli build
output by copying the files or directories they point to into place - Sort entries when browsing directories in middleware
- Exclude
logo
andtest
directories from npm distribution
- Fix directory handling in server on Windows
- Show directory listing with
broccoli serve
when there is noindex.html
- Add
willReadStringTree
callback argument toBuilder::build
and retireBuilder::treesRead
- Update
Watcher
andBuilder
interaction to prevent double builds. - Avoid unhandled rejected promise
- Fix trailing slash handling in server on Windows
- Change
Watcher
'schange
event to provide the full build results (instead of just the directory). - Add slow tree logging to
broccoli serve
output. - Add logo
- Move process.exit listener out of builder into server
- Change
Builder::build()
method to return a{ directory, graph }
hash instead of only the directory, wheregraph
contains the output directories and timings for each tree - Avoid keeping file streams open in server, to fix EBUSY issues on Windows
Brocfile.js
now exports a tree, not a function (sample diff)
- Extract bowerTrees into broccoli-bower plugin (sample diff)
- Update dependencies
- Do not use hardlinks in bower implementation
- Remove
broccoli.MergedTree
; it has been extracted into broccoli-merge-trees (sample diff)
- Disallow returning arrays from Brocfile.js, in favor of broccoli-merge-trees plugin (sample diff)
- Remove
broccoli.makeTree('foo')
in favor of string literals (just'foo'
) (sample diff) - Remove
broccoli.Reader
- Add
--version
command line option
- Correct mis-publish on npm
- Preserve value/error on Watcher::current promise
- This version has been unpublished due to a mis-publish
- Extract
broccoli.helpers
into broccoli-kitchen-sink-helpers package
- 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
- Bind to
localhost
instead of0.0.0.0
(whole wide world) by default
- Overwrite mis-pushed release
- Refactor watcher logic to use promises
- Turn the hapi server into a connect middleware
- Use smaller
bower-config
package instead ofbower
to parsebower.json
files
- Add
--port
,--host
, and--live-reload-port
options toserve
command
- Update hapi dependency to avoid file handle leaks, causing EMFILE errors
- In addition to
Brocfile.js
, accept lowercasebrocfile.js
- Fix error reporting for string exceptions
- Rename
Broccolifile.js
toBrocfile.js
- Change default port from 8000 to 4200
- Make
tree.cleanup
non-optional - Rename
broccoli.read
tobroccoli.makeTree
- Bump to indicate beta status
- Remove unused
helpers.walkSync
(now in node-walk-sync)
- Extract
Transformer
intobroccoli-transform
package (now "Transform
") - Extract
Filter
intobroccoli-filter
package
- In plugin (tree) API, replace
.afterBuild
with.cleanup
- Move temporary directories out of the way
- Extract
factory.env
into broccoli-env package - Eliminate
factory
argument to Broccolifile
- 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
andCompiler
base class; use aTransformer
- Remove
Tree::addTransform
,Tree::addTrees
, andTree::addBower
Builder::build
now has a promise interface as well
- Expect a
Tree
, not aBuilder
, returned from Broccolifile.js
- Fold
Reader
intoTree
- Replace
PreprocessorPipeline
andPreprocessor
withFilter
; eachFilter
is added directly on the tree or builder withaddTransform
- Bind to
0.0.0.0
instead oflocalhost
- Add
factory.env
based on$BROCCOLI_ENV
- Do not fail on invalid Cookie header
- Use promises instead of callbacks in all external APIs
- Here be dragons