Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/broccolijs/broccoli-debug
Debugging tools for Broccoli
https://github.com/broccolijs/broccoli-debug
Last synced: 6 days ago
JSON representation
Debugging tools for Broccoli
- Host: GitHub
- URL: https://github.com/broccolijs/broccoli-debug
- Owner: broccolijs
- License: mit
- Created: 2014-04-22T13:22:45.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-01-12T06:49:21.000Z (almost 2 years ago)
- Last Synced: 2024-04-14T12:12:15.168Z (7 months ago)
- Language: JavaScript
- Homepage:
- Size: 441 KB
- Stars: 9
- Watchers: 7
- Forks: 4
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ember - broccoli-debug - Utility for build pipeline authors to allow trivial debugging of the Broccoli pipelines they author. (Packages / Broccoli)
README
# broccoli-debug [![Build Status](https://travis-ci.org/broccolijs/broccoli-debug.svg?branch=master)](https://travis-ci.org/broccolijs/broccoli-debug) [![Build status](https://ci.appveyor.com/api/projects/status/u6tkot7ru19wntxr/branch/master?svg=true)](https://ci.appveyor.com/project/embercli/broccoli-debug/branch/master)
Utility for build pipeline authors to allow trivial debugging of the Broccoli
pipelines they author.Heavily inspired by [@stefanpenner](https://github.com/stefanpenner)'s
[broccoli-stew's `debug`](https://github.com/stefanpenner/broccoli-stew/blob/v1.4.2/lib/debug.js)'s helper,
but improved in a few ways:* Supports leaving debug trees in the build with minimal cost when not being used.
* Supports binary files (e.g. does not write `.png`'s as `utf8` text).
* Adds [debug](https://github.com/visionmedia/debug) style debug matching.## Usage
### Pipeline Authors
To allow consumers to debug the internals of various stages in your build pipeline,
you create a new instance of `BroccoliDebug` and return it instead.Something like this:
```js
var BroccoliDebug = require('broccoli-debug');let tree = new BroccoliDebug(input, `ember-engines:${this.name}:addon-input`);
```Obviously, this would get quite verbose to do many times, so we have created a shortcut
to easily create a number of debug trees with a shared prefix:```js
let debugTree = BroccoliDebug.buildDebugCallback(`ember-engines:${this.name}`);let tree1 = debugTree(input1, 'addon-input');
// tree1.debugLabel => 'ember-engines::addon-input'let tree2 = debugTree(input2, 'addon-output');
// tree2.debugLabel => 'ember-engines::addon-output
```### Consumers
Folks wanting to inspect the state of the build pipeline at that stage, would do the following:
```js
BROCCOLI_DEBUG=ember-engines:* ember b
```Now you can take a look at the state of that input tree by:
```js
ls DEBUG/ember-engines/*
```### API
```ts
interface BroccoliDebugOptions {
/**
The label to use for the debug folder. By default, will be placed in `DEBUG/*`.
*/
label: string/**
The base directory to place the input node contents when debugging is enabled.Chooses the default in this order:
* `process.env.BROCCOLI_DEBUG_PATH`
* `path.join(process.cwd(), 'DEBUG')`
*/
baseDir: string/**
Should the tree be "always on" for debugging? This is akin to `debugger`, its very
useful while actively working on a build pipeline, but is likely something you would
remove before publishing.
*/
force?: boolean
}class BroccoliDebug {
/**
Builds a callback function for easily generating `BroccoliDebug` instances
with a shared prefix.
*/
static buildDebugCallback(prefix: string): (node: any, labelOrOptions: string | BroccoliDebugOptions) => BroccoliNode
constructor(node: BroccoliNode, labelOrOptions: string | BroccoliDebugOptions);
debugLabel: string;
}
```## Development
### Installation
* `git clone [email protected]:broccolijs/broccoli-debug.git`
* `cd broccoli-debug`
* `yarn`### Testing
* `yarn test`