{"_id":"assemble-handle","_rev":"71681","name":"assemble-handle","description":"Assemble pipeline plugin for handling custom middleware stages.","dist-tags":{"latest":"1.0.0"},"maintainers":[{"name":"doowb","email":"brian.woodward@gmail.com"},{"name":"jonschlinkert","email":"github@sellside.com"}],"time":{"modified":"2021-06-03T10:23:34.000Z","created":"2016-01-12T21:08:13.389Z","1.0.0":"2018-12-12T01:16:43.634Z","0.1.4":"2017-05-28T10:00:59.248Z","0.1.3":"2016-07-21T04:49:09.802Z","0.1.2":"2016-05-17T19:22:30.112Z","0.1.1":"2016-05-17T08:40:56.538Z","0.1.0":"2016-01-12T21:08:13.389Z"},"users":{},"author":{"name":"Jon Schlinkert","url":"https://github.com/jonschlinkert"},"repository":{"type":"git","url":"git+https://github.com/assemble/assemble-handle.git"},"versions":{"1.0.0":{"name":"assemble-handle","description":"Assemble pipeline plugin for handling custom middleware stages.","version":"1.0.0","homepage":"https://github.com/assemble/assemble-handle","author":{"name":"Jon Schlinkert","url":"https://github.com/jonschlinkert"},"contributors":[{"name":"Brian Woodward","url":"https://twitter.com/doowb"},{"name":"Jon Schlinkert","url":"http://twitter.com/jonschlinkert"}],"repository":{"type":"git","url":"git+https://github.com/assemble/assemble-handle.git"},"bugs":{"url":"https://github.com/assemble/assemble-handle/issues"},"license":"MIT","main":"index.js","engines":{"node":">=6"},"scripts":{"test":"mocha"},"dependencies":{"through2":"^3.0.0"},"devDependencies":{"assemble-core":"^0.31.0","delete":"^1.1.0","gulp-format-md":"^2.0.0","mocha":"^5.2.0","vinyl":"^2.2.0"},"keywords":["assemble","assembleplugin","boilerplate","build","cli","cli-app","command-line","create","dev","development","framework","front","frontend","handle","handler","middleware","plugin","project","projects","run","scaffold","scaffolder","scaffolding","stage","template","templates","use","webapp","yeoman","yo"],"verb":{"related":{"list":["assemble","assemble-core","assemble-fs","assemble-streams"]},"layout":"default","plugins":["gulp-format-md"],"reflinks":["verb","verb-generate-readme"]},"gitHead":"adfe04b28d1162d0195040a92c41b963438d6832","_id":"assemble-handle@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"11.4.0","_npmUser":{"name":"jonschlinkert","email":"github@sellside.com"},"dist":{"shasum":"0bb0db1772ef7d7a899596266e7ad703f09afd1f","size":3761,"noattachment":false,"key":"/assemble-handle/-/assemble-handle-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/assemble-handle/download/assemble-handle-1.0.0.tgz"},"maintainers":[{"name":"doowb","email":"brian.woodward@gmail.com"},{"name":"jonschlinkert","email":"github@sellside.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/assemble-handle_1.0.0_1544577403490_0.4560857182966198"},"_hasShrinkwrap":false,"publish_time":1544577403634,"_cnpm_publish_time":1544577403634},"0.1.4":{"name":"assemble-handle","description":"Assemble pipeline plugin for handling custom middleware stages.","version":"0.1.4","homepage":"https://github.com/assemble/assemble-handle","author":{"name":"Jon Schlinkert","url":"https://github.com/jonschlinkert"},"contributors":[{"name":"Brian Woodward","url":"https://twitter.com/doowb"},{"name":"Jon Schlinkert","url":"http://twitter.com/jonschlinkert"}],"repository":{"type":"git","url":"git+https://github.com/assemble/assemble-handle.git"},"bugs":{"url":"https://github.com/assemble/assemble-handle/issues"},"license":"MIT","files":["index.js"],"main":"index.js","engines":{"node":">=0.10.0"},"scripts":{"test":"mocha"},"dependencies":{"through2":"^2.0.3"},"devDependencies":{"assemble-core":"^0.31.0","delete":"^1.0.1","gulp-format-md":"^0.1.12","mocha":"^3.4.2","vinyl":"^2.0.2"},"keywords":["assemble","assembleplugin","boilerplate","build","cli","cli-app","command-line","create","dev","development","framework","front","frontend","handle","handler","middleware","plugin","project","projects","run","scaffold","scaffolder","scaffolding","stage","template","templates","use","webapp","yeoman","yo"],"verb":{"related":{"list":["assemble","assemble-core","assemble-fs","assemble-streams"]},"layout":"default","plugins":["gulp-format-md"],"reflinks":["verb","verb-generate-readme"]},"gitHead":"50162b9883bd4fa2d7cdd137c5ab0746cd7cac5d","_id":"assemble-handle@0.1.4","_shasum":"e837b5bb23e75c9b05257d807e162f692cce216e","_from":".","_npmVersion":"4.6.1","_nodeVersion":"7.7.3","_npmUser":{"name":"jonschlinkert","email":"github@sellside.com"},"maintainers":[{"name":"doowb","email":"brian.woodward@gmail.com"},{"name":"jonschlinkert","email":"github@sellside.com"}],"dist":{"shasum":"e837b5bb23e75c9b05257d807e162f692cce216e","size":3749,"noattachment":false,"key":"/assemble-handle/-/assemble-handle-0.1.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/assemble-handle/download/assemble-handle-0.1.4.tgz"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/assemble-handle-0.1.4.tgz_1495965658199_0.11663232836872339"},"directories":{},"publish_time":1495965659248,"_hasShrinkwrap":false,"_cnpm_publish_time":1495965659248},"0.1.3":{"name":"assemble-handle","description":"Assemble pipeline plugin for handling custom middleware stages.","version":"0.1.3","homepage":"https://github.com/assemble/assemble-handle","author":{"name":"Jon Schlinkert","url":"https://github.com/jonschlinkert"},"repository":{"type":"git","url":"git+https://github.com/assemble/assemble-handle.git"},"bugs":{"url":"https://github.com/assemble/assemble-handle/issues"},"license":"MIT","files":["index.js","LICENSE","README.md"],"main":"index.js","engines":{"node":">=0.10.0"},"scripts":{"test":"mocha"},"dependencies":{"through2":"^2.0.1"},"devDependencies":{"assemble-core":"^0.25.0","delete":"^0.3.2","gulp-format-md":"^0.1.9","mocha":"^2.5.3","vinyl":"^1.1.1"},"keywords":["assemble","assembleplugin","handle","handler","middleware","plugin","run","stage","use"],"verb":{"related":{"list":["assemble","assemble-core","assemble-fs","assemble-streams"]},"layout":"default","plugins":["gulp-format-md"],"reflinks":["verb","verb-generate-readme"]},"gitHead":"c010984f337646f1ad3ff45893997db9bb141e21","_id":"assemble-handle@0.1.3","_shasum":"f8cd4f9b37e18fea0335edda936a2b2f96269a85","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"jonschlinkert","email":"github@sellside.com"},"maintainers":[{"name":"doowb","email":"brian.woodward@gmail.com"},{"name":"jonschlinkert","email":"github@sellside.com"}],"dist":{"shasum":"f8cd4f9b37e18fea0335edda936a2b2f96269a85","size":3402,"noattachment":false,"key":"/assemble-handle/-/assemble-handle-0.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/assemble-handle/download/assemble-handle-0.1.3.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/assemble-handle-0.1.3.tgz_1469076548154_0.8159406436607242"},"directories":{},"publish_time":1469076549802,"_cnpm_publish_time":1469076549802,"_hasShrinkwrap":false},"0.1.2":{"name":"assemble-handle","description":"Assemble pipeline plugin for handling custom middleware stages.","version":"0.1.2","homepage":"https://github.com/assemble/assemble-handle","author":{"name":"Jon Schlinkert","url":"https://github.com/jonschlinkert"},"repository":{"type":"git","url":"git+https://github.com/assemble/assemble-handle.git"},"bugs":{"url":"https://github.com/jonschlinkert/assemble-handle/issues"},"license":"MIT","files":["index.js"],"main":"index.js","engines":{"node":">=0.10.0"},"scripts":{"test":"mocha"},"dependencies":{"through2":"^2.0.0"},"devDependencies":{"assemble-core":"^0.17.2","gulp-format-md":"^0.1.9","mocha":"^2.4.5"},"keywords":["assemble","handle","handler","middleware","run","stage","use"],"verb":{"related":{"list":["assemble","assemble-core","assemble-fs","assemble-streams"]},"layout":"default","plugins":["gulp-format-md"]},"gitHead":"8ee379d79d205d1e9e8126e266b974662adfe762","_id":"assemble-handle@0.1.2","_shasum":"d5571e0fa35fcbe98a5da6651a9f87393efb21a9","_from":".","_npmVersion":"3.7.5","_nodeVersion":"5.1.1","_npmUser":{"name":"doowb","email":"brian.woodward@gmail.com"},"dist":{"shasum":"d5571e0fa35fcbe98a5da6651a9f87393efb21a9","size":2795,"noattachment":false,"key":"/assemble-handle/-/assemble-handle-0.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/assemble-handle/download/assemble-handle-0.1.2.tgz"},"maintainers":[{"name":"doowb","email":"brian.woodward@gmail.com"},{"name":"jonschlinkert","email":"github@sellside.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/assemble-handle-0.1.2.tgz_1463512947763_0.7124737920239568"},"directories":{},"publish_time":1463512950112,"_cnpm_publish_time":1463512950112,"_hasShrinkwrap":false},"0.1.1":{"name":"assemble-handle","description":"Assemble pipeline plugin for handling custom middleware stages.","version":"0.1.1","homepage":"https://github.com/assemble/assemble-handle","author":{"name":"Jon Schlinkert","url":"https://github.com/jonschlinkert"},"repository":{"type":"git","url":"git+https://github.com/assemble/assemble-handle.git"},"bugs":{"url":"https://github.com/jonschlinkert/assemble-handle/issues"},"license":"MIT","files":["index.js"],"main":"index.js","engines":{"node":">=0.10.0"},"scripts":{"test":"mocha"},"dependencies":{"through2":"^2.0.0"},"devDependencies":{"assemble-core":"^0.17.2","gulp-format-md":"^0.1.9","mocha":"^2.4.5"},"keywords":["assemble","handle","handler","middleware","run","stage","use"],"verb":{"related":{"list":["assemble","assemble-core","assemble-fs","assemble-streams"]},"layout":"default","plugins":["gulp-format-md"]},"gitHead":"d3753190caf0d96dc082f6ccfb9258724c75bef0","_id":"assemble-handle@0.1.1","_shasum":"714c9b3eb6f4a521d90df308ed6245d469c7376f","_from":".","_npmVersion":"3.6.0","_nodeVersion":"5.5.0","_npmUser":{"name":"jonschlinkert","email":"github@sellside.com"},"maintainers":[{"name":"doowb","email":"brian.woodward@gmail.com"},{"name":"jonschlinkert","email":"github@sellside.com"}],"dist":{"shasum":"714c9b3eb6f4a521d90df308ed6245d469c7376f","size":2772,"noattachment":false,"key":"/assemble-handle/-/assemble-handle-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/assemble-handle/download/assemble-handle-0.1.1.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/assemble-handle-0.1.1.tgz_1463474454218_0.7973688535857946"},"directories":{},"publish_time":1463474456538,"_cnpm_publish_time":1463474456538,"_hasShrinkwrap":false},"0.1.0":{"name":"assemble-handle","description":"Assemble pipeline plugin for handling middleware stages.","version":"0.1.0","homepage":"https://github.com/jonschlinkert/assemble-handle","author":{"name":"Jon Schlinkert","url":"https://github.com/jonschlinkert"},"repository":{"type":"git","url":"git+https://github.com/jonschlinkert/assemble-handle.git"},"bugs":{"url":"https://github.com/jonschlinkert/assemble-handle/issues"},"license":"MIT","files":["index.js"],"main":"index.js","engines":{"node":">=0.10.0"},"scripts":{"test":"mocha"},"dependencies":{"through2":"^2.0.0"},"devDependencies":{"assemble":"^0.7.3","gulp-format-md":"^0.1.5","mocha":"*"},"keywords":["assemble","handle","handler","middleware","run","stage","use"],"verb":{"related":{"list":["assemble","assemble-core","assemble-fs","assemble-streams"]},"layout":"default","plugins":["gulp-format-md"]},"gitHead":"f4e6edf1d01b02deb2afb15f414f8d5f1c33979b","_id":"assemble-handle@0.1.0","_shasum":"471224d729b87111b972c7662b2fb53360036ff8","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.3.0","_npmUser":{"name":"jonschlinkert","email":"github@sellside.com"},"maintainers":[{"name":"doowb","email":"brian.woodward@gmail.com"},{"name":"jonschlinkert","email":"github@sellside.com"}],"dist":{"shasum":"471224d729b87111b972c7662b2fb53360036ff8","size":2544,"noattachment":false,"key":"/assemble-handle/-/assemble-handle-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/assemble-handle/download/assemble-handle-0.1.0.tgz"},"directories":{},"publish_time":1452632893389,"_cnpm_publish_time":1452632893389,"_hasShrinkwrap":false}},"readme":"# assemble-handle [![NPM version](https://img.shields.io/npm/v/assemble-handle.svg?style=flat)](https://www.npmjs.com/package/assemble-handle) [![NPM monthly downloads](https://img.shields.io/npm/dm/assemble-handle.svg?style=flat)](https://npmjs.org/package/assemble-handle) [![NPM total downloads](https://img.shields.io/npm/dt/assemble-handle.svg?style=flat)](https://npmjs.org/package/assemble-handle) [![Linux Build Status](https://img.shields.io/travis/assemble/assemble-handle.svg?style=flat&label=Travis)](https://travis-ci.org/assemble/assemble-handle)\n\n> Assemble pipeline plugin for handling custom middleware stages.\n\nPlease consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.\n\n## Install\n\nInstall with [npm](https://www.npmjs.com/):\n\n```sh\n$ npm install --save assemble-handle\n```\n\n## Usage\n\n```js\nconst handle = require('assemble-handle');\n```\n\n### handle\n\nHandle middleware for the given middleware \"stage\".\n\n```js\napp.task('default', function() {\n  return app.src('*.js')\n    .pipe(handle(app, 'handlerName')) //<= handle middleware\n    .pipe(app.dest('foo'))\n});\n```\n\n**Example**\n\n```js\nconst assemble = require('assemble');\nconst handle = require('assemble-handle');\nconst app = assemble();\n\n/**\n * create some middleware \"stages\"\n */\n\napp.handler('onStream');\napp.handler('preWrite');\napp.handler('postWrite');\n\n/**\n * Create middleware\n */\n\napp.onStream(/\\.(js|css)$/, function(file, next) {\n  // lint javascript\n  next();\n});\n\napp.preWrite(/\\.(jpg|png)$/, function(file, next) {\n  // minify images\n  next();\n});\n\napp.postWrite(/./, function(file, next) {\n  // create files tree or something\n  next();\n});\n\n/**\n * Run (handle) the middleware \n */\n\napp.task('site', function() {\n  return app.src('assets/**/*.*')\n    .pipe(handle(app, 'onStream'))  // handle onStream\n    .pipe(handle(app, 'preWrite'))  // handle preWrite\n    .pipe(app.dest('site/'));\n    .pipe(handle(app, 'postWrite')) // handle postWrite\n});\n```\n\n### handle.once\n\nA `.once` method is exposed, which has the same exact behavior as the main function, but will ensure that middleware is only handled once for a given \"stage\".\n\n**Example**\n\nFor example the given middleware will only run once.\n\n```js\nconst assemble = require('assemble-core');\nconst handle = require('assemble-handle');\nconst app = assemble();\n\napp.handler('onFoo');\n\napp.onFoo(/./, function(file, next) {\n  file.count = file.count || 0;\n  file.count++;\n  next();\n});\n\napp.task('handle-once', function(cb) {\n  let files = [];\n  app.src('test/**/*.*')\n    .pipe(handle.once(app, 'onFoo'))\n    .pipe(handle.once(app, 'onFoo'))\n    .pipe(handle.once(app, 'onFoo'))\n    .pipe(handle.once(app, 'onFoo'))\n    .pipe(handle.once(app, 'onFoo'))\n    .on('data', function(file) {\n      files.push(file);\n    })\n    .pipe(app.dest('test/actual'))\n    .on('end', function() {\n      console.log(files[0].count);\n      //=> 1\n      cb();\n    });\n});\n\napp.task('handle', function(cb) {\n  let files = [];\n  app.src('test/**/*.*')\n    .pipe(handle(app, 'onFoo'))\n    .pipe(handle(app, 'onFoo'))\n    .pipe(handle(app, 'onFoo'))\n    .pipe(handle(app, 'onFoo'))\n    .pipe(handle(app, 'onFoo'))\n    .on('data', function(file) {\n      files.push(file);\n    })\n    .pipe(app.dest('test/actual'))\n    .on('end', function() {\n      console.log(files[0].count);\n      //=> 5\n      cb();\n    });\n});\n```\n\n## Custom handlers\n\nCreate custom middleware handlers.\n\n```js\napp.handler('onFoo');\n```\n\nThis adds an `.onFoo` method to the instance:\n\n```js\napp.onFoo(/\\.hbs$/, function(file, next) {\n  // do stuff to file\n  next();\n});\n```\n\nAll `.onFoo` middleware will now run when the `onFoo` handler is called:\n\n```js\napp.task('default', function() {\n  return app.src('*.hbs')\n\n    // call the `onFoo` handler\n    .pipe(handle(app, 'onFoo')) \n});\n```\n\n## About\n\n<details>\n<summary><strong>Contributing</strong></summary>\n\nPull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).\n\n</details>\n\n<details>\n<summary><strong>Running Tests</strong></summary>\n\nRunning and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:\n\n```sh\n$ npm install && npm test\n```\n\n</details>\n\n<details>\n<summary><strong>Building docs</strong></summary>\n\n_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_\n\nTo generate the readme, run the following command:\n\n```sh\n$ npm install -g verbose/verb#dev verb-generate-readme && verb\n```\n\n</details>\n\n### Related projects\n\nYou might also be interested in these projects:\n\n* [assemble-core](https://www.npmjs.com/package/assemble-core): The core assemble application with no presets or defaults. All configuration is left to the… [more](https://github.com/assemble/assemble-core) | [homepage](https://github.com/assemble/assemble-core \"The core assemble application with no presets or defaults. All configuration is left to the implementor.\")\n* [assemble-fs](https://www.npmjs.com/package/assemble-fs): Light wrapper for vinyl-fs to add streams support in a way that plays nice with… [more](https://github.com/assemble/assemble-fs) | [homepage](https://github.com/assemble/assemble-fs \"Light wrapper for vinyl-fs to add streams support in a way that plays nice with Assemble middleware.\")\n* [assemble-streams](https://www.npmjs.com/package/assemble-streams): Assemble pipeline plugin for pushing views into a vinyl stream. | [homepage](https://github.com/assemble/assemble-streams \"Assemble pipeline plugin for pushing views into a vinyl stream.\")\n* [assemble](https://www.npmjs.com/package/assemble): Get the rocks out of your socks! Assemble makes you fast at creating web projects… [more](https://github.com/assemble/assemble) | [homepage](https://github.com/assemble/assemble \"Get the rocks out of your socks! Assemble makes you fast at creating web projects. Assemble is used by thousands of projects for rapid prototyping, creating themes, scaffolds, boilerplates, e-books, UI components, API documentation, blogs, building websit\")\n\n### Contributors\n\n| **Commits** | **Contributor** |  \n| --- | --- |  \n| 17 | [jonschlinkert](https://github.com/jonschlinkert) |  \n| 3  | [doowb](https://github.com/doowb) |  \n\n### Author\n\n**Jon Schlinkert**\n\n* [GitHub Profile](https://github.com/jonschlinkert)\n* [Twitter Profile](https://twitter.com/jonschlinkert)\n* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)\n\n### License\n\nCopyright © 2018, [Jon Schlinkert](https://github.com/jonschlinkert).\nReleased under the [MIT License](LICENSE).\n\n***\n\n_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on December 11, 2018._","_attachments":{},"homepage":"https://github.com/assemble/assemble-handle","bugs":{"url":"https://github.com/assemble/assemble-handle/issues"},"license":"MIT"}