{"_id":"@667/grunt-processhtml","_rev":"3-2907bbb1ec7c1ec27a4c42b6c6746818","name":"@667/grunt-processhtml","dist-tags":{"latest":"0.4.5"},"versions":{"0.4.2":{"name":"@667/grunt-processhtml","description":"Process html files at build time to modify them depending on the release environment","version":"0.4.2","homepage":"https://github.com/dciccale/grunt-processhtml","author":{"name":"Denis Ciccale","email":"dciccale@gmail.com","url":"http://twitter.com/tdecs"},"repository":{"type":"git","url":"git://github.com/dciccale/grunt-processhtml.git"},"bugs":{"url":"https://github.com/dciccale/grunt-processhtml/issues"},"licenses":[{"type":"MIT","url":"https://github.com/dciccale/grunt-processhtml/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt --verbose"},"dependencies":{"async":"^1.5.2","htmlprocessor":"^0.2.4","lodash":"^4.17.5"},"devDependencies":{"grunt":"^1.0.1","grunt-contrib-jshint":"^1.0.0","grunt-contrib-nodeunit":"^1.0.0","grunt-release":"^0.13.0"},"keywords":["process","html","index","build","buildtime","environment","target","optimize","gruntplugin"],"gitHead":"14bf674aa40b5135d55581837603dcb664385d7a","_id":"@667/grunt-processhtml@0.4.2","_nodeVersion":"14.5.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-xWtD3jTjDIf1C/4E9G5wBP8lQwdrv9meEcHe6SUxtGUq7bQvNS/sARnFcK0NwbMeVRzm12GPhf4oPDUypoE5Yg==","shasum":"ce8a6a89a7ec90a97646f62217fb5bc37ce65445","tarball":"https://registry.npmjs.org/@667/grunt-processhtml/-/grunt-processhtml-0.4.2.tgz","fileCount":5,"unpackedSize":25071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaiXLCRA9TVsSAnZWagAAjLYP/0PfkiJ4qXPqknqd34hV\nmQrL34cn8Arv8ZDHIMUJ9YFv4X4X418SOyST4dpPFSzvb1SpAYrzMFa+QmUW\nZxvsVtzrzV3EPsrZvKaXXLHMA1fAxz8L5lCfH/3SvGBUmTUFH8tq+9YMT3fW\n1YJudb3EdpYFtGdGwCxm1y4kgDh4U0juS/M19rLB9/7MybOtNayO08/a9vrE\naPM+uVah3TpRaluRvpWYXMnoup0ipSQPgKMjU4Jm+vJeBgqkXF05jcNFGEwL\n1mJ0nIjU10E9W4eRz3JpfvcGQHgdPsg5uTKBz/aQt9gGyZ6m1wSsbpA5SJ98\nld+OTxT6tfBudfdYN2Wj0EanxpWyk4N9QikO2d5xC5Tooxv7r8yZXdTcgm/p\nxGbWZcp32El+HzmoSO++cHYJty73yr304GJoFBDEiaUBwJKAmnbiswa80n2R\n/I4ajXTT2/gRcEvAntggGBO3XD6DY1cpx68Nq7is3BmI2z3Mq01ThlaoU6Cl\nfXHz0DiCzXapQ5RWJnIjD+HhcXg4meMlxzn+lDKGSRrUSc5ZG3Cn5RPVvOa0\nGc8duiAlKCLP1SM6T4hbOZAyfB4MolkvzGqbw9u8Stv+PcjsKDp9W7bUPT3n\n/5aspQBfGyiS7TY7OsdzTIVdMnrsr1164o/rSBOVqkWCa1j9ODsieQB2/zCe\neK0J\r\n=bXqk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOvj5q1RbqSU0Eini6/MOfH7C9/lFzH8LAGuN3aahDFgIgRTfko+nTlmYHtWkFKfzPbtM/M+hIzYE90NTD2CkBJVs="}]},"maintainers":[{"name":"667","email":"667@june07.com"}],"_npmUser":{"name":"667","email":"667@june07.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-processhtml_0.4.2_1600792010945_0.3381285775824012"},"_hasShrinkwrap":false},"0.4.3":{"name":"@667/grunt-processhtml","description":"Process html files at build time to modify them depending on the release environment","version":"0.4.3","homepage":"https://github.com/dciccale/grunt-processhtml","author":{"name":"Denis Ciccale","email":"dciccale@gmail.com","url":"http://twitter.com/tdecs"},"repository":{"type":"git","url":"git://github.com/dciccale/grunt-processhtml.git"},"bugs":{"url":"https://github.com/dciccale/grunt-processhtml/issues"},"licenses":[{"type":"MIT","url":"https://github.com/dciccale/grunt-processhtml/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt --verbose"},"dependencies":{"async":"^1.5.2","htmlprocessor":"^0.2.4","lodash":"^4.17.5"},"devDependencies":{"grunt":"^1.0.1","grunt-contrib-jshint":"^1.0.0","grunt-contrib-nodeunit":"^1.0.0","grunt-release":"^0.13.0"},"keywords":["process","html","index","build","buildtime","environment","target","optimize","gruntplugin"],"gitHead":"bdbd6d1087552a4a1fbbf1bd2a5a5b2bdef1a296","_id":"@667/grunt-processhtml@0.4.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-JJELqst+0lSwsG0t5v8sdo17wjWOy+TG+pz9ZNKGMDuzaRIvG12QGU2GMV4rk6Um4FN52t4InBFBOF7XC9RXeA==","shasum":"83ac7b7605327a3a67b3d87f5b9041845a4ca73b","tarball":"https://registry.npmjs.org/@667/grunt-processhtml/-/grunt-processhtml-0.4.3.tgz","fileCount":6,"unpackedSize":25526,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfai5VCRA9TVsSAnZWagAATHsP/3xw7SoBoRakgPhm/u19\n6OmeMuiG89dyvkfViSjh6GWbwcDDPBybLbRbZfXbUXmMg63oFa71UUMutGW6\ndkrNOvTT9SgcuF9na5/o1LLIWY4BaIzfWBw0hUwOQDsL24SxZ2Kfvbp1YokD\nQTpftpm1t6XkodVHeUF2PVNDwEkRctIpVI+suGDyXhc5h0Qdx6JNYzcR6LFb\nN3EI4/yq6dnMMsJry4DaVMz35BSNCnhP4S1PoXOD7g/BEbV6nARiJAOSO3Qy\nKacaLRL3yfaxWEe76sAX70JotTXQWELKU6Z8uEOm/Oh8W/cV1UxciIHxpDbt\nHqxooG0BYOECSQAC3y4sNo5dN9OAKNTrSLunvHKGN9JfTzn2B1dLELTJ2DQn\ny2KwQtabfPwm2jxzJE6u0JZ3pPKspGAY2N1fYFP/dUA6E3NTobgcEnz23+A0\nOYFH1Ir5+Gu/i6dnnzjcwOLgU8UDxhk7YyIEjvbOs80Qa61MyVeNs6pEAsCQ\ng3lPGdcea6o94kxzcI28Tu+Gj9XqZxyMi4Y+FP9OsYJMiZkXPOnk6cJY3Ozk\nXI/eoK6hn5DLS/6f9Ymtezos+hD3IBMWeCAntQllLN417ZUj1jKGELprRMce\n9AoT7HQHlpDFHZ/OrGZWISnzPSHr2U9EbxSpqof6j54UV+al+qsplLS97+by\nBbUv\r\n=N0T+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+QbiCV3TrVT+7CWju1wjUgY5mKPeGIs0K8AuaMG6LQQIgO9OtHEgsLEhcl/iI10zivZhRJyoA3TJSw91eIaQKVWk="}]},"maintainers":[{"name":"667","email":"667@june07.com"}],"_npmUser":{"name":"667","email":"667@june07.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-processhtml_0.4.3_1600794196588_0.6124966897732897"},"_hasShrinkwrap":false},"0.4.5":{"name":"@667/grunt-processhtml","description":"Process html files at build time to modify them depending on the release environment","version":"0.4.5","homepage":"https://github.com/dciccale/grunt-processhtml","author":{"name":"Denis Ciccale","email":"dciccale@gmail.com","url":"http://twitter.com/tdecs"},"repository":{"type":"git","url":"git://github.com/dciccale/grunt-processhtml.git"},"bugs":{"url":"https://github.com/dciccale/grunt-processhtml/issues"},"licenses":[{"type":"MIT","url":"https://github.com/dciccale/grunt-processhtml/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt --verbose"},"dependencies":{"async":"^1.5.2","htmlprocessor":"^0.2.4","lodash":"^4.17.20"},"devDependencies":{"grunt":"^1.3.0","grunt-contrib-jshint":"^1.0.0","grunt-contrib-nodeunit":"^2.1.0"},"keywords":["process","html","index","build","buildtime","environment","target","optimize","gruntplugin"],"gitHead":"dd701ab57868af77583d20419aa8a15d455198f5","_id":"@667/grunt-processhtml@0.4.5","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+rqRMPvfSyNbpsBFBWA+u+UdQbW2fgHwQeb9yeP7wL1sol4MLa3EDRR1vuI2ZeRFie9xYkwoacvrNec/apfxpQ==","shasum":"6c6351caf5e884007a76092e50c13af65a0c8775","tarball":"https://registry.npmjs.org/@667/grunt-processhtml/-/grunt-processhtml-0.4.5.tgz","fileCount":6,"unpackedSize":25456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfajQrCRA9TVsSAnZWagAAy/4QAIPfoG95hyjjr4wQGsT0\nW5L27EG4GxTOG/XFEZfKH4+35cE2rFgcChCktBd/qbEFlMPw43VB72h8Iidn\nOk1P/QwEDb584d/OSxkulXNzK5MvRObqe6SdsfXVJZ8WdAVDd3vQ7674OfW4\nnfqfoKb/0AOhnzPjPTZlgXg7i/Ms8wM3rZhhP/UFJinK9MGV+yD5XqeV+oSb\n17mn+udVg1wfsDY707av5a/2ljSbcuafDNIA8Q2mu4czwV6f4cY7I38Oj9QK\nWXLvqwe++wFlTIJGPx3ykna8DotfANb7aaUArMZJBJzfZqbkWdMu2Am8rUGO\n5Aq4X6vgRc8VWG3CTbpoVFOsnLUrk2/5neRsJUqXY8v3wFlP7G0OdeUgTWAk\n+84nznvF4y6Ej456XXHRIrsEJovOryffmxZNcgwjxuCb0SAaHoMXCbQdk9VX\nQhWE28wHPSBQJ1ldh2a1UXbiOaVFN5wUN06lRIYN7LK0cHFo7Lo386bOi6aj\njQEQGHLae6gstPkYLmhdMuRyRyHhSwr5sIDtkRrq9oj3Ub4tYsvAVA02NIcF\n4ntjh6YL5q3XNVrGG97P0ppHeVYZ/pLz8Il6oLM2pTR7xLHgFoYW1D3CVTA6\nO0BXSYHE2wc+4EQ4DvZ+ufp7nEbTdkAiak1CFxI3U4WcqOHOxw8qxaWJmq54\noLky\r\n=zOqq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+l8sKK5WWAJvW7a7cFIFSVYCZ1m30O9j9ixftCPy0vAIhAIvuXKKHzOtheZ3V/+PBSKSvMibkdMqOsED7oU9r4plq"}]},"maintainers":[{"name":"667","email":"667@june07.com"}],"_npmUser":{"name":"667","email":"667@june07.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grunt-processhtml_0.4.5_1600795690832_0.3380014798924922"},"_hasShrinkwrap":false}},"time":{"created":"2020-09-22T16:26:50.883Z","0.4.2":"2020-09-22T16:26:51.129Z","modified":"2022-04-04T10:48:48.777Z","0.4.3":"2020-09-22T17:03:16.732Z","0.4.5":"2020-09-22T17:28:10.998Z"},"maintainers":[{"name":"667","email":"667@june07.com"}],"description":"Process html files at build time to modify them depending on the release environment","homepage":"https://github.com/dciccale/grunt-processhtml","keywords":["process","html","index","build","buildtime","environment","target","optimize","gruntplugin"],"repository":{"type":"git","url":"git://github.com/dciccale/grunt-processhtml.git"},"author":{"name":"Denis Ciccale","email":"dciccale@gmail.com","url":"http://twitter.com/tdecs"},"bugs":{"url":"https://github.com/dciccale/grunt-processhtml/issues"},"readme":"# grunt-processhtml\n\n[![NPM version](https://img.shields.io/npm/v/grunt-processhtml.svg)](https://www.npmjs.com/package/grunt-processhtml)\n[![Build Status](https://api.travis-ci.org/dciccale/grunt-processhtml.svg)](https://travis-ci.org/dciccale/grunt-processhtml)\n[![NPM downloads](https://img.shields.io/npm/dm/grunt-processhtml.svg)](https://www.npmjs.com/package/grunt-processhtml)\n\n[![Join the chat at https://gitter.im/dciccale/grunt-processhtml](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dciccale/grunt-processhtml?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\n> Process html files at build time to modify them depending on the release environment\n\n### Looking for the stand-alone version?\n\nUse [node-htmlprocessor](https://github.com/dciccale/node-htmlprocessor)\n\n## Getting Started\nThis plugin requires Grunt `^1.0.1`\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-processhtml --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-processhtml');\n```\n\n## The \"processhtml\" task\n\nProcess `html` files with special comments:\n\n```html\n<!-- build:<type>[:target] [inline] [value] -->\n...\n<!-- /build -->\n```\n\n##### type\nThis is required.\n\nTypes: `js`, `css`, `remove`, `template`, `include` or any html attribute if written like this: `[href]`, `[src]`, etc.\n\n##### target\nThis is optional.\n\nIs the target name of your grunt task, for example: `dist`. Is supported for all types, so you can always specify the target if needed.\n\nYou can pass multiple comma-separated targets, e.g. `<!-- build:remove:dist,dev,prod -->` and block will be parsed for each.\n\n##### inline\nThis modifier can be used with `js` and `css` types.\n\nIf used, the styles or scripts will be included in the output html file.\n\n##### value\nRequired for types: `js`, `css`, `include` and `[attr]`.\n\nOptional for types: `remove`, `template`, `js` and `css` types with `inline` modifier.\n\nCould be a file name: `script.min.js` or a path if an attribute like `[src]` is specified to keep the original file name intact but replace its path.\n\n### Simple examples\n\n##### `build:js[:targets] [inline] <value>`\n\nReplace many script tags into one.\n\n`[:targets]` Optional build targets.\n\n`inline` Optional modifier.\n\n`<value>` Required value: A file path.\n\n```html\n<!-- build:js app.min.js -->\n<script src=\"my/lib/path/lib.js\"></script>\n<script src=\"my/deep/development/path/script.js\"></script>\n<!-- /build -->\n\n<!-- changed to -->\n<script src=\"app.min.js\"></script>\n```\n\nYou can embed your javascript:\n\n```html\n<!-- build:js inline app.min.js -->\n<script src=\"my/lib/path/lib.js\"></script>\n<script src=\"my/deep/development/path/script.js\"></script>\n<!-- /build -->\n\n<!-- changed to -->\n<script>\n  // app.min.js code here\n</script>\n```\n\nor\n\n```html\n<!-- build:js inline -->\n<script src=\"my/lib/path/lib.js\"></script>\n<script src=\"my/deep/development/path/script.js\"></script>\n<!-- /build -->\n\n<!-- changed to -->\n<script>\n  // my/lib/path/lib.js code here then...\n  // my/deep/development/path/script.js code goes here\n</script>\n```\n\n##### `build:css[:targets] [inline] <value>`\n\nReplace many stylesheet link tags into one.\n\n`[:targets]` Optional build targets.\n\n`inline` Optional modifier.\n\n`<value>` Required value: A file path.\n\n```html\n<!-- build:css style.min.css -->\n<link rel=\"stylesheet\" href=\"path/to/normalize.css\">\n<link rel=\"stylesheet\" href=\"path/to/main.css\">\n<!-- /build -->\n\n<!-- changed to -->\n<link rel=\"stylesheet\" href=\"style.min.css\">\n```\n\nYou can embed your styles like with `js` type above:\n\n```html\n<!-- build:css inline -->\n<link rel=\"stylesheet\" href=\"path/to/normalize.css\">\n<link rel=\"stylesheet\" href=\"path/to/main.css\">\n<!-- /build -->\n\n<!-- changed to -->\n<style>\n  /* path/to/normalize.css */\n  /* path/to/main.css */\n</style>\n```\n\nor\n\n```html\n<!-- build:css inline style.min.css -->\n<link rel=\"stylesheet\" href=\"path/to/normalize.css\">\n<link rel=\"stylesheet\" href=\"path/to/main.css\">\n<!-- /build -->\n\n<!-- changed to -->\n<style>\n  /* style.min.css */\n</style>\n```\n\n##### `build:<[attr]>[:targets] <value>`\n\nChange the value of an attribute. In most cases using `[src]` and `[href]` will be enough but it works with any html attribute.\n\n`<[attr]>` Required html attribute, i.e. `[src]`, `[href]`.\n\n`[:targets]` Optional build targets.\n\n`<value>` Required value: A path, a file path or any string value\n\n```html\n<!-- If only a path is used, the original file name will remain -->\n\n<!-- build:[src] js/ -->\n<script src=\"my/lib/path/lib.js\"></script>\n<script src=\"my/deep/development/path/script.js\"></script>\n<!-- /build -->\n\n<!-- changed the src attribute path -->\n<script src=\"js/lib.js\"></script>\n<script src=\"js/script.js\"></script>\n\n<!-- build:[href] img/ -->\n<link rel=\"apple-touch-icon-precomposed\" href=\"skins/demo/img/icon.png\">\n<link rel=\"apple-touch-icon-precomposed\" href=\"skins/demo/img/icon-72x72.png\" sizes=\"72x72\">\n<!-- /build -->\n\n<!-- changed the href attribute path -->\n<link rel=\"apple-touch-icon-precomposed\" href=\"img/icon.png\">\n<link rel=\"apple-touch-icon-precomposed\" href=\"img/icon-72x72.png\" sizes=\"72x72\">\n\n<!-- build:[class]:dist production -->\n<html class=\"debug_mode\">\n<!-- /build -->\n\n<!-- this will change the class to 'production' only when the 'dist' build is executed -->\n<html class=\"production\">\n\n```\n\n##### `build:include[:targets] <value>`\n\nInclude an external file.\n\n`[:targets]` Optional build targets.\n\n`<value>` Required value: A file path.\n\n```html\n<!-- build:include header.html -->\nThis will be replaced by the content of header.html\n<!-- /build -->\n\n<!-- build:include:dev dev/content.html -->\nThis will be replaced by the content of dev/content.html\n<!-- /build -->\n\n<!-- build:include:dist dist/content.html -->\nThis will be replaced by the content of dist/content.html\n<!-- /build -->\n```\n\n##### `build:template[:targets]`\n\nProcess a template block with a data object inside [options.data](#optionsdata).\n\n`[:targets]` Optional build targets.\n\n\n```html\n<!-- build:template\n<p>Hello, <%= name %></p>\n/build -->\n\n<!--\nnotice that the template block is commented\nto prevent breaking the html file and keeping it functional\n-->\n```\n\n##### `build:remove[:targets]`\n\nRemove a block.\n\n`[:targets]` Optional build targets\n\n```html\n<!-- build:remove -->\n<p>This will be removed when any processhtml target is done</p>\n<!-- /build -->\n\n<!-- build:remove:dist -->\n<p>But this one only when doing processhtml:dist target</p>\n<!-- /build -->\n```\n\n### Overview\nIn your project's Gruntfile, add a section named `processhtml` to the data object passed into `grunt.initConfig()`.\n\n```js\ngrunt.initConfig({\n  processhtml: {\n    options: {\n      // Task-specific options go here.\n    },\n    your_target: {\n      // Target-specific file lists and/or options go here.\n    },\n  },\n})\n```\n\n### Options\n\n#### options.process\nType: `Boolean`\nDefault value: `false`\n\nProcess the entire `html` file through `grunt.template.process`, a default object with the build target will be passed to the\ntemplate in the form of `{environment: target}` where environment will be the build target of the grunt task.\n\n*Important note: The `process` option is not needed if you don't want to process the entire html file. See the example\nbelow to see that you can have templates blocks to be processed.*\n\nIf you do want to process the whole file as a template, it will be compiled after compiling the inside template blocks\nif any.\n\n#### options.environment\nType: `Object`\nDefault value: `target`\n\nThe environemnt variable will be available to use in the comments, it defaults to the task target.\n\n#### options.data\nType: `Object`\nDefault value: `{}`\n\nAn object `data` that is passed to the `html` file used to compile all template blocks and the entire file if `process`\nis true.\n\n#### options.templateSettings\nType: `Object`\nDefault value: `null` (Will use default lodash template delimiters `<%` and `%>`)\n\nDefine the `templateSettings` option with lodash [templateSettings](http://lodash.com/docs#templateSettings) options to customize the\ntemplate syntax.\n\n```javascript\ntemplateSettings: {\n  interpolate: /{{([\\s\\S]+?)}}/g // mustache\n}\n```\n\n#### options.includeBase\nType: `String`\nDefault value: `null` (Will use the path of the including file)\n\nSpecify an optional path to look for include files. ie, `app/assets/includes/`\n\n#### options.commentMarker\nType: `String`\nDefault value: `build`\n\nSpecify the word used to indicate the special begin/end comments.  This is useful if you want to use this plugin\nin conjunction with other plugins that use a similar, conflicting `build:<type>` comment\n(such as [grunt-usemin](https://github.com/yeoman/grunt-usemin)).\n\nWith `options.commentMarker` set to `process`, a typical comment would look like:\n\n```html\n<!-- process:<type>[:targets] [value] -->\n...\n<!-- /process -->\n```\n\n#### options.strip\nType: `Boolean`\nDefault value: `null`\n\nSpecifying `true` will strip comments which do not match the current target:\n\n```javascript\nstrip: true\n```\n\n#### options.recursive\nType: `Boolean`\nDefault value: `false`\n\nRecursively process files that are being included using `build:include`.\n\n```javascript\nrecursive: true\n```\n\n#### options.customBlockTypes\nType: `Array`\nDefault value: `[]`\n\nDefine an array of `.js` files that define custom block types.\n\n```javascript\ncustomBlockTypes: ['custom-blocktype.js']\n```\n\nA custom block type example:\n\n`custom-blocktype.js`\n\n```js\n'use strict';\n\nmodule.exports = function (processor) {\n  // This will allow to use this <!-- build:customBlock[:target] <value> --> syntax\n  processor.registerBlockType('customBlock', function (content, block, blockLine, blockContent) {\n    var title = '<h1>' + block.asset + '</h1>';\n    var result = content.replace(blockLine, title);\n\n    return result;\n  });\n};\n```\n\n`file.html`\n\n```html\n<!-- build:customBlock myValue -->\n<p>This will be replaced with the result of the custom block above</p>\n<!-- /build -->\n```\n\nThe result will be\n\n```html\n<h1>myValue</h1>\n```\n\n\n### Usage Examples\n\n#### Default Options\nSet the task in your grunt file which is going to process the `index.html` file and save the output to\n`dest/index.html`\n\n```js\ngrunt.initConfig({\n  processhtml: {\n    options: {\n      data: {\n        message: 'Hello world!'\n      }\n    },\n    dist: {\n      files: {\n        'dest/index.html': ['index.html']\n      }\n    }\n  }\n});\n```\n\n#### What will be processed?\nFollowing the previous task configuration, the `index.html` could look like this:\n\n```html\n<!doctype html>\n<title>title</title>\n\n<!-- build:[href] img/ -->\n<link rel=\"apple-touch-icon-precomposed\" href=\"my/theme/img/apple-touch-icon-precomposed.png\">\n<link rel=\"apple-touch-icon-precomposed\" href=\"my/theme/img/apple-touch-icon-72x72-precomposed.png\" sizes=\"72x72\">\n<!-- /build -->\n\n<!-- build:css style.min.css -->\n<link rel=\"stylesheet\" href=\"normalize.css\">\n<link rel=\"stylesheet\" href=\"main.css\">\n<!-- /build -->\n\n<!-- build:js app.min.js -->\n<script src=\"js/libs/require.js\" data-main=\"js/config.js\"></script>\n<!-- /build -->\n\n<!-- build:include header.html -->\nThis will be replaced by the content of header.html\n<!-- /build -->\n\n<!-- build:template\n<p><%= message %></p>\n/build -->\n\n<!-- build:remove -->\n<p>This is the html file without being processed</p>\n<!-- /build -->\n```\n\nAfter processing this file, the output will be:\n\n```html\n<!doctype html>\n<title>title</title>\n\n<link rel=\"apple-touch-icon-precomposed\" href=\"img/apple-touch-icon-precomposed.png\">\n<link rel=\"apple-touch-icon-precomposed\" href=\"img/apple-touch-icon-72x72-precomposed.png\" sizes=\"72x72\">\n\n<link rel=\"stylesheet\" href=\"style.min.css\">\n\n<script src=\"app.min.js\"></script>\n\n<h1>Content from header.html</h1>\n\n<p>Hello world!</p>\n```\n\n#### Advanced example\nIn this example there are multiple targets where we can process the html file depending on which target is being run.\n\n```js\ngrunt.initConfig({\n  processhtml: {\n    dev: {\n      options: {\n        data: {\n          message: 'This is development environment'\n        }\n      },\n      files: {\n        'dev/index.html': ['index.html']\n      }\n    },\n    dist: {\n      options: {\n        process: true,\n        data: {\n          title: 'My app',\n          message: 'This is production distribution'\n        }\n      },\n      files: {\n        'dest/index.html': ['index.html']\n      }\n    },\n    custom: {\n      options: {\n        templateSettings: {\n          interpolate: /{{([\\s\\S]+?)}}/g // mustache\n        },\n        data: {\n          message: 'This has custom template delimiters'\n        }\n      },\n      files: {\n        'custom/custom.html': ['custom.html']\n      }\n    }\n  }\n});\n```\n\nThe `index.html` to be processed (the `custom.html` is below):\n\n```html\n<!doctype html>\n<!-- notice that no special comment is used here, as process is true.\nif you don't mind having <%= title %> as the title of your app\nwhen not being processed; is a perfectly valid title string -->\n<title><%= title %></title>\n\n<!-- build:css style.min.css -->\n<link rel=\"stylesheet\" href=\"normalize.css\">\n<link rel=\"stylesheet\" href=\"main.css\">\n<!-- /build -->\n\n<!-- build:template\n<p><%= message %></p>\n/build -->\n\n<!-- build:remove -->\n<p>This is the html file without being processed</p>\n<!-- /build -->\n\n<!-- build:remove:dist -->\n<script src=\"js/libs/require.js\" data-main=\"js/config.js\"></script>\n<!-- /build -->\n\n<!-- build:template\n<% if (environment === 'dev') { %>\n<script src=\"app.js\"></script>\n<% } else { %>\n<script src=\"app.min.js\"></script>\n<% } %>\n/build -->\n```\n\nThe `custom.html` to be processed:\n\n```html\n<!doctype html>\n<html>\n  <head>\n    <title>Custom template delimiters example</title>\n  </head>\n\n  <body>\n    <!-- build:template\n    {{ message }}\n    /build -->\n  </body>\n</html>\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- 0.4.1 node-htmlprocessor@0.2.4\n- 0.4.0 Update Grunt to 1.0\n- 0.3.13 node-htmlprocessor@0.2.3 and clone data object (#85)\n- 0.3.12 Update [node-htmlprocessor](https://github.com/dciccale/node-htmlprocessor) to version 0.2.2 (escape regex from remove)\n- 0.3.11 [get ready for grunt v1.0.0](https://github.com/gruntjs/grunt-docs/blob/master/Blog-2016-02-11-Grunt-1.0.0-rc1-released.md#peer-dependencies)\n- 0.3.10 Update [node-htmlprocessor](https://github.com/dciccale/node-htmlprocessor) to version 0.2.1\n- 0.3.9 Update [node-htmlprocessor](https://github.com/dciccale/node-htmlprocessor) to version 0.2.0\n- 0.3.8 Fix #74\n- 0.3.7 Update [node-htmlprocessor](https://github.com/dciccale/node-htmlprocessor) dependency with added `inline` modifier\n- 0.3.6 Update node-htmlprocessor version and add specific test for templates\n- 0.3.5 Fixes issue when passing data to a `template`\n- 0.3.4 Fixes issue when passing a path te replace an `[attr]`\n- 0.3.3 Add [node-htmlprocessor](https://github.com/dciccale/node-htmlprocessor) as a dependency\n- 0.3.2 Fix/feature #39\n- 0.3.1 Fix #35\n- 0.3.0 Allow creating custom block types.\n- 0.2.9 Added `recursive` option\n- 0.2.8 Changed `include` to not use `replace()`\n- 0.2.7 Added `commentMarker` option\n- 0.2.6 Fix #14 and added grunt-release\n- 0.2.5 Create first tag using grunt-release\n- 0.2.3 Fix #8\n- 0.2.2 Small code refactor\n- 0.2.1 Added `templateSettings` option tu customize template delimiters\n- 0.2.0 Added the `build:include` feature to include any external file\n- 0.1.1 Lint js files inside tasks/lib/\n- 0.1.0 Initial release\n","readmeFilename":"README.md"}