{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","params":[],"results":{"codes":[]},"settings":""},"next":{"description":"","pages":[]},"title":"vinyl-transformer","type":"basic","slug":"module-vinyl-transformer","excerpt":"Create Transformers for Vinyl File Streams","body":"[![Version][npm-img]][npm-url] [![Downloads][dlm-img]][npm-url] [![Build Status][travis-img]][travis-url]\n\n[npm-img]: https://img.shields.io/npm/v/vinyl-transformer.svg\n[npm-url]: https://npmjs.org/package/vinyl-transformer\n[dlm-img]: https://img.shields.io/npm/dm/vinyl-transformer.svg\n[travis-img]: https://travis-ci.org/natronjs/vinyl-transformer.svg\n[travis-url]: https://travis-ci.org/natronjs/vinyl-transformer\n\n## Create a Transformer\n\n### Create by Extending the Base Class\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"import {src, dest} from \\\"vinyl-fs\\\";\\nimport {Transformer} from \\\"vinyl-transformer\\\";\\nimport {compile} from \\\"...\\\";\\n\\nclass MyTransformer extends Transformer {\\n \\n construct(compileFn) {\\n this._compileFn = compileFn;\\n }\\n \\n transform(file) {\\n file.contents = this._compileFn(file.contents);\\n }\\n}\\n\\nlet stream = (src(\\\"src/**/*.js\\\")\\n .pipe(new MyTransformer(compile))\\n .pipe(dest(\\\"dist\\\"))\\n);\",\n \"language\": \"javascript\"\n }\n ]\n}\n[/block]\n### Create via a Function\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"import {src, dest} from \\\"vinyl-fs\\\";\\nimport {createTransformer} from \\\"vinyl-transformer\\\";\\nimport {compile} from \\\"...\\\";\\n\\nlet MyTransformer = createTransformer((file) => {\\n file.contents = compile(file.contents);\\n});\\n\\nlet stream = (src(\\\"src/**/*.js\\\")\\n .pipe(new MyTransformer())\\n .pipe(dest(\\\"dist\\\"))\\n);\",\n \"language\": \"javascript\"\n }\n ]\n}\n[/block]\n### Create via an Object\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"import {src, dest} from \\\"vinyl-fs\\\";\\nimport {createTransformer} from \\\"vinyl-transformer\\\";\\nimport {compile} from \\\"...\\\";\\n\\nlet MyTransformer = createTransformer({\\n initialize(compileFn) {\\n this._compileFn = compileFn;\\n },\\n\\ttransform(file) {\\n \\tfile.contents = this._compileFn(file.contents);\\n }\\n});\\n\\nlet stream = (src(\\\"src/**/*.js\\\")\\n .pipe(new MyTransformer(compile))\\n .pipe(dest(\\\"dist\\\"))\\n);\",\n \"language\": \"javascript\"\n }\n ]\n}\n[/block]\n## Create a Transformer Function\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"import {src, dest} from \\\"vinyl-fs\\\";\\nimport {createTransformerFn} from \\\"vinyl-transformer\\\";\\nimport {compile} from \\\"...\\\";\\n\\nlet transform = createTransformerFn({\\n initialize(compileFn) {\\n this._compileFn = compileFn;\\n },\\n\\ttransform(file) {\\n \\tfile.contents = this._compileFn(file.contents);\\n }\\n});\\n\\nlet stream = (src(\\\"src/**/*.js\\\")\\n .pipe(transform(compile))\\n .pipe(dest(\\\"dist\\\"))\\n);\",\n \"language\": \"javascript\"\n }\n ]\n}\n[/block]\n## Create an Immediate Transformer Instance\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"import {src, dest} from \\\"vinyl-fs\\\";\\nimport {transformer} from \\\"vinyl-transformer\\\";\\nimport {compile} from \\\"...\\\";\\n\\nlet stream = (src(\\\"src/**/*.js\\\")\\n .pipe(transformer((file) => {\\n\\t\\tfile.contents = compile(file.contents);\\n\\t}))\\n .pipe(dest(\\\"dist\\\"))\\n);\",\n \"language\": \"javascript\"\n }\n ]\n}\n[/block]\n## Examples\n\n### List Files in the Pipeline\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"import {src, dest} from \\\"vinyl-fs\\\";\\nimport {createTransformerFn} from \\\"vinyl-transformer\\\";\\n\\nlet filelist = createTransformerFn({\\n initialize() {\\n this._fileCount = 0;\\n },\\n transform(file) {\\n console.log(\\\"File:\\\", file.path);\\n this._fileCount++;\\n },\\n flush() {\\n console.log(\\\"---- Files:\\\", this._fileCount);\\n },\\n});\\n\\nlet stream = (src(\\\"src/**/*.js\\\")\\n .pipe(filelist())\\n .pipe(dest(\\\"dist\\\"))\\n);\",\n \"language\": \"javascript\"\n }\n ]\n}\n[/block]\n### Add a Header to all Files in the Pipeline\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"import {src, dest} from \\\"vinyl-fs\\\";\\nimport {createTransformerFn} from \\\"vinyl-transformer\\\";\\n\\nlet header = createTransformerFn({\\n initialize(headerStr) {\\n this._header = new Buffer(headerStr);\\n },\\n transform(file) {\\n file.contents = Buffer.concat([\\n this._header, file.contents,\\n ]);\\n },\\n});\\n\\nlet stream = (src(\\\"src/**/*.js\\\")\\n .pipe(header(\\\"/* HEADER */\\\\n\\\"))\\n .pipe(dest(\\\"dist\\\"))\\n);\",\n \"language\": \"javascript\"\n }\n ]\n}\n[/block]","updates":[],"order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"5652003550c76e0d00615a49","category":{"sync":{"isSync":false,"url":""},"pages":[],"title":"Other Modules","slug":"other-modules","order":9999,"from_sync":false,"reference":false,"_id":"56c219d8d3199a0d00694be6","project":"5617a1f5a410c90d00c612f5","createdAt":"2016-02-15T18:32:56.618Z","__v":0,"version":"5619a39913874c0d007038e9"},"user":"5617a0a4a410c90d00c612f4","version":{"version":"0.2","version_clean":"0.2.0","codename":"Orange Arrow","is_stable":true,"is_beta":true,"is_hidden":false,"is_deprecated":false,"categories":["5619a39a13874c0d007038ea","5619a39a13874c0d007038eb","5619a39a13874c0d007038ec","5619a39a13874c0d007038ed","5651062a3b4d113500ed22d1","5651c89a852cfb3500a69830","565505ad055aa40d006f0ca7","56c219d8d3199a0d00694be6"],"_id":"5619a39913874c0d007038e9","createdAt":"2015-10-10T23:47:37.777Z","project":"5617a1f5a410c90d00c612f5","__v":5,"releaseDate":"2015-10-10T23:47:37.777Z"},"createdAt":"2015-11-22T17:49:41.739Z","githubsync":"","project":"5617a1f5a410c90d00c612f5","__v":22}
vinyl-transformer
Create Transformers for Vinyl File Streams