{"_id":"ember-cli-broccoli","_rev":"11-8b796c3c07408658925962f760d6cfdd","name":"ember-cli-broccoli","description":"Fast client-side asset builder","dist-tags":{"latest":"0.17.2"},"versions":{"0.13.6":{"name":"ember-cli-broccoli","description":"Fast client-side asset builder","version":"0.13.6","author":{"name":"Jo Liss","email":"joliss42@gmail.com"},"main":"lib/index.js","license":"MIT","keywords":["builder","build","frontend","browser","asset","pipeline"],"repository":{"type":"git","url":"https://github.com/broccolijs/broccoli"},"homepage":"https://github.com/broccolijs/broccoli","dependencies":{"ansi_up":"^1.1.3","broccoli-kitchen-sink-helpers":"^0.2.5","broccoli-slow-trees":"^1.0.0","commander":"^2.5.0","connect":"^3.3.3","copy-dereference":"^1.0.0","findup-sync":"^0.1.3","handlebars":"^2.0.0","jshint":"^2.5.10","mime":"^1.2.11","promise-map-series":"^0.2.1","rsvp":"^3.0.14","quick-temp":"^0.1.2","rimraf":"^2.2.8","tap":"^0.4.13","tiny-lr":"^0.1.4"},"devDependencies":{"jshint":"~2.5.6","tap":"^0.4.8"},"engines":{"node":">= 0.10.0"},"scripts":{"pretest":"jshint lib test","test":"tap --stderr --timeout 2 ./test/*_test.js"},"gitHead":"50ffe888c0ac7872dadce4d1641244d6dbd971bc","bugs":{"url":"https://github.com/broccolijs/broccoli/issues"},"_id":"ember-cli-broccoli@0.13.6","_shasum":"4bf56fee570e90fc0bc806c6a5f7da934e56fcaa","_from":".","_npmVersion":"2.7.0","_nodeVersion":"1.5.1","_npmUser":{"name":"stefanpenner","email":"stefan.penner@gmail.com"},"maintainers":[{"name":"stefanpenner","email":"stefan.penner@gmail.com"}],"dist":{"shasum":"4bf56fee570e90fc0bc806c6a5f7da934e56fcaa","tarball":"https://registry.npmjs.org/ember-cli-broccoli/-/ember-cli-broccoli-0.13.6.tgz","integrity":"sha512-oTtxXPeMj3dMPT5hmfz/esTLKoZ0owCEhJFIdI4omjRAaZHiULzGmgUC1/w8rFiuV4eNr9BdxSDvI0nFF9kuJA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAbeXGhdGpiO4eg6ILVggqOqPVfQKfB4QGoq+AC2aT9QIhAOfojnbc5stM7wfr1TSDVLrWEpjXgne2q0Db0glGSpGo"}]}},"0.16.9":{"name":"ember-cli-broccoli","description":"Fast client-side asset builder","version":"0.16.9","author":{"name":"Jo Liss","email":"joliss42@gmail.com"},"main":"lib/index.js","license":"MIT","keywords":["builder","build","frontend","browser","asset","pipeline"],"repository":{"type":"git","url":"git+https://github.com/broccolijs/broccoli.git"},"homepage":"https://github.com/broccolijs/broccoli","dependencies":{"broccoli-kitchen-sink-helpers":"^0.2.5","broccoli-slow-trees":"^1.0.0","commander":"^2.5.0","connect":"^3.3.3","copy-dereference":"^1.0.0","findup-sync":"^0.2.1","handlebars":"^4.0.4","mime":"^1.2.11","promise-map-series":"^0.2.1","quick-temp":"^0.1.2","rimraf":"^2.2.8","rsvp":"^3.0.17"},"devDependencies":{"jshint":"~2.6.3","tap":"^0.4.8"},"engines":{"node":">= 0.10.0"},"scripts":{"pretest":"jshint lib test","test":"tap --stderr --timeout 10 ./test/*_test.js"},"gitHead":"b4d42a6913a187d50af04868f352e2b3d8585534","bugs":{"url":"https://github.com/broccolijs/broccoli/issues"},"_id":"ember-cli-broccoli@0.16.9","_shasum":"4e9128f59ffaee99705c01e9a44a691a0ae199db","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.4.1","_npmUser":{"name":"stefanpenner","email":"stefan.penner@gmail.com"},"dist":{"shasum":"4e9128f59ffaee99705c01e9a44a691a0ae199db","tarball":"https://registry.npmjs.org/ember-cli-broccoli/-/ember-cli-broccoli-0.16.9.tgz","integrity":"sha512-swFf4ZqEk0Ea211l/VzDGtVH1Fu/MTEeSwJ+JVeQEIwiSEWw7INBZZ5eMVq40TJaixGzHFnUB+3QjAbQjljtjw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXS9VdVa4AVJSM3PYmNLZkHotzsVWYjiIMoNuwYTiQ4AIgXv5Q8Q4v8dKS0ZloQafLD6WE59oH2sm2GjPgwq/rOf4="}]},"maintainers":[{"name":"stefanpenner","email":"stefan.penner@gmail.com"},{"name":"rwjblue","email":"me@rwjblue.com"}],"_npmOperationalInternal":{"host":"packages-6-west.internal.npmjs.com","tmp":"tmp/ember-cli-broccoli-0.16.9.tgz_1456620544513_0.9615097811911255"}},"0.16.10":{"name":"ember-cli-broccoli","description":"Fast client-side asset builder","version":"0.16.10","author":{"name":"Jo Liss","email":"joliss42@gmail.com"},"main":"lib/index.js","license":"MIT","keywords":["builder","build","frontend","browser","asset","pipeline"],"repository":{"type":"git","url":"git+https://github.com/broccolijs/broccoli.git"},"homepage":"https://github.com/broccolijs/broccoli","dependencies":{"broccoli-kitchen-sink-helpers":"^0.2.5","broccoli-slow-trees":"^1.0.0","commander":"^2.5.0","connect":"^3.3.3","copy-dereference":"^1.0.0","findup-sync":"^0.2.1","handlebars":"^4.0.4","mime":"^1.2.11","promise-map-series":"^0.2.1","quick-temp":"^0.1.2","rimraf":"^2.2.8","rsvp":"^3.0.17"},"devDependencies":{"jshint":"~2.6.3","tap":"^0.4.8"},"engines":{"node":">= 0.10.0"},"scripts":{"pretest":"jshint lib test","test":"tap --stderr --timeout 10 ./test/*_test.js"},"gitHead":"eb1c827db542eac9c226ddcf70061776c539eea8","bugs":{"url":"https://github.com/broccolijs/broccoli/issues"},"_id":"ember-cli-broccoli@0.16.10","_shasum":"e1f6fb204fc04bba836edaf3fdd07f4bec868d1b","_from":".","_npmVersion":"3.9.5","_nodeVersion":"6.2.2","_npmUser":{"name":"stefanpenner","email":"stefan.penner@gmail.com"},"dist":{"shasum":"e1f6fb204fc04bba836edaf3fdd07f4bec868d1b","tarball":"https://registry.npmjs.org/ember-cli-broccoli/-/ember-cli-broccoli-0.16.10.tgz","integrity":"sha512-guE5kdO7X9DHY8+KkfDWar4WplVJVqUN8rfuE7WRauoLlPdv/keRR0Pw2btMBt3heDSMwclRGyhuhkPmMhpc5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEdG+V35AQpW8zTYGZQu1Q2cBUngsVWZ6HJw6GS9Xp0OAiBhjWKl9uhwFnNiJekUTect4bBic3ro/7pVmNEKuFF2Ng=="}]},"maintainers":[{"name":"stefanpenner","email":"stefan.penner@gmail.com"},{"name":"rwjblue","email":"me@rwjblue.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/ember-cli-broccoli-0.16.10.tgz_1467223300515_0.6636344031430781"}},"0.17.0":{"name":"ember-cli-broccoli","description":"Fast client-side asset builder","version":"0.17.0","author":{"name":"Jo Liss","email":"joliss42@gmail.com"},"main":"lib/index.js","license":"MIT","keywords":["builder","build","frontend","browser","asset","pipeline"],"repository":{"type":"git","url":"git+https://github.com/broccolijs/broccoli.git"},"homepage":"https://github.com/broccolijs/broccoli","dependencies":{"findup-sync":"^0.2.1","handlebars":"^4.0.4","heimdalljs":"^0.1.2","mime":"^1.2.11","promise-map-series":"^0.2.1","quick-temp":"^0.1.2","rimraf":"^2.2.8","rsvp":"^3.0.17"},"devDependencies":{"jshint":"~2.6.3","tap":"^0.4.8"},"engines":{"node":">= 0.10.0"},"scripts":{"pretest":"jshint lib test","test":"tap --stderr --timeout 10 ./test/*_test.js"},"gitHead":"e28df50291f69a3145b0898e42e406d1a9d2bbb8","bugs":{"url":"https://github.com/broccolijs/broccoli/issues"},"_id":"ember-cli-broccoli@0.17.0","_shasum":"7e26536a3fd451c316fbe84a83e07935bcc245eb","_from":".","_npmVersion":"2.15.1","_nodeVersion":"0.12.15","_npmUser":{"name":"hjdivad","email":"npm@hjdivad.com"},"dist":{"shasum":"7e26536a3fd451c316fbe84a83e07935bcc245eb","tarball":"https://registry.npmjs.org/ember-cli-broccoli/-/ember-cli-broccoli-0.17.0.tgz","integrity":"sha512-+HOcSVaO3sovm0QEVJZ96uICprziT7q4C2/e8mVGJ4r62G5c3iL08OaYahp2KCBwYQbhrhUTdmdkhbZ/gR0vsg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJfe184n4qc6J6lYzWnfkOcjo/eMvkwv2o8g2b+5YyxAIgGPNXPwDJS6T9HkuQPZ1J28F1nHWYcbY729MPbjsWZkU="}]},"maintainers":[{"name":"hjdivad","email":"npm@hjdivad.com"},{"name":"rwjblue","email":"me@rwjblue.com"},{"name":"stefanpenner","email":"stefan.penner@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/ember-cli-broccoli-0.17.0.tgz_1470155004937_0.9013332626782358"}},"0.17.1":{"name":"ember-cli-broccoli","description":"Fast client-side asset builder","version":"0.17.1","author":{"name":"Jo Liss","email":"joliss42@gmail.com"},"main":"lib/index.js","license":"MIT","keywords":["builder","build","frontend","browser","asset","pipeline"],"repository":{"type":"git","url":"git+https://github.com/broccolijs/broccoli.git"},"homepage":"https://github.com/broccolijs/broccoli","dependencies":{"findup-sync":"^0.2.1","handlebars":"^4.0.4","heimdalljs":"^0.2.0","mime":"^1.2.11","promise-map-series":"^0.2.1","quick-temp":"^0.1.2","rimraf":"^2.2.8","rsvp":"^3.0.17"},"devDependencies":{"jshint":"~2.6.3","tap":"^0.4.8"},"engines":{"node":">= 0.10.0"},"scripts":{"pretest":"jshint lib test","test":"tap --stderr --timeout 10 ./test/*_test.js"},"gitHead":"4a4c52ef689e7f26931836b3c85f5b0488c75427","bugs":{"url":"https://github.com/broccolijs/broccoli/issues"},"_id":"ember-cli-broccoli@0.17.1","_shasum":"2296048b7985ea371dcf65fe85cfbdf7b26b909b","_from":".","_npmVersion":"3.10.5","_nodeVersion":"4.4.5","_npmUser":{"name":"hjdivad","email":"npm@hjdivad.com"},"dist":{"shasum":"2296048b7985ea371dcf65fe85cfbdf7b26b909b","tarball":"https://registry.npmjs.org/ember-cli-broccoli/-/ember-cli-broccoli-0.17.1.tgz","integrity":"sha512-tEHM3YzfOF6GnXC1OuE6J2QbAW348WgceMR04KCPcmhuDLCF6Dwm9H11V4GKHiww6oPAAEQ+n+EuHtzHyUsVIw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGab0I3duvzaqFc2Nd/2mdhW/7wKB4wVrODslWkoRXBYAiBGE5+skR78F6uFEzPu4TbGK6E31qZ4BJ1aZfQM8aNU/A=="}]},"maintainers":[{"name":"hjdivad","email":"npm@hjdivad.com"},{"name":"rwjblue","email":"me@rwjblue.com"},{"name":"stefanpenner","email":"stefan.penner@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/ember-cli-broccoli-0.17.1.tgz_1470754457940_0.363925653276965"}},"0.17.2":{"name":"ember-cli-broccoli","description":"Fast client-side asset builder","version":"0.17.2","author":{"name":"Jo Liss","email":"joliss42@gmail.com"},"main":"lib/index.js","license":"MIT","keywords":["builder","build","frontend","browser","asset","pipeline"],"repository":{"type":"git","url":"git+https://github.com/ember-cli/broccoli.git"},"homepage":"https://github.com/ember-cli/broccoli","dependencies":{"findup-sync":"^0.2.1","handlebars":"^4.0.4","heimdalljs":"^0.2.0","mime":"^1.2.11","promise-map-series":"^0.2.1","quick-temp":"^0.1.2","rimraf":"^2.2.8","rsvp":"^3.0.17"},"devDependencies":{"jshint":"~2.6.3","tap":"^0.4.8"},"engines":{"node":">= 0.10.0"},"scripts":{"pretest":"jshint lib test","test":"tap --stderr --timeout 10 ./test/*_test.js"},"gitHead":"deab2f08aa7a61f060432c07c7630518ced64eaf","bugs":{"url":"https://github.com/ember-cli/broccoli/issues"},"_id":"ember-cli-broccoli@0.17.2","_shasum":"78666ce67e6500235855acfa01cac84bb801a05d","_from":".","_npmVersion":"3.10.5","_nodeVersion":"6.3.0","_npmUser":{"name":"stefanpenner","email":"stefan.penner@gmail.com"},"dist":{"shasum":"78666ce67e6500235855acfa01cac84bb801a05d","tarball":"https://registry.npmjs.org/ember-cli-broccoli/-/ember-cli-broccoli-0.17.2.tgz","integrity":"sha512-JVSFK4uJ7PhcafVxi25psQ/0sRHkl7W7CTWQii8j7UGvQRdoXJWTKf1M1brkj6pmbEfnawfzbvUsyoP8iKN2AA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDCQ4JN1X5y8M1SamDXlkHW+Nrgq12cQ6d2x50tvKSxTAiEA20RwmdRNuGXttZhpjhNoIbHautRQ4sPd3dRgJTi33Jw="}]},"maintainers":[{"name":"hjdivad","email":"npm@hjdivad.com"},{"name":"rwjblue","email":"me@rwjblue.com"},{"name":"stefanpenner","email":"stefan.penner@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/ember-cli-broccoli-0.17.2.tgz_1471993167533_0.4274907929357141"}}},"readme":"# Broccoli\n\n<img src=\"logo/broccoli-logo.generated.png\" align=\"right\" height=\"150\">\n\n[![Build Status](https://travis-ci.org/broccolijs/broccoli.svg?branch=master)](https://travis-ci.org/broccolijs/broccoli)\n[![Build status](https://ci.appveyor.com/api/projects/status/jd3ts93gryjeqclf/branch/master?svg=true)](https://ci.appveyor.com/project/joliss/broccoli/branch/master)\n\nA fast, reliable asset pipeline, supporting constant-time rebuilds and compact\nbuild definitions. Comparable to the Rails asset pipeline in scope, though it\nruns on Node and is backend-agnostic. For background and architecture, see the\n[introductory blog post](http://www.solitr.com/blog/2014/02/broccoli-first-release/).\n\nFor the command line interface, see\n[broccoli-cli](https://github.com/broccolijs/broccoli-cli).\n\n**This is 0.x beta software.**\n\nWindows support is still spotty. Our biggest pain point is unreliable file\ndeletion (see [rimraf#72](https://github.com/isaacs/rimraf/issues/72)).\n\n## Installation\n\n```bash\nnpm install --save-dev broccoli\nnpm install --global broccoli-cli\n```\n\n## Brocfile.js\n\nA `Brocfile.js` file in the project root contains the build specification. It\nshould export a tree.\n\nA tree can be any string representing a directory path, like `'app'` or\n`'src'`. Or a tree can be an object conforming to the [Plugin API\nSpecification](#plugin-api-specification). A `Brocfile.js` will usually\ndirectly work with only directory paths, and then use the plugins in the\n[Plugins](#plugins) section to generate transformed trees.\n\nThe following simple `Brocfile.js` would export the `app/` subdirectory as a\ntree:\n\n```js\nmodule.exports = 'app'\n```\n\nWith that Brocfile, the build result would equal the contents of the `app`\ntree in your project folder. For example, say your project contains these\nfiles:\n\n    app\n    ├─ main.js\n    └─ helper.js\n    Brocfile.js\n    package.json\n    …\n\nRunning `broccoli build the-output` (a command provided by\n[broccoli-cli](https://github.com/broccolijs/broccoli-cli)) would generate\nthe following folder within your project folder:\n\n    the-output\n    ├─ main.js\n    └─ helper.js\n\n### Using plugins in a `Brocfile.js`\n\nThe following `Brocfile.js` exports the `app/` subdirectory as `appkit/`:\n\n```js\nvar Funnel = require('broccoli-funnel')\n\nmodule.exports = new Funnel('app', {\n  destDir: 'appkit'\n})\n```\n\nThat example uses the plugin\n[`broccoli-funnel`](https://www.npmjs.com/package/broccoli-funnel).\nIn order for the `require` call to work, you must first put the plugin in\nyour `devDependencies` and install it, with\n\n    npm install --save-dev broccoli-funnel\n\nWith the above `Brocfile.js` and the file tree from the previous example,\nrunning `broccoli build the-output` would generate the following folder:\n\n    the-output\n    └─ appkit\n       ├─ main.js\n       └─ helper.js\n\n### A larger example\n\nYou can see a full-featured `Brocfile.js` in\n[broccoli-sample-app](https://github.com/broccolijs/broccoli-sample-app/blob/master/Brocfile.js).\n\n## Plugins\n\nYou can find plugins on [broccoliplugins.com](http://broccoliplugins.com) or under the [broccoli-plugin keyword](https://www.npmjs.org/browse/keyword/broccoli-plugin) on npm.\n\n### Running Broccoli, Directly or Through Other Tools\n\n* [broccoli-timepiece](https://github.com/rjackson/broccoli-timepiece)\n* [grunt-broccoli](https://github.com/quandl/grunt-broccoli)\n* [grunt-broccoli-build](https://github.com/ericf/grunt-broccoli-build)\n\n### Helpers\n\nShared code for writing plugins.\n\n* [broccoli-caching-writer](https://github.com/rjackson/broccoli-caching-writer)\n* [broccoli-filter](https://github.com/broccolijs/broccoli-filter)\n* [broccoli-writer](https://github.com/broccolijs/broccoli-writer)\n* [node-quick-temp](https://github.com/joliss/node-quick-temp)\n\n## Plugin API Specification\n\nBroccoli defines a single plugin API: a tree. A tree object represents a tree\n(directory hierarchy) of files that will be regenerated on each build.\n\nBy convention, plugins will export a function that takes one or more input\ntrees, and returns an output tree object. Usually your plugin will be\nimplemented as a class representing a tree, but it is recommended to make the\n`new` operator optional\n([example](https://github.com/joliss/broccoli-coffee/blob/a55b3a6677f6d9da83334e9c916ae5e57895d1a6/index.js#L8)).\n\nA tree object must supply two methods that will be called by Broccoli:\n\n### `tree.read(readTree)`\n\nThe `.read` method must return a path or a promise for a path, containing the\ntree contents.\n\nIt receives a `readTree` function argument from Broccoli. If `.read` needs to\nread other trees, it must not call `otherTree.read` directly. Instead, it must\ncall `readTree(otherTree)`, which returns a promise for the path containing\n`otherTree`'s contents. It must not call `readTree` again until the promise\nhas resolved; that is, it cannot call `readTree` on multiple trees in\nparallel.\n\nBroccoli will call the `.read` method repeatedly to rebuild the tree, but at\nmost once per rebuild; that is, if a tree is used multiple times in a build\ndefinition, Broccoli will reuse the path returned instead of calling `.read`\nagain.\n\nThe `.read` method is responsible for creating a new temporary directory to\nstore the tree contents in. Subsequent invocations of `.read` should remove\ntemporary directories created in previous invocations.\n\n### `tree.cleanup()`\n\nFor every tree whose `.read` method was called one or more times, the\n`.cleanup` method will be called exactly once. No further `.read` calls will\nfollow `.cleanup`. The `.cleanup` method should remove all temporary\ndirectories created by `.read`.\n\n### Debugging\n\n\n#### Errors\n\nWhen it is known which file caused a given error, plugin authors can make errors\neasier to track down by setting the `.file` property on the generated error.\n\nThis `.file` property is used by both the console logging, and the server middleware\nto display more helpful error messages.\n\n#### Descriptive Naming\n\nAs of 0.11 Broccoli prints a log of any trees that took a significant amount of the total\nbuild time to assist in finding which trees are consuming the largest build times.\n\nTo determine the name to be printed Broccoli will first look for a `.description`\nproperty on the plugin instance then fall back to using the plugin constructor's name.\n\n## Security\n\n* Do not run `broccoli serve` on a production server. While this is\n  theoretically safe, it exposes a needlessly large amount of attack surface\n  just for serving static assets. Instead, use `broccoli build` to precompile\n  your assets, and serve the static files from a web server of your choice.\n\n## Get Help\n\n* IRC: `#broccolijs` on Freenode. Ask your question and stick around for a few\n  hours. Someone will see your message eventually.\n* Twitter: mention @jo_liss with your question\n* GitHub: Open an issue on a specific plugin repository, or on this\n  repository for general questions.\n\n## License\n\nBroccoli was originally written by [Jo Liss](http://www.solitr.com/) and is\nlicensed under the [MIT license](LICENSE).\n\nThe Broccoli logo was created by [Samantha Penner\n(Miric)](http://mirics.deviantart.com/) and is licensed under [CC0\n1.0](https://creativecommons.org/publicdomain/zero/1.0/).\n","maintainers":[{"name":"hjdivad","email":"npm@hjdivad.com"},{"name":"rwjblue","email":"me@rwjblue.com"},{"name":"stefanpenner","email":"stefan.penner@gmail.com"}],"time":{"modified":"2022-06-16T20:29:46.711Z","created":"2015-03-20T16:51:37.254Z","0.13.6":"2015-03-20T16:51:37.254Z","0.16.9":"2016-02-28T00:49:05.535Z","0.16.10":"2016-06-29T18:01:43.515Z","0.17.0":"2016-08-02T16:23:27.077Z","0.17.1":"2016-08-09T14:54:21.742Z","0.17.2":"2016-08-23T22:59:31.195Z"},"homepage":"https://github.com/ember-cli/broccoli","keywords":["builder","build","frontend","browser","asset","pipeline"],"repository":{"type":"git","url":"git+https://github.com/ember-cli/broccoli.git"},"author":{"name":"Jo Liss","email":"joliss42@gmail.com"},"bugs":{"url":"https://github.com/ember-cli/broccoli/issues"},"license":"MIT","readmeFilename":"README.md"}