{"_id":"grunt-transfo","_rev":"30-acbbd4c84a8ef2962048b80107a14a7b","name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used as an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.1.0","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `concatTo` {`String`}: === dest for a copy, the final destination for a concatenation\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s)\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\n    TODO\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.1.0","dist":{"shasum":"3abf3c486c97da3b7e81d64a741705eba5f1c131","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.1.0.tgz","integrity":"sha512-MZ0YYekU4hzrwWKTK2YXpF7FWq/VXMYyXobNjzNU5NzIUMWjZiy1MGyw3xY2XDdKcibPVJD3OhmAkcSEU8q76w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuqXc9/CpbCZdQAOpr8ZN4MUmv6PWCw4n4vsCw/Ej22gIgc+M+kFsqmKLVh4YvpzTmBSFVy+B2+FXkFnDHd3ilIN4="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]},"0.2.0":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.2.0","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options, addFiles) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n  - `addFiles` {`Function`}: A helper to add files to the process queue. Usefull to add file detected while the transformation (expl: assets in css source):\n    - `sources` {`Array|String`}: One or many path to copy / concatenate\n    - `dest` {`String`}: Destination path\n    - `options`: Copy/concat options (transfo options)\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s)\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\n    TODO\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.2.0","dist":{"shasum":"ed613926d4af287581b8271aae1f7960023c06a1","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.2.0.tgz","integrity":"sha512-42zh86eOlTrGx2vcFHg/8etzzfsAbuQgmDcsuMqXVV8MoYFwxVsPey5yV7CujlDeOdI+Uxeb+lkcoFzYbHKrqQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFx0MNPxqPb4wz0FPIMAu8ffAZhXJwRFyqwyUByhUkUAAiEA0LgiPb9WwA/o2QYG7Wc0zYpUYsNcYCFd7Zpqr0Vs20g="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]},"0.2.1":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.2.1","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options, addFiles) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n  - `addFiles` {`Function`}: A helper to add files to the process queue. Usefull to add file detected while the transformation (expl: assets in css source):\n    - `sources` {`Array|String`}: One or many path to copy / concatenate\n    - `dest` {`String`}: Destination path\n    - `options`: Copy/concat options (transfo options)\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s)\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\n    TODO\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.2.1","dist":{"shasum":"c133e3bf4473ca9272b511f2d40d86c74289375b","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.2.1.tgz","integrity":"sha512-PsiTOj/MwJ+NiyOrH3TpGCfRx5PU7QVG7Ls1hS4l+4E4A6ndzoyI4Mic5WX2cotTIJFvSyMoy7YiUE3DK01QWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRuZfXg/IcuTCyCttlh7LJUqLgUdQc/sxADxiiQ0+yTgIhALJBpPoEDzXaGZT5TlNdWDB1xGGO9XfTIOppv+0Vkalg"}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]},"0.3.0":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.3.0","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options, addFiles) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n  - `addFiles` {`Function`}: A helper to add files to the process queue. Usefull to add file detected while the transformation (expl: assets in css source):\n    - `sources` {`Array|String`}: One or many path to copy / concatenate\n    - `dest` {`String`}: Destination path\n    - `options`: Copy/concat options (transfo options)\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s)\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\n    TODO\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.3.0","dist":{"shasum":"a08bfa101f3d4824458002aa2b80eb9d5adff072","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.3.0.tgz","integrity":"sha512-q7+k6mGjXwncSxUXXkegHoIqYcIKrmOqVFOXsZicHgbO04qZUEsAdaSNaBhuW2WPsDd6IAF9xsKMgr5pw/NnLA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEk6ncn5MlBfeCWr221Fp9ixmf+nMLi0KwCCObIucez/AiAG/SzQoR7TlEXqG2VgpTrTKF+ePxZ7vAb95r/GhwusVQ=="}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]},"0.4.0":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.4.0","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3","dev-null":"~0.1.1"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options, addFiles) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n  - `addFiles` {`Function`}: A helper to add files to the process queue. Usefull to add file detected while the transformation (expl: assets in css source):\n    - `sources` {`Array|String`}: One or many path to copy / concatenate\n    - `dest` {`String`}: Destination path\n    - `options`: Copy/concat options (transfo options)\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s)\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### readOnly\n\nType: `Boolean` • Default: `false`\n\nOnly read source content through the process & transform pipeline but write nothing to the destination.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\n    TODO\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.4.0","dist":{"shasum":"056360d2c2b2bfaf93ef7161fe9646b2627939f7","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.4.0.tgz","integrity":"sha512-GUSrzms2LuvyCt1HNp1sDi0fNGgluDYy+BUKG1L75TlLXpYf6sIdX5rS/Dz7F66JwaDaFBU/zgPTPLm4JBJaDw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjGk9gioNN0mqCXrwALSGNoTDMv8aogcMSb32tA6ixiQIgTmUx3eZ3uebW2z3ACHFT7pcupyeNb2NL1X9Co7nAjkQ="}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]},"0.4.1":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.4.1","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3","dev-null":"~0.1.1"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options, addFiles) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n  - `addFiles` {`Function`}: A helper to add files to the process queue. Usefull to add file detected while the transformation (expl: assets in css source):\n    - `sources` {`Array|String`}: One or many path to copy / concatenate\n    - `dest` {`String`}: Destination path\n    - `options`: Copy/concat options (transfo options)\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s)\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### readOnly\n\nType: `Boolean` • Default: `false`\n\nOnly read source content through the process & transform pipeline but write nothing to the destination.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\n    TODO\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.4.1","dist":{"shasum":"b0312a28fe458e749809bccb585b86ffbc462e7d","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.4.1.tgz","integrity":"sha512-HoUpAltdBJikkRhYISHcG4KM+w6CBYM1lgySBMd2gKE6C1zJI7SRmSa0C4rMMmiVsXSTaiHF88odZPOW9GHIGQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA3TstvF7AXAzXIpHn1EaAwY8qgNkI3CQRb0TLMkrlCQAiBqQofiojwMAQiWbtcinQKbSTopML2QNbLNP5gqNt+1KQ=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]},"0.4.2":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.4.2","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3","dev-null":"~0.1.1"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Functionalities overview\n\n  - Replace grunt-contrib-copy without any configuration changes\n  - Replace grunt-contrib-concat without any configuration changes\n  - Lazy mode offer caching to reduce processing time if the source is not newer than the destination (see `lazy` option)\n  - Use of [Stream](http://nodejs.org/api/stream.html) instead of buffering all the file content before copy or concat.\n  - Pipe stream of sources and/or concatenated sources through a pipeline of [Stream Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform) (see `transforms` option).\n  - Adding dynamically files to the processing queue while the sources goes through the transforms pipeline.\n  - Processing  more than one file at a time (see `concurrency` option)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options, addFiles) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n  - `addFiles` {`Function`}: A helper to add files to the process queue. Usefull to add file detected while the transformation (expl: assets in css source):\n    - `sources` {`Array|String`}: One or many path to copy / concatenate\n    - `dest` {`String`}: Destination path\n    - `options`: Copy/concat options (transfo options)\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options, addFiles) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s). Both for copy and concat. Concat task a cached copy of the sources files after processing and transformation in `tmp/grunt-transfo` (see `cache` option below).\n\nThis option can be useful to reduce processing time. Especially when you use transfo with [watch](https://github.com/gruntjs/grunt-contrib-watch) and [livereload](https://github.com/gruntjs/grunt-contrib-watch#optionslivereload).\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### readOnly\n\nType: `Boolean` • Default: `false`\n\nOnly read source content through the process & transform pipeline but write nothing to the destination.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\n    TODO\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.4.2","dist":{"shasum":"6d76a7e84aa7804f27e36597c30bf6e23f379ca5","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.4.2.tgz"},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]},"0.4.3":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.4.3","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3","dev-null":"~0.1.1"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Functionalities overview\n\n  - Replace grunt-contrib-copy without any configuration changes\n  - Replace grunt-contrib-concat without any configuration changes\n  - Lazy mode offer caching to reduce processing time if the source is not newer than the destination (see `lazy` option)\n  - Use of [Stream](http://nodejs.org/api/stream.html) instead of buffering all the file content before copy or concat.\n  - Pipe stream of sources and/or concatenated sources through a pipeline of [Stream Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform) (see `transforms` option).\n  - Adding dynamically files to the processing queue while the sources goes through the transforms pipeline.\n  - Processing  more than one file at a time (see `concurrency` option)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options, addFiles) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n  - `addFiles` {`Function`}: A helper to add files to the process queue. Usefull to add file detected while the transformation (expl: assets in css source):\n    - `sources` {`Array|String`}: One or many path to copy / concatenate\n    - `dest` {`String`}: Destination path\n    - `options`: Copy/concat options (transfo options)\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options, addFiles) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s). Both for copy and concat. Concat task a cached copy of the sources files after processing and transformation in `tmp/grunt-transfo` (see `cache` option below).\n\nThis option can be useful to reduce processing time. Especially when you use transfo with [watch](https://github.com/gruntjs/grunt-contrib-watch) and [livereload](https://github.com/gruntjs/grunt-contrib-watch#optionslivereload).\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### readOnly\n\nType: `Boolean` • Default: `false`\n\nOnly read source content through the process & transform pipeline but write nothing to the destination.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\n    TODO\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.4.3","dist":{"shasum":"b0543ce45312336773c12b81f381b5fcf320dd2f","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.4.3.tgz","integrity":"sha512-b1ErkFJwYnWbShKzff4zEy3Q9Np2x+Vb/NNB24QCWiv/8q2TRvApMsFAXv2ZccuK7bP2A2R8oAoOvcsde6e5hg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoiA4tpnYhWZ4gzJJsn5F7rwF4byfxAbyF/J6DbOcWeAIgNW6jWvEx1JirdVHfQyHjmHkU3m9Q2IDB3YBfKjVuxJo="}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]},"0.4.4":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.4.4","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3","dev-null":"~0.1.1"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Functionalities overview\n\n  - Replace grunt-contrib-copy without any configuration changes\n  - Replace grunt-contrib-concat without any configuration changes\n  - Lazy mode offer caching to reduce processing time if the source is not newer than the destination (see `lazy` option)\n  - Use of [Stream](http://nodejs.org/api/stream.html) instead of buffering all the file content before copy or concat.\n  - Pipe stream of sources and/or concatenated sources through a pipeline of [Stream Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform) (see `transforms` option).\n  - Adding dynamically files to the processing queue while the sources goes through the transforms pipeline.\n  - Processing  more than one file at a time (see `concurrency` option)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options, addFiles) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n  - `addFiles` {`Function`}: A helper to add files to the process queue. Usefull to add file detected while the transformation (expl: assets in css source):\n    - `sources` {`Array|String`}: One or many path to copy / concatenate\n    - `dest` {`String`}: Destination path\n    - `options`: Copy/concat options (transfo options)\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options, addFiles) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s). Both for copy and concat. Concat task a cached copy of the sources files after processing and transformation in `tmp/grunt-transfo` (see `cache` option below).\n\nThis option can be useful to reduce processing time. Especially when you use transfo with [watch](https://github.com/gruntjs/grunt-contrib-watch) and [livereload](https://github.com/gruntjs/grunt-contrib-watch#optionslivereload).\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### readOnly\n\nType: `Boolean` • Default: `false`\n\nOnly read source content through the process & transform pipeline but write nothing to the destination.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\n    TODO\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.4.4","dist":{"shasum":"d76f75a9eb26a7d24d5d9091c4b290f4545503e3","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.4.4.tgz","integrity":"sha512-ejrpycROTUeWGXCPLI+BpxmGpcUIbmFZIHtMU3c0h8tN4lpnIeYICIilHQk216eA/gP4reDd5Q/AE8i5B8xEEA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfNnsGMXBz/PKShJom6CnDc5EvzQqGTLY5r4wggb2z4AIgcoSXEMKImtitaICudf6oH3kXpy8To8CvUL8GEcw3cl4="}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]},"0.4.5":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.4.5","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3","dev-null":"~0.1.1"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used as an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Functionalities overview\n\n  - Replace grunt-contrib-copy without any configuration changes\n  - Replace grunt-contrib-concat without any configuration changes\n  - Lazy mode offer caching to reduce processing time if the source is not newer than the destination (see `lazy` option)\n  - Use of [Stream](http://nodejs.org/api/stream.html) instead of buffering all the file content before copy or concat.\n  - Pipe stream of sources and/or concatenated sources through a pipeline of [Stream Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform) (see `transforms` option).\n  - Adding dynamically files to the processing queue while the sources goes through the transforms pipeline.\n  - Processing  more than one file at a time (see `concurrency` option)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options, addFiles) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n  - `addFiles` {`Function`}: A helper to add files to the process queue. Usefull to add file detected while the transformation (expl: assets in css source):\n    - `sources` {`Array|String`}: One or many path to copy / concatenate\n    - `dest` {`String`}: Destination path\n    - `options`: Copy/concat options (transfo options)\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options, addFiles) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s). Both for copy and concat. Concat task a cached copy of the sources files after processing and transformation in `tmp/grunt-transfo` (see `cache` option below).\n\nThis option can be useful to reduce processing time. Especially when you use transfo with [watch](https://github.com/gruntjs/grunt-contrib-watch) and [livereload](https://github.com/gruntjs/grunt-contrib-watch#optionslivereload).\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### readOnly\n\nType: `Boolean` • Default: `false`\n\nOnly read source content through the process & transform pipeline but write nothing to the destination.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\n    TODO\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.4.5","dist":{"shasum":"0ca374ea7dcc31992aa828a508e672d0acda51f5","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.4.5.tgz","integrity":"sha512-nV9KQHYz+JMBlbRZT3SkMoXFdjTLuinvY10nJK5paWdb/wNQHoExPyCORCmDDFscdcjGczIztvL0K96QhVgjMg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2EwIzCB9iVkHbnTI3pki1QXjE9hANzXjgicdR+imaSgIhAK8k0wS+nB59hVqElgwlg1hMcTGw7p+zU6Mg4ISXV+Ol"}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]},"0.4.6":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used as an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.4.6","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3","dev-null":"~0.1.1"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used as an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Functionalities overview\n\n  - Replace grunt-contrib-copy without any configuration changes\n  - Replace grunt-contrib-concat without any configuration changes\n  - Lazy mode offer caching to reduce processing time if the source is not newer than the destination (see `lazy` option)\n  - Use of [Stream](http://nodejs.org/api/stream.html) instead of buffering all the file content before copy or concat.\n  - Pipe stream of sources and/or concatenated sources through a pipeline of [Stream Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform) (see `transforms` option).\n  - Adding dynamically files to the processing queue while the sources goes through the transforms pipeline.\n  - Processing  more than one file at a time (see `concurrency` option)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options, addFiles) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n  - `addFiles` {`Function`}: A helper to add files to the process queue. Usefull to add file detected while the transformation (expl: assets in css source):\n    - `sources` {`Array|String`}: One or many path to copy / concatenate\n    - `dest` {`String`}: Destination path\n    - `options`: Copy/concat options (transfo options)\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options, addFiles) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s). Both for copy and concat. Concat task a cached copy of the sources files after processing and transformation in `tmp/grunt-transfo` (see `cache` option below).\n\nThis option can be useful to reduce processing time. Especially when you use transfo with [watch](https://github.com/gruntjs/grunt-contrib-watch) and [livereload](https://github.com/gruntjs/grunt-contrib-watch#optionslivereload).\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### readOnly\n\nType: `Boolean` • Default: `false`\n\nOnly read source content through the process & transform pipeline but write nothing to the destination.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\n    TODO\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.4.6","dist":{"shasum":"b0eae41c8ff958f5c67a28ee44a715702c0b5fb6","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.4.6.tgz","integrity":"sha512-TM+NPq8esF4QpBrUW+thZzpLi6NaNVf0gDhaa2ovrgobcPxz7dKwgjlWGIhp1ECvi4ljP6756QLb8rnHPU0sWQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjgV7XlWQxuOdIobgQDZtyDcmnJTgMnENiMC119L0SlAIhAJXt6VUrKA+Ognkn2dtvYThedbnW+ArFlkP3PFpTiNRj"}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]},"0.4.7":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used as an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.4.7","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3","dev-null":"~0.1.1"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used as an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Functionalities overview\n\n  - Replace grunt-contrib-copy without any configuration changes\n  - Replace grunt-contrib-concat without any configuration changes\n  - Lazy mode offer caching to reduce processing time if the source is not newer than the destination (see `lazy` option)\n  - Use of [Stream](http://nodejs.org/api/stream.html) instead of buffering all the file content before copy or concat.\n  - Pipe stream of sources and/or concatenated sources through a pipeline of [Stream Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform) (see `transforms` option).\n  - Adding dynamically files to the processing queue while the sources goes through the transforms pipeline.\n  - Processing  more than one file at a time (see `concurrency` option)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options, addFiles) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n  - `addFiles` {`Function`}: A helper to add files to the process queue. Usefull to add file detected while the transformation (expl: assets in css source):\n    - `sources` {`Array|String`}: One or many path to copy / concatenate\n    - `dest` {`String`}: Destination path\n    - `options`: Copy/concat options (transfo options)\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options, addFiles) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s). Both for copy and concat. Concat task a cached copy of the sources files after processing and transformation in `tmp/grunt-transfo` (see `cache` option below).\n\nThis option can be useful to reduce processing time. Especially when you use transfo with [watch](https://github.com/gruntjs/grunt-contrib-watch) and [livereload](https://github.com/gruntjs/grunt-contrib-watch#optionslivereload).\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### readOnly\n\nType: `Boolean` • Default: `false`\n\nOnly read source content through the process & transform pipeline but write nothing to the destination.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\nThe [transfo-unifyurl](https://npmjs.org/package/transfo-unifyurl) library is an example of grunt-transfo stream transformation.\n[transfo-unifyurl](https://npmjs.org/package/transfo-unifyurl) copy all css assets by adding them to the grunt-transfo pipeline.\n\n```shell\nnpm install transfo-unifyurl\n```\n\n```js\ngrunt.initConfig({\n  transfo: {\n    // This is a concat task. grunt-transfo allow copy task too\n    concat_css: {\n      src: ['src/**/*.css'],\n      dest: 'build/css/compiled.css',\n      options: {\n        // Add unifyurl to the transformation pipeline\n        transforms: [require('transfo-unifyurl')],\n        // Set unifyurl options (below the default options):\n        unifyurl: {\n          // Assets destination: relative to the css destination path.\n          dest:       './',\n\n          // Url to the destination (default is a resolved\n          // relative path based on dest value)\n          url:        null,\n\n          // List source extension to process. Other sources are ignored.\n          extensions: ['.css']\n        },\n      },\n    },\n  },\n})\n```\n\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.4.7","dist":{"shasum":"e2d18f43511c1f16dcde43986b634d15e71979d8","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.4.7.tgz","integrity":"sha512-kxw2/O8E2BOQIpJ9GTnfQeUzewwgpUXrfpG+NT6tk6URSZkvnNou6jwg5FFxOjwZWW8ry1z2DiYL5QiriToaAA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC85aoW1fu178Xu/IHz/eXBzGGZPWULjWHNCQq2a3gQ0AiB0BQnmQXI0niPUvEval73a9ZivXkzaJkDC+ZNC5yRVug=="}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]},"0.5.0":{"name":"grunt-transfo","description":"Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used as an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test)","version":"0.5.0","homepage":"https://github.com/nopnop/grunt-transfo","author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"},"bugs":{"url":"https://github.com/nopnop/grunt-transfo/issues"},"licenses":[{"type":"MIT","url":"https://github.com/nopnop/grunt-transfo/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.10.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-clean":"~0.4.0","grunt-contrib-nodeunit":"~0.2.0","grunt":"~0.4.1"},"peerDependencies":{"grunt":"~0.4.1"},"keywords":["gruntplugin","grunt","copy","clone","stream","stream2","transform"],"dependencies":{"underscore":"~1.5.2","async":"~0.2.9","bun":"0.0.10","mkdirp":"~0.3.5","q":"~0.9.7","stream-stream":"~1.2.3","rimraf":"~2.2.2","through2":"~0.2.3","dev-null":"~0.1.1"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used as an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n![transfo.png](https://raw.github.com/nopnop/grunt-transfo/master/transfo.png)\n\n## Functionalities overview\n\n  - Replace grunt-contrib-copy without any configuration changes\n  - Replace grunt-contrib-concat without any configuration changes\n  - Lazy mode offer caching to reduce processing time if the source is not newer than the destination (see `lazy` option)\n  - Use of [Stream](http://nodejs.org/api/stream.html) instead of buffering all the file content before copy or concat.\n  - Pipe stream of sources and/or concatenated sources through a pipeline of [Stream Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform) (see `transforms` option).\n  - Adding dynamically files to the processing queue while the sources goes through the transforms pipeline.\n  - Processing  more than one file at a time (see `concurrency` option)\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`Array of function(src, dest, options, addFiles) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n  - `addFiles` {`Function`}: A helper to add files to the process queue. Usefull to add file detected while the transformation (expl: assets in css source):\n    - `sources` {`Array|String`}: One or many path to copy / concatenate\n    - `dest` {`String`}: Destination path\n    - `options`: Copy/concat options (transfo options)\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options, addFiles) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n\n#### transformsConcat\n\nType: `Array` of `Function` • Default: `[]`\n\nLike the `transforms` option but for the concatenated result.\n\n`Array of function(src, dest, options) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s). Both for copy and concat. Concat task a cached copy of the sources files after processing and transformation in `tmp/grunt-transfo` (see `cache` option below).\n\nThis option can be useful to reduce processing time. Especially when you use transfo with [watch](https://github.com/gruntjs/grunt-contrib-watch) and [livereload](https://github.com/gruntjs/grunt-contrib-watch#optionslivereload).\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### readOnly\n\nType: `Boolean` • Default: `false`\n\nOnly read source content through the process & transform pipeline but write nothing to the destination.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\nThe [transfo-unifyurl](https://npmjs.org/package/transfo-unifyurl) library is an example of grunt-transfo stream transformation.\n[transfo-unifyurl](https://npmjs.org/package/transfo-unifyurl) copy all css assets by adding them to the grunt-transfo pipeline.\n\n```shell\nnpm install transfo-unifyurl\n```\n\n```js\ngrunt.initConfig({\n  transfo: {\n    // This is a concat task. grunt-transfo allow copy task too\n    concat_css: {\n      src: ['src/**/*.css'],\n      dest: 'build/css/compiled.css',\n      options: {\n        // Add unifyurl to the transformation pipeline\n        transforms: [require('transfo-unifyurl')],\n        // Set unifyurl options (below the default options):\n        unifyurl: {\n          // Assets destination: relative to the css destination path.\n          dest:       './',\n\n          // Url to the destination (default is a resolved\n          // relative path based on dest value)\n          url:        null,\n\n          // List source extension to process. Other sources are ignored.\n          extensions: ['.css']\n        },\n      },\n    },\n  },\n})\n```\n\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","readmeFilename":"README.md","_id":"grunt-transfo@0.5.0","dist":{"shasum":"f090d56646fdce601ea5d70218fd4b95168fcd21","tarball":"https://registry.npmjs.org/grunt-transfo/-/grunt-transfo-0.5.0.tgz","integrity":"sha512-yIadsL21OCavtfqG5FLORuRyI9FyZiDqFHLL7pFR4n8AZlGUNnfas0IE9sJyxGrvsTZu6eECtBOQCBFjA9tRQg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEodutEzYoR+32RjLsaUqFtspiF6s67YWO9Ag2vxAjGgIgYSP2lIAPp4kk8S7RAa2aZKsA/4k/UKPYFMtN3vWPKaw="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}]}},"readme":"# grunt-transfo\n\n> Transfo offer both 'copy' and 'concat' task at once with the addition of streamed transformation of content and optional caching based on files mtime to limit unrequired file processing. Transfo should be used has an alternative to any grunt-contrib-copy and/or grunt-contrib-concat usage without any change in your grunt configuration (see compatibility test).\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1` and node `>= 0.10.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-transfo --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-transfo');\n```\n\n## The \"transfo\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `transfo` to the data object passed into `grunt.initConfig()`.\n\nYou can use `grunt-transfo` in place of any [grunt-contrib-copy](https://github.com/gruntjs/grunt-contrib-copy) or  [grunt-contrib-concat](https://github.com/gruntjs/grunt-contrib-concat) configuration.\n\n```js\ngrunt.initConfig({\n  transfo: {\n    options: {\n      // Any grunt-contrib-copy and/or grunt-contrib-concat options\n      // Any grunt-transfo options (see below)\n    },\n\n    // Copy\n    any_copy_task: {\n      files: [\n        {expand: true, src: ['path/**/*.js'], dest: 'build/', filter: 'isFile'}\n      ]\n    },\n\n    // Concat\n    any_concat_task: {\n      options: {\n        stripBanners: true,\n        banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n        '<%= grunt.template.today(\"yyyy-mm-dd\") %> */',\n      },\n      src: ['build/project.js','vendors/**/*.js'],\n      dest: 'dist/built.js',\n      expand: true\n    },\n  },\n})\n```\n\n### Options\n\n#### concurrency\n\nType: `Integer` (>= 1) • Default: 1\n\nHow many files to proceed at the same time (copy and concat are asynchronously executed).\n\n#### transforms\n\nType: `Array` of `Function` • Default: `[]`\n\nEach function is a constructor for a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform). Any time a source is processed, each constructor is called with following arguments and must return a Transform stream.\n\n`function(src, dest, options) ... `\n\n  - `src` {`String`}: The source file path\n  - `dest` {`String`}: The destination file path\n  - `options` {`Object`}:\n    - *All your task options*\n    - `concatTo` {`String`}: === dest for a copy, the final destination for a concatenation\n    - `isConcat` {`Boolean`}: This is file will be concatenated with others\n\n```js\noptions: {\n  transforms: [\n    // PassThrough ...\n    function(src, dest, options) { return new stream.Transform(); }\n  ]\n}\n```\n\nSee too [Stream Handbook](https://github.com/substack/stream-handbook) to understand why using [stream](http://nodejs.org/api/stream.html) may be very powerfull.\n\nSee too [through2](https://github.com/rvagg/through2) a nice wrapped around [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform).\n\n####  lazy\n\nType: `Boolean` • Default: `false`\n\nDo nothing if the destination file already exist with an equal or posterior mtime of the source(s)\n\n#### cache\n\nType: `String` • Default: `tmp/grunt-transfo`\n\nThe path to use to store lazy & concatenation cached files. Remember to add this path to your `clean` task if you plan to use the `lazy` option.\n\n#### Any [grunt-contrib-copy options](https://github.com/gruntjs/grunt-contrib-copy#options)\n\n  - [processContent](https://github.com/gruntjs/grunt-contrib-copy#processcontent)\n  - [processContentExclude](https://github.com/gruntjs/grunt-contrib-copy#processcontentexclude)\n\n#### Any [grunt-contrib-concat options](https://github.com/gruntjs/grunt-contrib-concat#options)\n\n  - [separator](https://github.com/gruntjs/grunt-contrib-concat#separator)\n  - [banner](https://github.com/gruntjs/grunt-contrib-concat#banner)\n  - [stripBanners](https://github.com/gruntjs/grunt-contrib-concat#stripbanners)\n  - [process](https://github.com/gruntjs/grunt-contrib-concat#process)\n\n### Usage Examples\n\n    TODO\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n_(Nothing yet)_\n","maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"time":{"modified":"2022-07-13T13:16:05.681Z","created":"2013-11-19T22:00:16.148Z","0.1.0":"2013-11-19T22:05:43.366Z","0.2.0":"2013-11-20T21:56:53.785Z","0.2.1":"2013-11-21T15:48:02.503Z","0.3.0":"2013-11-27T08:22:25.159Z","0.4.0":"2013-11-27T15:47:12.157Z","0.4.1":"2013-12-03T20:30:56.094Z","0.4.2":"2013-12-06T17:30:09.516Z","0.4.3":"2013-12-06T17:33:20.387Z","0.4.4":"2013-12-06T17:59:10.139Z","0.4.5":"2013-12-12T13:58:39.390Z","0.4.6":"2013-12-12T14:01:37.916Z","0.4.7":"2013-12-18T10:17:51.839Z","0.5.0":"2014-01-05T07:28:08.764Z"},"author":{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com","url":"http://www.novadiscovery.com/"},"repository":{"type":"git","url":"git://github.com:nopnop/grunt-transfo.git"}}