{"_id":"gulp-htmlincluder","_rev":"77-1003cc5479ba5313ee0a2927bd3b4371","name":"gulp-htmlincluder","description":"Gulp plugin for building files into each other.","dist-tags":{"latest":"2.2.4","beta":"2.0.1"},"versions":{"0.0.1":{"name":"gulp-htmlincluder","version":"0.0.1","description":"Gulp plugin for building HTML files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"through2":"*","gulp-util":"~2.2.0"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"_id":"gulp-htmlincluder@0.0.1","dist":{"shasum":"5c5ab6154acbb706ef0766065fb23f5d79b636b3","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-0.0.1.tgz","integrity":"sha512-/PkUgjjM5LzGRjkVir/Knrwuc8aU1hBLrjIKTh7L+2WdqR5MsOUqaYEfdJa6id5Zm99pthVqhMZ0s8JJo8ipVg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGEr3lmEkI5xgI3mT/ASCi9jk0PghS76C4hLj1GLzjXlAiEA2yrC11uYn8VPLYF+9RbRfT7JWVASpWnqcEgNpi6MVY0="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{}},"0.0.2":{"name":"gulp-htmlincluder","version":"0.0.2","description":"Gulp plugin for building HTML files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"through2":"*","gulp-util":"~2.2.0"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"_id":"gulp-htmlincluder@0.0.2","dist":{"shasum":"786aa9feb98d668e280ae6ba5e921f9347efa2e1","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-0.0.2.tgz","integrity":"sha512-+i9zC1mb1J7UwyiWzQSL1iDY/8VyhQFTeMPCsa+9RQnerMwxqSliHwIqeZMemD7xFIr/+aqyrXJmExbNseIr1Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDRPL6hC3Pz7M/SX0JciVvLwgJus+Bh9kOZ0QnVDVPbWAiBk0CR+wqxWz2e0qwvKad2XVowrCT0ITOb3MiQYz76eKw=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{}},"0.0.3":{"name":"gulp-htmlincluder","version":"0.0.3","description":"Gulp plugin for building HTML files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"through2":"*","gulp-util":"~2.2.0"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"_id":"gulp-htmlincluder@0.0.3","dist":{"shasum":"da9ddd2e0685f6dde3674353ec85fa7a68d54438","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-0.0.3.tgz","integrity":"sha512-GyJSet88ZbTuPoT9dot5YfuvJx0NL0DLxyjgRcD3vPIRHzxov4VmmijJ9tB2f4V11fdbdHnPfCZ94OCVEZayPg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2LsKPxHoF0qwjzG6GCD6Oewc9xdung0fH4JIUGwvS/QIhAMV7yw8X6vvwme2rVvh9O1R+rJaNRnzc7cPDuh84h14K"}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{}},"0.0.4":{"name":"gulp-htmlincluder","version":"0.0.4","description":"Gulp plugin for building HTML files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"through2":"*","gulp-util":"~2.2.0"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"_id":"gulp-htmlincluder@0.0.4","dist":{"shasum":"a2731553106d0b8a584aa2edc74486fcf195ef18","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-0.0.4.tgz","integrity":"sha512-NRxB/s8T3n7Dn2+Yp7EWerYf4KSFP6VAO1DtJMAWWdMqM16rgSdEX0TRS9Cd7qx1pGQcDKYpQNO/a7r+NxctoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoeen8kVWHfLvYwMUFPEsLblD7+dHrAwYijSaK4e55aQIgZ+qXL3NNYux/MFhCNJYsiEGdokeKiMFjQPTKQXIsji4="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{}},"0.0.5":{"name":"gulp-htmlincluder","version":"0.0.5","description":"Gulp plugin for building HTML files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"through2":"*","gulp-util":"~2.2.0"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"_id":"gulp-htmlincluder@0.0.5","dist":{"shasum":"46272428d7a6e8dd5da14507c79546bb65dddf55","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-0.0.5.tgz","integrity":"sha512-sckZqY+mCrGfJ8hohZ2cL34WATX4N2KYIunDMIMYH5XjOzCVQumY5RNNhyb1DuClc2E3XzfznTYWtGMKZ1h2Sw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHFJ6607KS8m7N4IHDfNh0Wg5NGwhFYDu7QYnjF8y7FQIgIt1dXszB0L638GeHJdAle8HM5jJVMw9FE7z2g6Y733I="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{}},"0.0.6":{"name":"gulp-htmlincluder","version":"0.0.6","description":"Gulp plugin for building HTML files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"through2":"*","gulp-util":"~2.2.0"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"_id":"gulp-htmlincluder@0.0.6","dist":{"shasum":"ff16e5cdcd521e1699f8806cd4939df9fa775681","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-0.0.6.tgz","integrity":"sha512-QnyXmie5OPEekxX28Pwm+jDJoZUZu4KHAStqf6N9W/MLmUXhc0vUCMsTe1kGO9fZ3Rd6TQqUBFsjlR3dunn6IA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDahefGKgWDTewopuctQRiTebN7gPi+3RvZmoL9o9/WcAiEA9mQNSo9cFsj9SDg2eBcS7yOXgcUDJr8CJU7ncqPPYo0="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{}},"0.0.7":{"name":"gulp-htmlincluder","version":"0.0.7","description":"Gulp plugin for building HTML files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"through2":"*","gulp-util":"~2.2.0"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"_id":"gulp-htmlincluder@0.0.7","dist":{"shasum":"2943fe69c5f1b60962f1682c2090816ff8288c0f","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-0.0.7.tgz","integrity":"sha512-pJ6pPRreq+XqQwL2IcItUVufCHAsIy/Re3DAWOJAD0vrS8I6evdR2uppmtjPMjgozksq2+VOxl7CckSn8TjKhg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBG9AtXKZMrdGu4SdY2r8EnT4vZX9cUldg69XhjiG8xIAiEAySRMOeIYFAukpdpDA1bAbIy0bcB8syVIlT9eQmwtqLI="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{}},"0.0.8":{"name":"gulp-htmlincluder","version":"0.0.8","description":"Gulp plugin for building HTML files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"through2":"*","gulp-util":"~2.2.0"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"_id":"gulp-htmlincluder@0.0.8","dist":{"shasum":"5397948ae657be257c7d910b202c464b3d94d526","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-0.0.8.tgz","integrity":"sha512-fFawJk09BfcAC4PCFN9ziASCCQK3b16ghAGr47Y+4xaOxpDQcNe9IZXfAG00DZiRLXZ6zNov10gTJP1S0bCiJw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHdblmbakZU446APA8HysPbQCZOULwrX+293X/BBVDDfAiAu6LwmAtmUIiUcSrr+GTJA41DMrKvFqNwlNJpcpqQvTQ=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{}},"0.0.9":{"name":"gulp-htmlincluder","version":"0.0.9","description":"Gulp plugin for building HTML files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"through2":"*","gulp-util":"~2.2.0"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"_id":"gulp-htmlincluder@0.0.9","dist":{"shasum":"eeb46ad14a601259ef2333702ca6fd0af434ea3d","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-0.0.9.tgz","integrity":"sha512-ppMfPJwa6Hmm/Sm24F+wFWIjD5uGApA/c91m8hC4xxqmja+F3fYIj5LhkQSV8QJ3r8NBCqJs9MEmnmtrapXk7A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICSgxt/hKoJmyoT73DmQ3RxwpcvXW1+WIz3SqjNF9ADUAiEAsCgcdOpeQcP53xPbbe7GxDMjzeo1T+1ZbcdwDfWO0bg="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{}},"0.1.0":{"name":"gulp-htmlincluder","version":"0.1.0","description":"Gulp plugin for building HTML files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"through2":"*","gulp-util":"~2.2.0"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"gitHead":"d81d2fd854f6a297e433663cf9c8ffbeb963cd1e","_id":"gulp-htmlincluder@0.1.0","_shasum":"71c0893985c8c84111e6f39b5dc6e03d63fe4909","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"dist":{"shasum":"71c0893985c8c84111e6f39b5dc6e03d63fe4909","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-0.1.0.tgz","integrity":"sha512-dmTOkUOlO8LFZEqKE48UJ4oGqSL5JuUKutnXIPDWyuwnY67SqccoNs9ZpkuD3lWcGNT82GM4JyZVg6mqEPyRsA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTk+StKO2elKExQDEkTQExKqFH2pgKkw1MDlGqErHt/QIhAJPV+HFRHDIJdrWQp1u3eGyVwGHQsFDUPYN3sjjdTBS7"}]},"directories":{}},"1.0.0":{"name":"gulp-htmlincluder","version":"1.0.0","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"gitHead":"fb30ca5b3a095fd38c84b29b65151d8e5cdeee1c","_id":"gulp-htmlincluder@1.0.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-eq9eUeen4DknsiTpj66aa9tLBob1j1va91rxDrOHD3lBIfts4pp8ZtEmvFonUPS7iA+7FxjZPRpdLVjpDnvWEg==","shasum":"efec24a75be95a5bc99843cff6ba74fbbf551c01","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNXHkuQbtJxwUlpG0BLX+vMoFlneDrGg4gLUE2ZZdd6gIhANWM4226fhF+xEtVgXYA1ow0H2C02yoIxYV8x8RaBmSk"}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder-1.0.0.tgz_1510670640735_0.5531509260181338"},"directories":{}},"1.0.1":{"name":"gulp-htmlincluder","version":"1.0.1","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"gitHead":"244b73d4b1080072168231b0e2b17df37b39b16b","_id":"gulp-htmlincluder@1.0.1","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-VgyrmQyQU8zkFOJU1S/DZrPTIdjyzZ12GK6SeBsKrjkRelsryu1OiXafDLbFOPYjJDLYHOukHhDsZputHHSWXQ==","shasum":"538b95ec2984aa4edb7b4c543f0792ae569edcb6","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChgYVQhflRfY3A7CEoICASyfRc+j4G2rFzdMCNoegTzAIhAPHXlfEoSZeWngH7h5GGEUYNgquu9X1YII3LmO2qrSOS"}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder-1.0.1.tgz_1511282204919_0.45447613880969584"},"directories":{}},"1.1.2":{"name":"gulp-htmlincluder","version":"1.1.2","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"gitHead":"490af1945dbb35ce8e3f2cb5d5f1569ddb4e6717","_id":"gulp-htmlincluder@1.1.2","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-4iV+LgwXCiuXGnKncyMXE8qXUL7qIH21Qds1fqPmv20otlBX69+0j5TtfqdrbILicGgQ6fhMGM4Vknj/EB8Oxg==","shasum":"f8783e56d943d2fddb86fdfc6c443c302632f928","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.1.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDUxMkTDiS1jAQuqyoobsPCGGZYBXrQ/FxkiZwVCLpHAIhANcQUES8USO3a0dZ4vdgnvtM+fZKK2ZBAEP28tJ/1xr2"}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder-1.1.2.tgz_1511369542077_0.4522951487451792"},"directories":{}},"1.2.2":{"name":"gulp-htmlincluder","version":"1.2.2","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"gitHead":"221278a72ea6c961cb1bdb32b19ff1748fa06f80","_id":"gulp-htmlincluder@1.2.2","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-StEnx5M+MqReTqkzUnr6L3qWnEZJojT8ZYO4I3xsph4s8ApwcAEJmQVnq/hHRp3a9cXoqs+iZN6IMkAjCWk22w==","shasum":"3b66e5c7235b54c27dcf59717ba4630322c4fcad","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.2.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDa9heCV7WSKSCOJ3tMokuxkepwKQ/Cl/sGDjs+jgJOpwIhAPLU+ievxui0R128eSL3FjFPNZ1OKRobxgXzL6DZLn3O"}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder-1.2.2.tgz_1511393138933_0.657044920604676"},"directories":{}},"1.2.3":{"name":"gulp-htmlincluder","version":"1.2.3","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"gitHead":"e75f0fa222b4f099ff83ed298b89fb1556f5a2f4","_id":"gulp-htmlincluder@1.2.3","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-HaUzSv9SplclGahMWA7PeOulsxTydH8TCKvyeQcYBOPVStRpg+gbHSiXNOE1VgfXNRDZJutWu9npDpCgQHr13Q==","shasum":"7292a4143c92a7ace410ca1032db6cd872328d9d","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.2.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID4tQEPJk6b6nXDpk3g+q6vankFrlchTT45swpiEivKGAiEA5wA8GKiN/Po++W+3aZGJJbRl1M12LwCEmPQPszyL2/c="}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder-1.2.3.tgz_1511408796002_0.20803473889827728"},"directories":{}},"1.2.4":{"name":"gulp-htmlincluder","version":"1.2.4","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"gitHead":"bcee1c35f1689eec19f4287dc3f5d8d318f1295c","_id":"gulp-htmlincluder@1.2.4","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-4O9+cWziTPImOJwVFA8yz3cKYeeez/GqIey1dTpGaYu4qjuT2hxO2BgSgRoV2nkdCVRzeEPnEMdGCmrSa5iuxQ==","shasum":"3506096fe52349d71cce73f1799803d60319b8f5","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.2.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDR11ECVx2H+pMvNJbpEvc4qL31pT07YOI7DFFxzNVzeAiBTJlVfyz6GWjpYf0m4uPuleVTssS5dDAlU6+MWa1ctpw=="}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder-1.2.4.tgz_1511556687797_0.3051823456771672"},"directories":{}},"1.3.4":{"name":"gulp-htmlincluder","version":"1.3.4","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"gitHead":"36e609aa7265d52d17bd33fedb89c59dfd43f25f","_id":"gulp-htmlincluder@1.3.4","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-9JCwzhIbqiUVGtBVdKTa1gXIaSA2fYwEfsq3AQ26aeOXyW5ivco81rlUTe1MUzKDpP+9LvZAHNBalEJkmg2Pvg==","shasum":"416724831b85ac676513f77e37dd7459264d70b8","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.3.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC1RTQLFWmOl/4rS0+woqeAD8XZ/kGWhGt9Mcy3tkfu4AiEA113Zfgdwq6A4sMnXKTid1OirPU5KN57uSvyV3onNbRk="}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder-1.3.4.tgz_1511794692190_0.24352640635333955"},"directories":{}},"1.3.5":{"name":"gulp-htmlincluder","version":"1.3.5","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"gitHead":"e080646e1252c831634f9a2a329e9e731de6c65c","_id":"gulp-htmlincluder@1.3.5","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-/XieCbag2/BWJ9TBr6b7dTaDCEx+XF630HS3TcRLCid0yvMoI5i5RpyH4KqKSb425OwvmeDymx3WbqBBVoiTXQ==","shasum":"c20faf852e6e1522066018b4ac779eace7a316aa","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.3.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLDg/10itiw/M8O/VJRUlVg2BubO/h5S2b/tdEpe3EswIhANzQjm6upoUGsIFS2zXXTCbWex0XASsooNOYRFFlRpYp"}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder-1.3.5.tgz_1512142948784_0.7110698125325143"},"directories":{}},"1.3.6":{"name":"gulp-htmlincluder","version":"1.3.6","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"gitHead":"46329ce09b5b6e8c9a31fbfe30e9e0d6d5097c8b","_id":"gulp-htmlincluder@1.3.6","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-++lNNxxoq3NZcXErL4lBD84XsyfapFp8P4yWbiQUFRburP3Wl+6yJulVSlt96Ts7Xjxe31NVuUUCP6A9+1Knvg==","shasum":"56e7d77851de5acccc150be1bff1858932d344d7","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.3.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaTRmYYO6s6mx0SxKhVeXDCThWtoKBA5YCM6KDnnxHTQIhAPVOVbkVyHhCjJKKMZkrEvRaWW5cCWSJ1yPIJnZ31389"}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder-1.3.6.tgz_1516332151967_0.9175272542051971"},"directories":{}},"1.3.7":{"name":"gulp-htmlincluder","version":"1.3.7","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","email":"internet.erik@gmail.com","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"test":"istanbul test _mocha --report html -- test/*.js --reporter spec","coveralls":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"mocha":"*","coveralls":"*","mocha-lcov-reporter":"*","istanbul":"*","event-stream":"*","should":"~2.1.0"},"engines":{"node":">=0.8.0","npm":">=1.2.10"},"licenses":[{"type":"MIT"}],"gitHead":"1e2817f5cf9bd1cea338d39d88cbd838934aeb98","_id":"gulp-htmlincluder@1.3.7","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-X2nGvZXWmGf/HRz86HRxfyBBCZu+srWwtm/AQRPJC7dcIb6YG1IkFYNAdd9SqIFzcKlqEMuOO+3UQ2m05d3Rog==","shasum":"1754a94bd16fca36b710b151253294058af247d9","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.3.7.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCk4UKyCR7X5czCefF756wokwPDHzDwEdK06/muwvepjgIgaULDdGe5PBl+hhOg3Fqv/afEW3xuE4IFhME03W+eads="}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder-1.3.7.tgz_1516712675559_0.1091392645612359"},"directories":{}},"1.4.7":{"name":"gulp-htmlincluder","version":"1.4.7","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack -p","webpack":"webpack -w"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-env":"^1.6.1","coveralls":"*","event-stream":"*","gulp":"^3.9.1","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^3.11.0","webpack-cli":"^2.0.4"},"licenses":[{"type":"MIT"}],"readme":"# gulp-htmlincluder\n[![NPM version][npm-image]][npm-url]  [![Dependency Status][depstat-image]][depstat-url]\n\n> htmlincluder plugin for [gulp](https://github.com/wearefractal/gulp)\n\n## What does this do?\n\nAt it's most basic level, this allows you to build files out of other files by marking up your files in a particular way. It also lets you insert data into these files (from a json object).\n\n## What was this intended to do?\n\nhtmlincluder was written with the intention of working on static websites while still allowing for a component based development. It also was intended to let the individual components be testable by themselves by allowing the individual component files to include portions that would be removed on build.\n\nIt also can allow the inclusion of some dynamic content into these static sites, as long as you can wrangle said content into a json object and pass it in when you are building.\n\nI'm sure this can be put to a much broader use than originally intended (and may do for a name change at some point, since there is no reason you couldn't include json files into json files, or do other things.)\n\n## Usage\n\n### Install\n\n```shell\nnpm install --save-dev gulp-htmlincluder\n```\n\n### Sample `gulpfile.js`\n\nThen, add it to your `gulpfile.js`:\n\n```javascript\nvar gulp = require('gulp'),\n\tincluder = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  gulp.src('files/*.html')\n    .pipe(includer())\n      .pipe(gulp.dest('dist/'));\n});\n\n// and example using a json data file\ngulp.task('htmlIncluderJson', function() {\n  var json = require('./input-file.json');\n  var options = {\n    jsonInput    : json,\n  };\n\n  gulp.src('files/*.html')\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\ngulp.task('includeJson', ['htmlIncluderJson']);\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n## API\n\n### *File Naming Requirement*\n\nhtmlincluder *requires* files follow a particular naming convention.\n\nFiles that you want to include in other files begin with `-`.\n\nFiles that you want to wrap around other files begin with `_`.\n\nFiles that you want to use to build the resulting static pages can be named however you want, as long as they don't begin with `-` or `_`.\n\nRight now this is necessary because the files that will ultimately exist in the build folder are those that don't start with `-` or `_`. I'd love to change this to determine this in another manner (for example, only files that aren't included are finally built). Would love a pull request trying this since I'm not sure I'll get around to it soon.\n\n### Terminology\n\nBasic tag structure\n\n`<!--#tagName attributeName=\"attributeValue\" -->`\n\n### All Tags\n\nNote: '*' means required attribute\n\n* Wrapping\n  * `<!--#wrap path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n  * `<!--#middle -->`\n  * `<!--#endwrap -->`\n* Inserting\n  * `<!--#insert path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n* Inserting Json (passed in from parent component)\n  * `<!--#data jsonPath=\"*\" default=\"\" rawJson=\"\" -->`\n* Inserting Json (from data input, or default value)\n  * `<!--#jsonInsert jsonPath=\"*\" default=\"\" -->`\n* Control Flow\n  * If\n    * `<!--#if jsonPath=\"*\" rawJson=\"\" -->`\n    * `<!--#endif -->`\n  * Each (repeater)\n    * `<!--#each count=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n    * `<!--#endeach -->`\n* Clipping (Ignores parts of file)\n  * `<!--#clipbefore -->`\n  * `<!--#clipafter -->`\n  * `<!--#clipbetween -->`\n  * `<!--#endclipbetween -->`\n\n### Attributes\n\n#### path\n\nA relative (to current file) path to a file.\n\n#### jsonPath\n\nA path to data in a json object. For example:\n\n```json\n{\n  a: {\n    b: {\n      c: 'hello world'\n    }\n  }\n}\n```\n\nThe path to `c` is `a.b.c`.\n\n#### rawJson\n\nA string that contains a json object.\n\n*Warning*\n\nInternally `eval` is used so beware. But also, you could technically write a script that generates an object if you need more complicated data.\n\nFor example:\n\n`rawJson=\"(function(){ return {title: 'generated object?'} })()\"`\n\n#### count\n\nOn an #each you can tell it how many times to repeat the inner content with a count attribute\n\n`<!--#each count=\"3\" -->hello world<!--#endeach -->\n\n### Insert\n\nThis is the simplest use case.  Simply put the following html comment\n\n`<!--#insert path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#insert path=\"-file2.html\" -->\n</body>\n</html>\n```\n\n`-file2.html`\n```html\n  hello world\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Configure insert to use other text\n\nIf you want to use ssi includes along with this, and so have the insert string follow that format there is an arguemtn to pass into the htmlincluder in gulp.\n\nThanks to theSLY for suggesting this!\n\n```javascript\nvar gulp = require('gulp'),\n  includer = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  var options = {\n    insertPattern: 'include virtual',\n  };\n\n  gulp.src('files/*.html')\n//now looks for &lt;!--#include virtual, instead of &lt;!--#insert\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n### Wrap\n\n`<!--#wrap path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\nAND\n\n`<!--#endwrap -->`\n\nThe middle tag must be placed in the wrap file so we know where to put the middle part of the other file\n\n`<!--#middle -->`\n\n#### Example\n\n`file1.html`\n```html\n<!--#wrap path=\"_file2.html\" -->\n  hello world\n<!--#endwrap -->\n```\n\n`_file2.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#middle -->\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n### data\n\nInside of wrap and insert tags that you have used the `jsonPath` attribute on you can use use this tag to print data that has been passed down.\n\n`<!--#data jsonPath=\"<path.to.json>\" default=\"some text\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!-- JSON path passed down from above -->\n<!--#insert path=\"-insert.html\" jsonPath=\"hello\" -->\n</body>\n</html>\n```\n\n`-insert.html`\n```html\n<div>\n  <!--#data jsonPath=\"world\" -->\n</div>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  <div>\n    hello world\n  </div>\n</body>\n</html>\n```\n\n### jsonInsert\n\nWhen using a json data file, you can pull data from it directly using this tag.\n\n`<!--#jsonInsert jsonPath=\"<path.to.json>\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#jsonInsert jsonPath=\"hello.world\" -->\n</body>\n</html>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Inline json objects\n\nInstead of using the data file, you can provide a raw json object\n\n`<!--#jsonInsert jsonPath=\"path.to.json\" rawJson=\"{ path: { to: { json: \"hello world\" } } }\" -->`\n\nResults\n\n`hello world`\n\n### Each\n\nEach can be used to iterate over a json array, or just to repeat some data a number of times.\n\n#### Just with a count\n\n```\n<!--#each jsonPath=\"this\" count=\"5\" -->\n  <div>hello world</div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n\n```\n\n#### With an array of values in json input\n\njson input:\n```\n{\n  data : [1, 2, 3, 4]\n}\n```\n\n\n```\n<!--#each jsonPath=\"data\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values, limited by count\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" count=\"2\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n\n```\n\n\n\n#### With an array of objects\n\n**note: use single quotes in json objects, which means you'll need to escape**\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[\n    { name: 'Tom', age: 33, bio: 'Bio for Tom' },\n    { name: 'Dick', age: 55, bio: 'Dick\\'s bio' },\n    { name: 'Jane', age: 28, bio: 'Bio for Jane' },\n    { name: 'Harry', age: 27 },\n  ]\" -->\n  <div>name: <!--#data jsonPath=\"name\" --></div>\n  <div>age: <!--#data jsonPath=\"age\" --></div>\n  <div>bio: <!--#data jsonPath=\"bio\" default=\"nothing is known about them\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>name: Tom</div>\n  <div>age: 33</div>\n  <div>bio: Bio for Tom</div>\n\n  <div>name: Dick</div>\n  <div>age: 55</div>\n  <div>bio: Dick's bio</div>\n\n  <div>name: Jane</div>\n  <div>age: 28</div>\n  <div>bio: Bio for Jane</div>\n\n  <div>name: Harry</div>\n  <div>age: 27</div>\n  <div>bio: nothing is known about them</div>\n\n\n```\n\n### Clip tops and bottoms off of files\n`<!--#clipbefore -->`\n\n`<!--#clipafter -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#clipbefore -->\nblah\n<!--#clipafter -->\n</body>\n</html>\n```\n\nResults:\n```html\nblah\n```\n\n### Clip between\n`<!--#clipbetween -->`\n\n`<!--#endclipbetween -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\n<!--#clipbetween -->\na widget!\n<!--#endclipbetween -->\nsomething else\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\nsomething else\n</body>\n</html>\n```\n\n## More Complicated Examples\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License)\n\n[npm-url]: https://npmjs.org/package/gulp-htmlincluder\n[npm-image]: https://badge.fury.io/js/gulp-htmlincluder.png\n\n[travis-url]: http://travis-ci.org/internetErik/gulp-htmlincluder\n[travis-image]: https://secure.travis-ci.org/internetErik/gulp-htmlincluder.png?branch=master\n\n[coveralls-url]: https://coveralls.io/r/internetErik/gulp-htmlincluder\n[coveralls-image]: https://coveralls.io/repos/internetErik/gulp-htmlincluder/badge.png\n\n[depstat-url]: https://david-dm.org/internetErik/gulp-htmlincluder\n[depstat-image]: https://david-dm.org/internetErik/gulp-htmlincluder.png\n","readmeFilename":"README.md","gitHead":"b8df24ef6f343779438038748e4c27c4ae380e31","_id":"gulp-htmlincluder@1.4.7","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-4QLdj1GyAQpBeiTN/orKC2ErVD+Sm3S7q59hWNgXhVLykNANfmVI8dwVYidqEkvCmxpSkAhpdjTja+upwoL36g==","shasum":"f826e0bb8c7430ef4b3ba26523b2c1b17fd95b97","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.4.7.tgz","fileCount":34,"unpackedSize":147286,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlW5Vhbvp6i0FyX2z/e0eIk/uFUzNUtwD1IUcze69eCwIgQZHVUmJhuwLKCLTB220LQ98qEBxVBejR/MIzux2FnCc="}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_1.4.7_1518706143194_0.10413620731751272"},"_hasShrinkwrap":false},"1.4.8":{"name":"gulp-htmlincluder","version":"1.4.8","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack -p","webpack":"webpack -w"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-env":"^1.6.1","coveralls":"*","event-stream":"*","gulp":"^3.9.1","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^3.11.0","webpack-cli":"^2.0.4"},"licenses":[{"type":"MIT"}],"readme":"# gulp-htmlincluder\n[![NPM version][npm-image]][npm-url]  [![Dependency Status][depstat-image]][depstat-url]\n\n> htmlincluder plugin for [gulp](https://github.com/wearefractal/gulp)\n\n## What does this do?\n\nAt it's most basic level, this allows you to build files out of other files by marking up your files in a particular way. It also lets you insert data into these files (from a json object).\n\n## What was this intended to do?\n\nhtmlincluder was written with the intention of working on static websites while still allowing for a component based development. It also was intended to let the individual components be testable by themselves by allowing the individual component files to include portions that would be removed on build.\n\nIt also can allow the inclusion of some dynamic content into these static sites, as long as you can wrangle said content into a json object and pass it in when you are building.\n\nI'm sure this can be put to a much broader use than originally intended (and may do for a name change at some point, since there is no reason you couldn't include json files into json files, or do other things.)\n\n## Usage\n\n### Install\n\n```shell\nnpm install --save-dev gulp-htmlincluder\n```\n\n### Sample `gulpfile.js`\n\nThen, add it to your `gulpfile.js`:\n\n```javascript\nvar gulp = require('gulp'),\n\tincluder = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  gulp.src('files/*.html')\n    .pipe(includer())\n      .pipe(gulp.dest('dist/'));\n});\n\n// and example using a json data file\ngulp.task('htmlIncluderJson', function() {\n  var json = require('./input-file.json');\n  var options = {\n    jsonInput    : json,\n  };\n\n  gulp.src('files/*.html')\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\ngulp.task('includeJson', ['htmlIncluderJson']);\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n## API\n\n### *File Naming Requirement*\n\nhtmlincluder *requires* files follow a particular naming convention.\n\nFiles that you want to include in other files begin with `-`.\n\nFiles that you want to wrap around other files begin with `_`.\n\nFiles that you want to use to build the resulting static pages can be named however you want, as long as they don't begin with `-` or `_`.\n\nRight now this is necessary because the files that will ultimately exist in the build folder are those that don't start with `-` or `_`. I'd love to change this to determine this in another manner (for example, only files that aren't included are finally built). Would love a pull request trying this since I'm not sure I'll get around to it soon.\n\n### Terminology\n\nBasic tag structure\n\n`<!--#tagName attributeName=\"attributeValue\" -->`\n\n### All Tags\n\nNote: '*' means required attribute\n\n* Wrapping\n  * `<!--#wrap path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n  * `<!--#middle -->`\n  * `<!--#endwrap -->`\n* Inserting\n  * `<!--#insert path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n* Inserting Json (passed in from parent component)\n  * `<!--#data jsonPath=\"*\" default=\"\" rawJson=\"\" -->`\n* Inserting Json (from data input, or default value)\n  * `<!--#jsonInsert jsonPath=\"*\" default=\"\" -->`\n* Control Flow\n  * If\n    * `<!--#if jsonPath=\"*\" rawJson=\"\" -->`\n    * `<!--#endif -->`\n  * Each (repeater)\n    * `<!--#each count=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n    * `<!--#endeach -->`\n* Clipping (Ignores parts of file)\n  * `<!--#clipbefore -->`\n  * `<!--#clipafter -->`\n  * `<!--#clipbetween -->`\n  * `<!--#endclipbetween -->`\n\n### Attributes\n\n#### path\n\nA relative (to current file) path to a file.\n\n#### jsonPath\n\nA path to data in a json object. For example:\n\n```json\n{\n  a: {\n    b: {\n      c: 'hello world'\n    }\n  }\n}\n```\n\nThe path to `c` is `a.b.c`.\n\n#### rawJson\n\nA string that contains a json object.\n\n*Warning*\n\nInternally `eval` is used so beware. But also, you could technically write a script that generates an object if you need more complicated data.\n\nFor example:\n\n`rawJson=\"(function(){ return {title: 'generated object?'} })()\"`\n\n#### count\n\nOn an #each you can tell it how many times to repeat the inner content with a count attribute\n\n`<!--#each count=\"3\" -->hello world<!--#endeach -->\n\n### Insert\n\nThis is the simplest use case.  Simply put the following html comment\n\n`<!--#insert path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#insert path=\"-file2.html\" -->\n</body>\n</html>\n```\n\n`-file2.html`\n```html\n  hello world\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Configure insert to use other text\n\nIf you want to use ssi includes along with this, and so have the insert string follow that format there is an arguemtn to pass into the htmlincluder in gulp.\n\nThanks to theSLY for suggesting this!\n\n```javascript\nvar gulp = require('gulp'),\n  includer = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  var options = {\n    insertPattern: 'include virtual',\n  };\n\n  gulp.src('files/*.html')\n//now looks for &lt;!--#include virtual, instead of &lt;!--#insert\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n### Wrap\n\n`<!--#wrap path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\nAND\n\n`<!--#endwrap -->`\n\nThe middle tag must be placed in the wrap file so we know where to put the middle part of the other file\n\n`<!--#middle -->`\n\n#### Example\n\n`file1.html`\n```html\n<!--#wrap path=\"_file2.html\" -->\n  hello world\n<!--#endwrap -->\n```\n\n`_file2.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#middle -->\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n### data\n\nInside of wrap and insert tags that you have used the `jsonPath` attribute on you can use use this tag to print data that has been passed down.\n\n`<!--#data jsonPath=\"<path.to.json>\" default=\"some text\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!-- JSON path passed down from above -->\n<!--#insert path=\"-insert.html\" jsonPath=\"hello\" -->\n</body>\n</html>\n```\n\n`-insert.html`\n```html\n<div>\n  <!--#data jsonPath=\"world\" -->\n</div>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  <div>\n    hello world\n  </div>\n</body>\n</html>\n```\n\n### jsonInsert\n\nWhen using a json data file, you can pull data from it directly using this tag.\n\n`<!--#jsonInsert jsonPath=\"<path.to.json>\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#jsonInsert jsonPath=\"hello.world\" -->\n</body>\n</html>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Inline json objects\n\nInstead of using the data file, you can provide a raw json object\n\n`<!--#jsonInsert jsonPath=\"path.to.json\" rawJson=\"{ path: { to: { json: \"hello world\" } } }\" -->`\n\nResults\n\n`hello world`\n\n### Each\n\nEach can be used to iterate over a json array, or just to repeat some data a number of times.\n\n#### Just with a count\n\n```\n<!--#each jsonPath=\"this\" count=\"5\" -->\n  <div>hello world</div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n\n```\n\n#### With an array of values in json input\n\njson input:\n```\n{\n  data : [1, 2, 3, 4]\n}\n```\n\n\n```\n<!--#each jsonPath=\"data\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values, limited by count\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" count=\"2\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n\n```\n\n\n\n#### With an array of objects\n\n**note: use single quotes in json objects, which means you'll need to escape**\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[\n    { name: 'Tom', age: 33, bio: 'Bio for Tom' },\n    { name: 'Dick', age: 55, bio: 'Dick\\'s bio' },\n    { name: 'Jane', age: 28, bio: 'Bio for Jane' },\n    { name: 'Harry', age: 27 },\n  ]\" -->\n  <div>name: <!--#data jsonPath=\"name\" --></div>\n  <div>age: <!--#data jsonPath=\"age\" --></div>\n  <div>bio: <!--#data jsonPath=\"bio\" default=\"nothing is known about them\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>name: Tom</div>\n  <div>age: 33</div>\n  <div>bio: Bio for Tom</div>\n\n  <div>name: Dick</div>\n  <div>age: 55</div>\n  <div>bio: Dick's bio</div>\n\n  <div>name: Jane</div>\n  <div>age: 28</div>\n  <div>bio: Bio for Jane</div>\n\n  <div>name: Harry</div>\n  <div>age: 27</div>\n  <div>bio: nothing is known about them</div>\n\n\n```\n\n### Clip tops and bottoms off of files\n`<!--#clipbefore -->`\n\n`<!--#clipafter -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#clipbefore -->\nblah\n<!--#clipafter -->\n</body>\n</html>\n```\n\nResults:\n```html\nblah\n```\n\n### Clip between\n`<!--#clipbetween -->`\n\n`<!--#endclipbetween -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\n<!--#clipbetween -->\na widget!\n<!--#endclipbetween -->\nsomething else\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\nsomething else\n</body>\n</html>\n```\n\n## More Complicated Examples\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License)\n\n[npm-url]: https://npmjs.org/package/gulp-htmlincluder\n[npm-image]: https://badge.fury.io/js/gulp-htmlincluder.png\n\n[travis-url]: http://travis-ci.org/internetErik/gulp-htmlincluder\n[travis-image]: https://secure.travis-ci.org/internetErik/gulp-htmlincluder.png?branch=master\n\n[coveralls-url]: https://coveralls.io/r/internetErik/gulp-htmlincluder\n[coveralls-image]: https://coveralls.io/repos/internetErik/gulp-htmlincluder/badge.png\n\n[depstat-url]: https://david-dm.org/internetErik/gulp-htmlincluder\n[depstat-image]: https://david-dm.org/internetErik/gulp-htmlincluder.png\n","readmeFilename":"README.md","gitHead":"8bc72f0e42580e16b58e89f1395d1a10a67b5601","_id":"gulp-htmlincluder@1.4.8","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-mjdPhgfUrbLPc/FoMbtUMY1wqH3LZxt9HfxBAIPMzj/y9sfRvUrEGQZAoaIVcmtQRfAL2KJY10ApUuzdokSXRg==","shasum":"c01c3efb6c183197d3ada671de98a49feb24612d","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.4.8.tgz","fileCount":33,"unpackedSize":151318,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAwduNFL50JrxDOlaHfFHEVO1Y9na4eTjHnov7EhC2IQIgVvQVTHD5iwp3e47Ht/dBar1WkYGdB4tOQ5IX+c8cr+k="}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_1.4.8_1518711986302_0.42880403070435746"},"_hasShrinkwrap":false},"1.4.9":{"name":"gulp-htmlincluder","version":"1.4.9","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack -p","webpack":"webpack -w"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-env":"^1.6.1","coveralls":"*","event-stream":"*","gulp":"^3.9.1","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^3.11.0","webpack-cli":"^2.0.4"},"licenses":[{"type":"MIT"}],"readme":"# gulp-htmlincluder\n[![NPM version][npm-image]][npm-url]  [![Dependency Status][depstat-image]][depstat-url]\n\n> htmlincluder plugin for [gulp](https://github.com/wearefractal/gulp)\n\n## What does this do?\n\nAt it's most basic level, this allows you to build files out of other files by marking up your files in a particular way. It also lets you insert data into these files (from a json object).\n\n## What was this intended to do?\n\nhtmlincluder was written with the intention of working on static websites while still allowing for a component based development. It also was intended to let the individual components be testable by themselves by allowing the individual component files to include portions that would be removed on build.\n\nIt also can allow the inclusion of some dynamic content into these static sites, as long as you can wrangle said content into a json object and pass it in when you are building.\n\nI'm sure this can be put to a much broader use than originally intended (and may do for a name change at some point, since there is no reason you couldn't include json files into json files, or do other things.)\n\n## Usage\n\n### Install\n\n```shell\nnpm install --save-dev gulp-htmlincluder\n```\n\n### Sample `gulpfile.js`\n\nThen, add it to your `gulpfile.js`:\n\n```javascript\nvar gulp = require('gulp'),\n\tincluder = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  gulp.src('files/*.html')\n    .pipe(includer())\n      .pipe(gulp.dest('dist/'));\n});\n\n// and example using a json data file\ngulp.task('htmlIncluderJson', function() {\n  var json = require('./input-file.json');\n  var options = {\n    jsonInput    : json,\n  };\n\n  gulp.src('files/*.html')\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\ngulp.task('includeJson', ['htmlIncluderJson']);\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n## API\n\n### *File Naming Requirement*\n\nhtmlincluder *requires* files follow a particular naming convention.\n\nFiles that you want to include in other files begin with `-`.\n\nFiles that you want to wrap around other files begin with `_`.\n\nFiles that you want to use to build the resulting static pages can be named however you want, as long as they don't begin with `-` or `_`.\n\nRight now this is necessary because the files that will ultimately exist in the build folder are those that don't start with `-` or `_`. I'd love to change this to determine this in another manner (for example, only files that aren't included are finally built). Would love a pull request trying this since I'm not sure I'll get around to it soon.\n\n### Terminology\n\nBasic tag structure\n\n`<!--#tagName attributeName=\"attributeValue\" -->`\n\n### All Tags\n\nNote: '*' means required attribute\n\n* Wrapping\n  * `<!--#wrap path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n  * `<!--#middle -->`\n  * `<!--#endwrap -->`\n* Inserting\n  * `<!--#insert path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n* Inserting Json (passed in from parent component)\n  * `<!--#data jsonPath=\"*\" default=\"\" rawJson=\"\" -->`\n* Inserting Json (from data input, or default value)\n  * `<!--#jsonInsert jsonPath=\"*\" default=\"\" -->`\n* Control Flow\n  * If\n    * `<!--#if jsonPath=\"*\" rawJson=\"\" -->`\n    * `<!--#endif -->`\n  * Each (repeater)\n    * `<!--#each count=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n    * `<!--#endeach -->`\n* Clipping (Ignores parts of file)\n  * `<!--#clipbefore -->`\n  * `<!--#clipafter -->`\n  * `<!--#clipbetween -->`\n  * `<!--#endclipbetween -->`\n\n### Attributes\n\n#### path\n\nA relative (to current file) path to a file.\n\n#### jsonPath\n\nA path to data in a json object. For example:\n\n```json\n{\n  a: {\n    b: {\n      c: 'hello world'\n    }\n  }\n}\n```\n\nThe path to `c` is `a.b.c`.\n\n#### rawJson\n\nA string that contains a json object.\n\n*Warning*\n\nInternally `eval` is used so beware. But also, you could technically write a script that generates an object if you need more complicated data.\n\nFor example:\n\n`rawJson=\"(function(){ return {title: 'generated object?'} })()\"`\n\n#### count\n\nOn an #each you can tell it how many times to repeat the inner content with a count attribute\n\n`<!--#each count=\"3\" -->hello world<!--#endeach -->\n\n### Insert\n\nThis is the simplest use case.  Simply put the following html comment\n\n`<!--#insert path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#insert path=\"-file2.html\" -->\n</body>\n</html>\n```\n\n`-file2.html`\n```html\n  hello world\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Configure insert to use other text\n\nIf you want to use ssi includes along with this, and so have the insert string follow that format there is an arguemtn to pass into the htmlincluder in gulp.\n\nThanks to theSLY for suggesting this!\n\n```javascript\nvar gulp = require('gulp'),\n  includer = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  var options = {\n    insertPattern: 'include virtual',\n  };\n\n  gulp.src('files/*.html')\n//now looks for &lt;!--#include virtual, instead of &lt;!--#insert\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n### Wrap\n\n`<!--#wrap path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\nAND\n\n`<!--#endwrap -->`\n\nThe middle tag must be placed in the wrap file so we know where to put the middle part of the other file\n\n`<!--#middle -->`\n\n#### Example\n\n`file1.html`\n```html\n<!--#wrap path=\"_file2.html\" -->\n  hello world\n<!--#endwrap -->\n```\n\n`_file2.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#middle -->\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n### data\n\nInside of wrap and insert tags that you have used the `jsonPath` attribute on you can use use this tag to print data that has been passed down.\n\n`<!--#data jsonPath=\"<path.to.json>\" default=\"some text\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!-- JSON path passed down from above -->\n<!--#insert path=\"-insert.html\" jsonPath=\"hello\" -->\n</body>\n</html>\n```\n\n`-insert.html`\n```html\n<div>\n  <!--#data jsonPath=\"world\" -->\n</div>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  <div>\n    hello world\n  </div>\n</body>\n</html>\n```\n\n### jsonInsert\n\nWhen using a json data file, you can pull data from it directly using this tag.\n\n`<!--#jsonInsert jsonPath=\"<path.to.json>\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#jsonInsert jsonPath=\"hello.world\" -->\n</body>\n</html>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Inline json objects\n\nInstead of using the data file, you can provide a raw json object\n\n`<!--#jsonInsert jsonPath=\"path.to.json\" rawJson=\"{ path: { to: { json: \"hello world\" } } }\" -->`\n\nResults\n\n`hello world`\n\n### Each\n\nEach can be used to iterate over a json array, or just to repeat some data a number of times.\n\n#### Just with a count\n\n```\n<!--#each jsonPath=\"this\" count=\"5\" -->\n  <div>hello world</div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n\n```\n\n#### With an array of values in json input\n\njson input:\n```\n{\n  data : [1, 2, 3, 4]\n}\n```\n\n\n```\n<!--#each jsonPath=\"data\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values, limited by count\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" count=\"2\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n\n```\n\n\n\n#### With an array of objects\n\n**note: use single quotes in json objects, which means you'll need to escape**\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[\n    { name: 'Tom', age: 33, bio: 'Bio for Tom' },\n    { name: 'Dick', age: 55, bio: 'Dick\\'s bio' },\n    { name: 'Jane', age: 28, bio: 'Bio for Jane' },\n    { name: 'Harry', age: 27 },\n  ]\" -->\n  <div>name: <!--#data jsonPath=\"name\" --></div>\n  <div>age: <!--#data jsonPath=\"age\" --></div>\n  <div>bio: <!--#data jsonPath=\"bio\" default=\"nothing is known about them\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>name: Tom</div>\n  <div>age: 33</div>\n  <div>bio: Bio for Tom</div>\n\n  <div>name: Dick</div>\n  <div>age: 55</div>\n  <div>bio: Dick's bio</div>\n\n  <div>name: Jane</div>\n  <div>age: 28</div>\n  <div>bio: Bio for Jane</div>\n\n  <div>name: Harry</div>\n  <div>age: 27</div>\n  <div>bio: nothing is known about them</div>\n\n\n```\n\n### Clip tops and bottoms off of files\n`<!--#clipbefore -->`\n\n`<!--#clipafter -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#clipbefore -->\nblah\n<!--#clipafter -->\n</body>\n</html>\n```\n\nResults:\n```html\nblah\n```\n\n### Clip between\n`<!--#clipbetween -->`\n\n`<!--#endclipbetween -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\n<!--#clipbetween -->\na widget!\n<!--#endclipbetween -->\nsomething else\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\nsomething else\n</body>\n</html>\n```\n\n## More Complicated Examples\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License)\n\n[npm-url]: https://npmjs.org/package/gulp-htmlincluder\n[npm-image]: https://badge.fury.io/js/gulp-htmlincluder.png\n\n[travis-url]: http://travis-ci.org/internetErik/gulp-htmlincluder\n[travis-image]: https://secure.travis-ci.org/internetErik/gulp-htmlincluder.png?branch=master\n\n[coveralls-url]: https://coveralls.io/r/internetErik/gulp-htmlincluder\n[coveralls-image]: https://coveralls.io/repos/internetErik/gulp-htmlincluder/badge.png\n\n[depstat-url]: https://david-dm.org/internetErik/gulp-htmlincluder\n[depstat-image]: https://david-dm.org/internetErik/gulp-htmlincluder.png\n","readmeFilename":"README.md","gitHead":"4f177c6221e2f08f9373f06f2c2e200a91e9b71d","_id":"gulp-htmlincluder@1.4.9","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-AiQXlLBA7chvikCs7cnczRs4ok57PEzAp7aTrCdIacvPDhvWz65BpntyqK7ESxt18EG6l9Ec+QMkZeWLWznTpQ==","shasum":"417caae8a60cc5eae23098b2254337ba56ed48bd","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.4.9.tgz","fileCount":30,"unpackedSize":147057,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFjUBVy4nxTbCRo84oeSWqtEiOVj/rQhPUwO945mOKwJAiEAqAAj7yCYkgDolvBeYMN94+3HpTAP6xWyE3pNtHXWLaQ="}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_1.4.9_1518713247178_0.38612167200391867"},"_hasShrinkwrap":false},"1.4.10":{"name":"gulp-htmlincluder","version":"1.4.10","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack -p","webpack":"webpack -w"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-env":"^1.6.1","coveralls":"*","event-stream":"*","gulp":"^3.9.1","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^3.11.0","webpack-cli":"^2.0.4"},"licenses":[{"type":"MIT"}],"readme":"# gulp-htmlincluder\n[![NPM version][npm-image]][npm-url]  [![Dependency Status][depstat-image]][depstat-url]\n\n> htmlincluder plugin for [gulp](https://github.com/wearefractal/gulp)\n\n## What does this do?\n\nAt it's most basic level, this allows you to build files out of other files by marking up your files in a particular way. It also lets you insert data into these files (from a json object).\n\n## What was this intended to do?\n\nhtmlincluder was written with the intention of working on static websites while still allowing for a component based development. It also was intended to let the individual components be testable by themselves by allowing the individual component files to include portions that would be removed on build.\n\nIt also can allow the inclusion of some dynamic content into these static sites, as long as you can wrangle said content into a json object and pass it in when you are building.\n\nI'm sure this can be put to a much broader use than originally intended (and may do for a name change at some point, since there is no reason you couldn't include json files into json files, or do other things.)\n\n## Usage\n\n### Install\n\n```shell\nnpm install --save-dev gulp-htmlincluder\n```\n\n### Sample `gulpfile.js`\n\nThen, add it to your `gulpfile.js`:\n\n```javascript\nvar gulp = require('gulp'),\n\tincluder = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  gulp.src('files/*.html')\n    .pipe(includer())\n      .pipe(gulp.dest('dist/'));\n});\n\n// and example using a json data file\ngulp.task('htmlIncluderJson', function() {\n  var json = require('./input-file.json');\n  var options = {\n    jsonInput    : json,\n  };\n\n  gulp.src('files/*.html')\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\ngulp.task('includeJson', ['htmlIncluderJson']);\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n## API\n\n### *File Naming Requirement*\n\nhtmlincluder *requires* files follow a particular naming convention.\n\nFiles that you want to include in other files begin with `-`.\n\nFiles that you want to wrap around other files begin with `_`.\n\nFiles that you want to use to build the resulting static pages can be named however you want, as long as they don't begin with `-` or `_`.\n\nRight now this is necessary because the files that will ultimately exist in the build folder are those that don't start with `-` or `_`. I'd love to change this to determine this in another manner (for example, only files that aren't included are finally built). Would love a pull request trying this since I'm not sure I'll get around to it soon.\n\n### Terminology\n\nBasic tag structure\n\n`<!--#tagName attributeName=\"attributeValue\" -->`\n\n### All Tags\n\nNote: '*' means required attribute\n\n* Wrapping\n  * `<!--#wrap path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n  * `<!--#middle -->`\n  * `<!--#endwrap -->`\n* Inserting\n  * `<!--#insert path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n* Inserting Json (passed in from parent component)\n  * `<!--#data jsonPath=\"*\" default=\"\" rawJson=\"\" -->`\n* Inserting Json (from data input, or default value)\n  * `<!--#jsonInsert jsonPath=\"*\" default=\"\" -->`\n* Control Flow\n  * If\n    * `<!--#if jsonPath=\"*\" rawJson=\"\" -->`\n    * `<!--#endif -->`\n  * Each (repeater)\n    * `<!--#each count=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n    * `<!--#endeach -->`\n* Clipping (Ignores parts of file)\n  * `<!--#clipbefore -->`\n  * `<!--#clipafter -->`\n  * `<!--#clipbetween -->`\n  * `<!--#endclipbetween -->`\n\n### Attributes\n\n#### path\n\nA relative (to current file) path to a file.\n\n#### jsonPath\n\nA path to data in a json object. For example:\n\n```json\n{\n  a: {\n    b: {\n      c: 'hello world'\n    }\n  }\n}\n```\n\nThe path to `c` is `a.b.c`.\n\n#### rawJson\n\nA string that contains a json object.\n\n*Warning*\n\nInternally `eval` is used so beware. But also, you could technically write a script that generates an object if you need more complicated data.\n\nFor example:\n\n`rawJson=\"(function(){ return {title: 'generated object?'} })()\"`\n\n#### count\n\nOn an #each you can tell it how many times to repeat the inner content with a count attribute\n\n`<!--#each count=\"3\" -->hello world<!--#endeach -->\n\n### Insert\n\nThis is the simplest use case.  Simply put the following html comment\n\n`<!--#insert path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#insert path=\"-file2.html\" -->\n</body>\n</html>\n```\n\n`-file2.html`\n```html\n  hello world\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Configure insert to use other text\n\nIf you want to use ssi includes along with this, and so have the insert string follow that format there is an arguemtn to pass into the htmlincluder in gulp.\n\nThanks to theSLY for suggesting this!\n\n```javascript\nvar gulp = require('gulp'),\n  includer = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  var options = {\n    insertPattern: 'include virtual',\n  };\n\n  gulp.src('files/*.html')\n//now looks for &lt;!--#include virtual, instead of &lt;!--#insert\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n### Wrap\n\n`<!--#wrap path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\nAND\n\n`<!--#endwrap -->`\n\nThe middle tag must be placed in the wrap file so we know where to put the middle part of the other file\n\n`<!--#middle -->`\n\n#### Example\n\n`file1.html`\n```html\n<!--#wrap path=\"_file2.html\" -->\n  hello world\n<!--#endwrap -->\n```\n\n`_file2.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#middle -->\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n### data\n\nInside of wrap and insert tags that you have used the `jsonPath` attribute on you can use use this tag to print data that has been passed down.\n\n`<!--#data jsonPath=\"<path.to.json>\" default=\"some text\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!-- JSON path passed down from above -->\n<!--#insert path=\"-insert.html\" jsonPath=\"hello\" -->\n</body>\n</html>\n```\n\n`-insert.html`\n```html\n<div>\n  <!--#data jsonPath=\"world\" -->\n</div>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  <div>\n    hello world\n  </div>\n</body>\n</html>\n```\n\n### jsonInsert\n\nWhen using a json data file, you can pull data from it directly using this tag.\n\n`<!--#jsonInsert jsonPath=\"<path.to.json>\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#jsonInsert jsonPath=\"hello.world\" -->\n</body>\n</html>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Inline json objects\n\nInstead of using the data file, you can provide a raw json object\n\n`<!--#jsonInsert jsonPath=\"path.to.json\" rawJson=\"{ path: { to: { json: \"hello world\" } } }\" -->`\n\nResults\n\n`hello world`\n\n### Each\n\nEach can be used to iterate over a json array, or just to repeat some data a number of times.\n\n#### Just with a count\n\n```\n<!--#each jsonPath=\"this\" count=\"5\" -->\n  <div>hello world</div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n\n```\n\n#### With an array of values in json input\n\njson input:\n```\n{\n  data : [1, 2, 3, 4]\n}\n```\n\n\n```\n<!--#each jsonPath=\"data\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values, limited by count\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" count=\"2\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n\n```\n\n\n\n#### With an array of objects\n\n**note: use single quotes in json objects, which means you'll need to escape**\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[\n    { name: 'Tom', age: 33, bio: 'Bio for Tom' },\n    { name: 'Dick', age: 55, bio: 'Dick\\'s bio' },\n    { name: 'Jane', age: 28, bio: 'Bio for Jane' },\n    { name: 'Harry', age: 27 },\n  ]\" -->\n  <div>name: <!--#data jsonPath=\"name\" --></div>\n  <div>age: <!--#data jsonPath=\"age\" --></div>\n  <div>bio: <!--#data jsonPath=\"bio\" default=\"nothing is known about them\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>name: Tom</div>\n  <div>age: 33</div>\n  <div>bio: Bio for Tom</div>\n\n  <div>name: Dick</div>\n  <div>age: 55</div>\n  <div>bio: Dick's bio</div>\n\n  <div>name: Jane</div>\n  <div>age: 28</div>\n  <div>bio: Bio for Jane</div>\n\n  <div>name: Harry</div>\n  <div>age: 27</div>\n  <div>bio: nothing is known about them</div>\n\n\n```\n\n### Clip tops and bottoms off of files\n`<!--#clipbefore -->`\n\n`<!--#clipafter -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#clipbefore -->\nblah\n<!--#clipafter -->\n</body>\n</html>\n```\n\nResults:\n```html\nblah\n```\n\n### Clip between\n`<!--#clipbetween -->`\n\n`<!--#endclipbetween -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\n<!--#clipbetween -->\na widget!\n<!--#endclipbetween -->\nsomething else\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\nsomething else\n</body>\n</html>\n```\n\n## More Complicated Examples\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License)\n\n[npm-url]: https://npmjs.org/package/gulp-htmlincluder\n[npm-image]: https://badge.fury.io/js/gulp-htmlincluder.png\n\n[travis-url]: http://travis-ci.org/internetErik/gulp-htmlincluder\n[travis-image]: https://secure.travis-ci.org/internetErik/gulp-htmlincluder.png?branch=master\n\n[coveralls-url]: https://coveralls.io/r/internetErik/gulp-htmlincluder\n[coveralls-image]: https://coveralls.io/repos/internetErik/gulp-htmlincluder/badge.png\n\n[depstat-url]: https://david-dm.org/internetErik/gulp-htmlincluder\n[depstat-image]: https://david-dm.org/internetErik/gulp-htmlincluder.png\n","readmeFilename":"README.md","gitHead":"2b92211fe0bac327ffab4778635290b0c4e64a7e","_id":"gulp-htmlincluder@1.4.10","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-TwfPHDuKIsilEygFSZ3+Pa5rkoOPQnzOn3uWWK1fr2g41I1Pxr9ogVeEX2U4SiyNJFGJa+/rvoSgUN7bL7WXzQ==","shasum":"583e3071d92649751ff12a29e7b742b82a0dd84a","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.4.10.tgz","fileCount":31,"unpackedSize":147387,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFVUcRE6pfab/B99gpPLgChlDISJjnHIgVy7ZKqIJTwQIhAMf/ZnPvisOjS7kyZ/EJ7JFkMVQQOdM/04koCxNQ2GYR"}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_1.4.10_1518731363344_0.3658451956403148"},"_hasShrinkwrap":false},"1.4.11":{"name":"gulp-htmlincluder","version":"1.4.11","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack -p","webpack":"webpack -w"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-env":"^1.6.1","coveralls":"*","event-stream":"*","gulp":"^3.9.1","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^3.11.0","webpack-cli":"^2.0.4"},"licenses":[{"type":"MIT"}],"readme":"# gulp-htmlincluder\n[![NPM version][npm-image]][npm-url]  [![Dependency Status][depstat-image]][depstat-url]\n\n> htmlincluder plugin for [gulp](https://github.com/wearefractal/gulp)\n\n## What does this do?\n\nAt it's most basic level, this allows you to build files out of other files by marking up your files in a particular way. It also lets you insert data into these files (from a json object).\n\n## What was this intended to do?\n\nhtmlincluder was written with the intention of working on static websites while still allowing for a component based development. It also was intended to let the individual components be testable by themselves by allowing the individual component files to include portions that would be removed on build.\n\nIt also can allow the inclusion of some dynamic content into these static sites, as long as you can wrangle said content into a json object and pass it in when you are building.\n\nI'm sure this can be put to a much broader use than originally intended (and may do for a name change at some point, since there is no reason you couldn't include json files into json files, or do other things.)\n\n## Usage\n\n### Install\n\n```shell\nnpm install --save-dev gulp-htmlincluder\n```\n\n### Sample `gulpfile.js`\n\nThen, add it to your `gulpfile.js`:\n\n```javascript\nvar gulp = require('gulp'),\n\tincluder = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  gulp.src('files/*.html')\n    .pipe(includer())\n      .pipe(gulp.dest('dist/'));\n});\n\n// and example using a json data file\ngulp.task('htmlIncluderJson', function() {\n  var json = require('./input-file.json');\n  var options = {\n    jsonInput    : json,\n  };\n\n  gulp.src('files/*.html')\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\ngulp.task('includeJson', ['htmlIncluderJson']);\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n## API\n\n### *File Naming Requirement*\n\nhtmlincluder *requires* files follow a particular naming convention.\n\nFiles that you want to include in other files begin with `-`.\n\nFiles that you want to wrap around other files begin with `_`.\n\nFiles that you want to use to build the resulting static pages can be named however you want, as long as they don't begin with `-` or `_`.\n\nRight now this is necessary because the files that will ultimately exist in the build folder are those that don't start with `-` or `_`. I'd love to change this to determine this in another manner (for example, only files that aren't included are finally built). Would love a pull request trying this since I'm not sure I'll get around to it soon.\n\n### Terminology\n\nBasic tag structure\n\n`<!--#tagName attributeName=\"attributeValue\" -->`\n\n### All Tags\n\nNote: '*' means required attribute\n\n* Wrapping\n  * `<!--#wrap path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n  * `<!--#middle -->`\n  * `<!--#endwrap -->`\n* Inserting\n  * `<!--#insert path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n* Inserting Json (passed in from parent component)\n  * `<!--#data jsonPath=\"*\" default=\"\" rawJson=\"\" -->`\n* Inserting Json (from data input, or default value)\n  * `<!--#jsonInsert jsonPath=\"*\" default=\"\" -->`\n* Control Flow\n  * If\n    * `<!--#if jsonPath=\"*\" rawJson=\"\" -->`\n    * `<!--#endif -->`\n  * Each (repeater)\n    * `<!--#each count=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n    * `<!--#endeach -->`\n* Clipping (Ignores parts of file)\n  * `<!--#clipbefore -->`\n  * `<!--#clipafter -->`\n  * `<!--#clipbetween -->`\n  * `<!--#endclipbetween -->`\n\n### Attributes\n\n#### path\n\nA relative (to current file) path to a file.\n\n#### jsonPath\n\nA path to data in a json object. For example:\n\n```json\n{\n  a: {\n    b: {\n      c: 'hello world'\n    }\n  }\n}\n```\n\nThe path to `c` is `a.b.c`.\n\n#### rawJson\n\nA string that contains a json object.\n\n*Warning*\n\nInternally `eval` is used so beware. But also, you could technically write a script that generates an object if you need more complicated data.\n\nFor example:\n\n`rawJson=\"(function(){ return {title: 'generated object?'} })()\"`\n\n#### count\n\nOn an #each you can tell it how many times to repeat the inner content with a count attribute\n\n`<!--#each count=\"3\" -->hello world<!--#endeach -->\n\n### Insert\n\nThis is the simplest use case.  Simply put the following html comment\n\n`<!--#insert path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#insert path=\"-file2.html\" -->\n</body>\n</html>\n```\n\n`-file2.html`\n```html\n  hello world\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Configure insert to use other text\n\nIf you want to use ssi includes along with this, and so have the insert string follow that format there is an arguemtn to pass into the htmlincluder in gulp.\n\nThanks to theSLY for suggesting this!\n\n```javascript\nvar gulp = require('gulp'),\n  includer = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  var options = {\n    insertPattern: 'include virtual',\n  };\n\n  gulp.src('files/*.html')\n//now looks for &lt;!--#include virtual, instead of &lt;!--#insert\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n### Wrap\n\n`<!--#wrap path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\nAND\n\n`<!--#endwrap -->`\n\nThe middle tag must be placed in the wrap file so we know where to put the middle part of the other file\n\n`<!--#middle -->`\n\n#### Example\n\n`file1.html`\n```html\n<!--#wrap path=\"_file2.html\" -->\n  hello world\n<!--#endwrap -->\n```\n\n`_file2.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#middle -->\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n### data\n\nInside of wrap and insert tags that you have used the `jsonPath` attribute on you can use use this tag to print data that has been passed down.\n\n`<!--#data jsonPath=\"<path.to.json>\" default=\"some text\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!-- JSON path passed down from above -->\n<!--#insert path=\"-insert.html\" jsonPath=\"hello\" -->\n</body>\n</html>\n```\n\n`-insert.html`\n```html\n<div>\n  <!--#data jsonPath=\"world\" -->\n</div>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  <div>\n    hello world\n  </div>\n</body>\n</html>\n```\n\n### jsonInsert\n\nWhen using a json data file, you can pull data from it directly using this tag.\n\n`<!--#jsonInsert jsonPath=\"<path.to.json>\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#jsonInsert jsonPath=\"hello.world\" -->\n</body>\n</html>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Inline json objects\n\nInstead of using the data file, you can provide a raw json object\n\n`<!--#jsonInsert jsonPath=\"path.to.json\" rawJson=\"{ path: { to: { json: \"hello world\" } } }\" -->`\n\nResults\n\n`hello world`\n\n### Each\n\nEach can be used to iterate over a json array, or just to repeat some data a number of times.\n\n#### Just with a count\n\n```\n<!--#each jsonPath=\"this\" count=\"5\" -->\n  <div>hello world</div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n\n```\n\n#### With an array of values in json input\n\njson input:\n```\n{\n  data : [1, 2, 3, 4]\n}\n```\n\n\n```\n<!--#each jsonPath=\"data\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values, limited by count\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" count=\"2\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n\n```\n\n\n\n#### With an array of objects\n\n**note: use single quotes in json objects, which means you'll need to escape**\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[\n    { name: 'Tom', age: 33, bio: 'Bio for Tom' },\n    { name: 'Dick', age: 55, bio: 'Dick\\'s bio' },\n    { name: 'Jane', age: 28, bio: 'Bio for Jane' },\n    { name: 'Harry', age: 27 },\n  ]\" -->\n  <div>name: <!--#data jsonPath=\"name\" --></div>\n  <div>age: <!--#data jsonPath=\"age\" --></div>\n  <div>bio: <!--#data jsonPath=\"bio\" default=\"nothing is known about them\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>name: Tom</div>\n  <div>age: 33</div>\n  <div>bio: Bio for Tom</div>\n\n  <div>name: Dick</div>\n  <div>age: 55</div>\n  <div>bio: Dick's bio</div>\n\n  <div>name: Jane</div>\n  <div>age: 28</div>\n  <div>bio: Bio for Jane</div>\n\n  <div>name: Harry</div>\n  <div>age: 27</div>\n  <div>bio: nothing is known about them</div>\n\n\n```\n\n### Clip tops and bottoms off of files\n`<!--#clipbefore -->`\n\n`<!--#clipafter -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#clipbefore -->\nblah\n<!--#clipafter -->\n</body>\n</html>\n```\n\nResults:\n```html\nblah\n```\n\n### Clip between\n`<!--#clipbetween -->`\n\n`<!--#endclipbetween -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\n<!--#clipbetween -->\na widget!\n<!--#endclipbetween -->\nsomething else\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\nsomething else\n</body>\n</html>\n```\n\n## More Complicated Examples\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License)\n\n[npm-url]: https://npmjs.org/package/gulp-htmlincluder\n[npm-image]: https://badge.fury.io/js/gulp-htmlincluder.png\n\n[travis-url]: http://travis-ci.org/internetErik/gulp-htmlincluder\n[travis-image]: https://secure.travis-ci.org/internetErik/gulp-htmlincluder.png?branch=master\n\n[coveralls-url]: https://coveralls.io/r/internetErik/gulp-htmlincluder\n[coveralls-image]: https://coveralls.io/repos/internetErik/gulp-htmlincluder/badge.png\n\n[depstat-url]: https://david-dm.org/internetErik/gulp-htmlincluder\n[depstat-image]: https://david-dm.org/internetErik/gulp-htmlincluder.png\n","readmeFilename":"README.md","gitHead":"8182776cdbd8f8b5acf90f86ba924396072ee921","_id":"gulp-htmlincluder@1.4.11","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-C5P+d5Oe0akS6YNCGUIuNXPBvjWwaxzr6IQmQ5QFbFKSRxoZtTSV0H+ur/q3CAxN1ZPsxOHJoNY6ZPAAA7pcRg==","shasum":"2a82d78cd36bd2df33aea336a3551e7d3f7beff2","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.4.11.tgz","fileCount":30,"unpackedSize":148162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhQbcBsNvtFan95+d64cvxWJHxc8VI7K4QXEqVXoQmEgIhAPUAH3pcbQHnPYdXTx0bIhyOzNgR5Alum1S+S/XE4x4N"}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_1.4.11_1518913315844_0.7106253034249082"},"_hasShrinkwrap":false},"1.5.11":{"name":"gulp-htmlincluder","version":"1.5.11","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack -p","webpack":"webpack -w"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-env":"^1.6.1","coveralls":"*","event-stream":"*","gulp":"^3.9.1","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^3.11.0","webpack-cli":"^2.0.4"},"licenses":[{"type":"MIT"}],"readme":"# gulp-htmlincluder\n[![NPM version][npm-image]][npm-url]  [![Dependency Status][depstat-image]][depstat-url]\n\n> htmlincluder plugin for [gulp](https://github.com/wearefractal/gulp)\n\n## What does this do?\n\nAt it's most basic level, this allows you to build files out of other files by marking up your files in a particular way. It also lets you insert data into these files (from a json object).\n\n## What was this intended to do?\n\nhtmlincluder was written with the intention of working on static websites while still allowing for a component based development. It also was intended to let the individual components be testable by themselves by allowing the individual component files to include portions that would be removed on build.\n\nIt also can allow the inclusion of some dynamic content into these static sites, as long as you can wrangle said content into a json object and pass it in when you are building.\n\nI'm sure this can be put to a much broader use than originally intended (and may do for a name change at some point, since there is no reason you couldn't include json files into json files, or do other things.)\n\n## Usage\n\n### Install\n\n```shell\nnpm install --save-dev gulp-htmlincluder\n```\n\n### Sample `gulpfile.js`\n\nThen, add it to your `gulpfile.js`:\n\n```javascript\nvar gulp = require('gulp'),\n\tincluder = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  gulp.src('files/*.html')\n    .pipe(includer())\n      .pipe(gulp.dest('dist/'));\n});\n\n// and example using a json data file\ngulp.task('htmlIncluderJson', function() {\n  var json = require('./input-file.json');\n  var options = {\n    jsonInput    : json,\n  };\n\n  gulp.src('files/*.html')\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\ngulp.task('includeJson', ['htmlIncluderJson']);\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n## API\n\n### *File Naming Requirement*\n\nhtmlincluder *requires* files follow a particular naming convention.\n\nFiles that you want to include in other files begin with `-`.\n\nFiles that you want to wrap around other files begin with `_`.\n\nFiles that you want to use to build the resulting static pages can be named however you want, as long as they don't begin with `-` or `_`.\n\nRight now this is necessary because the files that will ultimately exist in the build folder are those that don't start with `-` or `_`. I'd love to change this to determine this in another manner (for example, only files that aren't included are finally built). Would love a pull request trying this since I'm not sure I'll get around to it soon.\n\n### Terminology\n\nBasic tag structure\n\n`<!--#tagName attributeName=\"attributeValue\" -->`\n\n### All Tags\n\nNote: '*' means required attribute\n\n* Wrapping a file with another file\n  * `<!--#wrap path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n  * `<!--#middle -->` <-- the wrapped file gets inserted here\n  * `<!--#endwrap -->`\n* Inserting a file\n  * `<!--#insert path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n* Inserting Json (passed in from parent component)\n  * `<!--#data jsonPath=\"*\" default=\"\" rawJson=\"\" -->`\n* Inserting Json (from data input, or default value)\n  * `<!--#jsonInsert jsonPath=\"*\" default=\"\" -->`\n* Control Flow\n  * If\n    * `<!--#if jsonPath=\"*\" rawJson=\"\" -->`\n    * `<!--#endif -->`\n  * Each (repeater)\n    * `<!--#each count=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n    * `<!--#endeach -->`\n* Clipping (Ignores parts of file)\n  * `<!--#clipbefore -->`\n  * `<!--#clipafter -->`\n  * `<!--#clipbetween -->`\n  * `<!--#endclipbetween -->`\n\n### Attributes\n\n#### path\n\nA relative (to current file) path to a file.\n\n#### jsonPath\n\nA path to data in a json object. For example:\n\n```json\n{\n  a: {\n    b: {\n      c: 'hello world'\n    }\n  }\n}\n```\n\nThe path to `c` is `a.b.c`.\n\n#### rawJson\n\nA string that contains a json object.\n\n*Warning*\n\nInternally `eval` is used so beware. But also, you could technically write a script that generates an object if you need more complicated data.\n\nFor example:\n\n`rawJson=\"(function(){ return {title: 'generated object?'} })()\"`\n\n#### count\n\nOn an #each you can tell it how many times to repeat the inner content with a count attribute\n\n`<!--#each count=\"3\" -->hello world<!--#endeach -->\n\n### Insert\n\nThis is the simplest use case.  Simply put the following html comment\n\n`<!--#insert path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#insert path=\"-file2.html\" -->\n</body>\n</html>\n```\n\n`-file2.html`\n```html\n  hello world\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Configure insert to use other text\n\nIf you want to use ssi includes along with this, and so have the insert string follow that format there is an arguemtn to pass into the htmlincluder in gulp.\n\nThanks to theSLY for suggesting this!\n\n```javascript\nvar gulp = require('gulp'),\n  includer = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  var options = {\n    insertPattern: 'include virtual',\n  };\n\n  gulp.src('files/*.html')\n//now looks for &lt;!--#include virtual, instead of &lt;!--#insert\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n### Wrap\n\n`<!--#wrap path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\nAND\n\n`<!--#endwrap -->`\n\nThe middle tag must be placed in the wrap file so we know where to put the middle part of the other file\n\n`<!--#middle -->`\n\n#### Example\n\n`file1.html`\n```html\n<!--#wrap path=\"_file2.html\" -->\n  hello world\n<!--#endwrap -->\n```\n\n`_file2.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#middle -->\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n### data\n\nInside of wrap and insert tags that you have used the `jsonPath` attribute on you can use use this tag to print data that has been passed down.\n\n`<!--#data jsonPath=\"<path.to.json>\" default=\"some text\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!-- JSON path passed down from above -->\n<!--#insert path=\"-insert.html\" jsonPath=\"hello\" -->\n</body>\n</html>\n```\n\n`-insert.html`\n```html\n<div>\n  <!--#data jsonPath=\"world\" -->\n</div>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  <div>\n    hello world\n  </div>\n</body>\n</html>\n```\n\n### jsonInsert\n\nWhen using a json data file, you can pull data from it directly using this tag.\n\n`<!--#jsonInsert jsonPath=\"<path.to.json>\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#jsonInsert jsonPath=\"hello.world\" -->\n</body>\n</html>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Inline json objects\n\nInstead of using the data file, you can provide a raw json object\n\n`<!--#jsonInsert jsonPath=\"path.to.json\" rawJson=\"{ path: { to: { json: \"hello world\" } } }\" -->`\n\nResults\n\n`hello world`\n\n### Each\n\nEach can be used to iterate over a json array, or just to repeat some data a number of times.\n\n#### Just with a count\n\n```\n<!--#each jsonPath=\"this\" count=\"5\" -->\n  <div>hello world</div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n\n```\n\n#### With an array of values in json input\n\njson input:\n```\n{\n  data : [1, 2, 3, 4]\n}\n```\n\n\n```\n<!--#each jsonPath=\"data\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values, limited by count\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" count=\"2\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n\n```\n\n\n\n#### With an array of objects\n\n**note: use single quotes in json objects, which means you'll need to escape**\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[\n    { name: 'Tom', age: 33, bio: 'Bio for Tom' },\n    { name: 'Dick', age: 55, bio: 'Dick\\'s bio' },\n    { name: 'Jane', age: 28, bio: 'Bio for Jane' },\n    { name: 'Harry', age: 27 },\n  ]\" -->\n  <div>name: <!--#data jsonPath=\"name\" --></div>\n  <div>age: <!--#data jsonPath=\"age\" --></div>\n  <div>bio: <!--#data jsonPath=\"bio\" default=\"nothing is known about them\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>name: Tom</div>\n  <div>age: 33</div>\n  <div>bio: Bio for Tom</div>\n\n  <div>name: Dick</div>\n  <div>age: 55</div>\n  <div>bio: Dick's bio</div>\n\n  <div>name: Jane</div>\n  <div>age: 28</div>\n  <div>bio: Bio for Jane</div>\n\n  <div>name: Harry</div>\n  <div>age: 27</div>\n  <div>bio: nothing is known about them</div>\n\n\n```\n\n### Clip tops and bottoms off of files\n`<!--#clipbefore -->`\n\n`<!--#clipafter -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#clipbefore -->\nblah\n<!--#clipafter -->\n</body>\n</html>\n```\n\nResults:\n```html\nblah\n```\n\n### Clip between\n`<!--#clipbetween -->`\n\n`<!--#endclipbetween -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\n<!--#clipbetween -->\na widget!\n<!--#endclipbetween -->\nsomething else\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\nsomething else\n</body>\n</html>\n```\n\n## More Complicated Examples\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License)\n\n[npm-url]: https://npmjs.org/package/gulp-htmlincluder\n[npm-image]: https://badge.fury.io/js/gulp-htmlincluder.png\n\n[travis-url]: http://travis-ci.org/internetErik/gulp-htmlincluder\n[travis-image]: https://secure.travis-ci.org/internetErik/gulp-htmlincluder.png?branch=master\n\n[coveralls-url]: https://coveralls.io/r/internetErik/gulp-htmlincluder\n[coveralls-image]: https://coveralls.io/repos/internetErik/gulp-htmlincluder/badge.png\n\n[depstat-url]: https://david-dm.org/internetErik/gulp-htmlincluder\n[depstat-image]: https://david-dm.org/internetErik/gulp-htmlincluder.png\n","readmeFilename":"README.md","gitHead":"4eb7471e12b083515f88ff7faf28b84a8fb3d480","_id":"gulp-htmlincluder@1.5.11","_npmVersion":"5.6.0","_nodeVersion":"9.6.1","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-5UZ+UOfz2J+BXNhjiiIlK3zjGQj3yCZ2VNyizYUjhCGBliGw+fxtIj0jPEDh/nghk4M6tI6sgqauCANKPd6d2Q==","shasum":"7dfc217a1baeab9f4383f4fcc3ca2e9121ccfd1e","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.5.11.tgz","fileCount":43,"unpackedSize":160438,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDqwULRBs/dnSJI6GkwGm42TTKYKPnxIJ9sP77M+2+TPAiBkn7JKPj3nSkceNFZWWzN8343wx0vMiepcc9urO2Cebg=="}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_1.5.11_1520274278633_0.8165512860258379"},"_hasShrinkwrap":false},"1.5.12":{"name":"gulp-htmlincluder","version":"1.5.12","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack -p","webpack":"webpack -w"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-env":"^1.6.1","coveralls":"*","event-stream":"*","gulp":"^3.9.1","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^3.11.0","webpack-cli":"^2.0.4"},"licenses":[{"type":"MIT"}],"readme":"# gulp-htmlincluder\n[![NPM version][npm-image]][npm-url]  [![Dependency Status][depstat-image]][depstat-url]\n\n> htmlincluder plugin for [gulp](https://github.com/wearefractal/gulp)\n\n## What does this do?\n\nAt it's most basic level, this allows you to build files out of other files by marking up your files in a particular way. It also lets you insert data into these files (from a json object).\n\n## What was this intended to do?\n\nhtmlincluder was written with the intention of working on static websites while still allowing for a component based development. It also was intended to let the individual components be testable by themselves by allowing the individual component files to include portions that would be removed on build.\n\nIt also can allow the inclusion of some dynamic content into these static sites, as long as you can wrangle said content into a json object and pass it in when you are building.\n\nI'm sure this can be put to a much broader use than originally intended (and may do for a name change at some point, since there is no reason you couldn't include json files into json files, or do other things.)\n\n## Usage\n\n### Install\n\n```shell\nnpm install --save-dev gulp-htmlincluder\n```\n\n### Sample `gulpfile.js`\n\nThen, add it to your `gulpfile.js`:\n\n```javascript\nvar gulp = require('gulp'),\n\tincluder = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  gulp.src('files/*.html')\n    .pipe(includer())\n      .pipe(gulp.dest('dist/'));\n});\n\n// and example using a json data file\ngulp.task('htmlIncluderJson', function() {\n  var json = require('./input-file.json');\n  var options = {\n    jsonInput    : json,\n  };\n\n  gulp.src('files/*.html')\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\ngulp.task('includeJson', ['htmlIncluderJson']);\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n## API\n\n### *File Naming Requirement*\n\nhtmlincluder *requires* files follow a particular naming convention.\n\nFiles that you want to include in other files begin with `-`.\n\nFiles that you want to wrap around other files begin with `_`.\n\nFiles that you want to use to build the resulting static pages can be named however you want, as long as they don't begin with `-` or `_`.\n\nRight now this is necessary because the files that will ultimately exist in the build folder are those that don't start with `-` or `_`. I'd love to change this to determine this in another manner (for example, only files that aren't included are finally built). Would love a pull request trying this since I'm not sure I'll get around to it soon.\n\n### Terminology\n\nBasic tag structure\n\n`<!--#tagName attributeName=\"attributeValue\" -->`\n\n### All Tags\n\nNote: '*' means required attribute\n\n* Wrapping a file with another file\n  * `<!--#wrap path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n  * `<!--#middle -->` <-- the wrapped file gets inserted here\n  * `<!--#endwrap -->`\n* Inserting a file\n  * `<!--#insert path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n* Inserting Json (passed in from parent component)\n  * `<!--#data jsonPath=\"*\" default=\"\" rawJson=\"\" -->`\n* Inserting Json (from data input, or default value)\n  * `<!--#jsonInsert jsonPath=\"*\" default=\"\" -->`\n* Control Flow\n  * If\n    * `<!--#if jsonPath=\"*\" rawJson=\"\" -->`\n    * `<!--#endif -->`\n  * Each (repeater)\n    * `<!--#each count=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n    * `<!--#endeach -->`\n* Clipping (Ignores parts of file)\n  * `<!--#clipbefore -->`\n  * `<!--#clipafter -->`\n  * `<!--#clipbetween -->`\n  * `<!--#endclipbetween -->`\n\n### Attributes\n\n#### path\n\nA relative (to current file) path to a file.\n\n#### jsonPath\n\nA path to data in a json object. For example:\n\n```json\n{\n  a: {\n    b: {\n      c: 'hello world'\n    }\n  }\n}\n```\n\nThe path to `c` is `a.b.c`.\n\n#### rawJson\n\nA string that contains a json object.\n\n*Warning*\n\nInternally `eval` is used so beware. But also, you could technically write a script that generates an object if you need more complicated data.\n\nFor example:\n\n`rawJson=\"(function(){ return {title: 'generated object?'} })()\"`\n\n#### count\n\nOn an #each you can tell it how many times to repeat the inner content with a count attribute\n\n`<!--#each count=\"3\" -->hello world<!--#endeach -->\n\n### Insert\n\nThis is the simplest use case.  Simply put the following html comment\n\n`<!--#insert path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#insert path=\"-file2.html\" -->\n</body>\n</html>\n```\n\n`-file2.html`\n```html\n  hello world\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Configure insert to use other text\n\nIf you want to use ssi includes along with this, and so have the insert string follow that format there is an arguemtn to pass into the htmlincluder in gulp.\n\nThanks to theSLY for suggesting this!\n\n```javascript\nvar gulp = require('gulp'),\n  includer = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  var options = {\n    insertPattern: 'include virtual',\n  };\n\n  gulp.src('files/*.html')\n//now looks for &lt;!--#include virtual, instead of &lt;!--#insert\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n### Wrap\n\n`<!--#wrap path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\nAND\n\n`<!--#endwrap -->`\n\nThe middle tag must be placed in the wrap file so we know where to put the middle part of the other file\n\n`<!--#middle -->`\n\n#### Example\n\n`file1.html`\n```html\n<!--#wrap path=\"_file2.html\" -->\n  hello world\n<!--#endwrap -->\n```\n\n`_file2.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#middle -->\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n### data\n\nInside of wrap and insert tags that you have used the `jsonPath` attribute on you can use use this tag to print data that has been passed down.\n\n`<!--#data jsonPath=\"<path.to.json>\" default=\"some text\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!-- JSON path passed down from above -->\n<!--#insert path=\"-insert.html\" jsonPath=\"hello\" -->\n</body>\n</html>\n```\n\n`-insert.html`\n```html\n<div>\n  <!--#data jsonPath=\"world\" -->\n</div>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  <div>\n    hello world\n  </div>\n</body>\n</html>\n```\n\n### jsonInsert\n\nWhen using a json data file, you can pull data from it directly using this tag.\n\n`<!--#jsonInsert jsonPath=\"<path.to.json>\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#jsonInsert jsonPath=\"hello.world\" -->\n</body>\n</html>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Inline json objects\n\nInstead of using the data file, you can provide a raw json object\n\n`<!--#jsonInsert jsonPath=\"path.to.json\" rawJson=\"{ path: { to: { json: \"hello world\" } } }\" -->`\n\nResults\n\n`hello world`\n\n### Each\n\nEach can be used to iterate over a json array, or just to repeat some data a number of times.\n\n#### Just with a count\n\n```\n<!--#each jsonPath=\"this\" count=\"5\" -->\n  <div>hello world</div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n\n```\n\n#### With an array of values in json input\n\njson input:\n```\n{\n  data : [1, 2, 3, 4]\n}\n```\n\n\n```\n<!--#each jsonPath=\"data\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values, limited by count\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" count=\"2\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n\n```\n\n\n\n#### With an array of objects\n\n**note: use single quotes in json objects, which means you'll need to escape**\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[\n    { name: 'Tom', age: 33, bio: 'Bio for Tom' },\n    { name: 'Dick', age: 55, bio: 'Dick\\'s bio' },\n    { name: 'Jane', age: 28, bio: 'Bio for Jane' },\n    { name: 'Harry', age: 27 },\n  ]\" -->\n  <div>name: <!--#data jsonPath=\"name\" --></div>\n  <div>age: <!--#data jsonPath=\"age\" --></div>\n  <div>bio: <!--#data jsonPath=\"bio\" default=\"nothing is known about them\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>name: Tom</div>\n  <div>age: 33</div>\n  <div>bio: Bio for Tom</div>\n\n  <div>name: Dick</div>\n  <div>age: 55</div>\n  <div>bio: Dick's bio</div>\n\n  <div>name: Jane</div>\n  <div>age: 28</div>\n  <div>bio: Bio for Jane</div>\n\n  <div>name: Harry</div>\n  <div>age: 27</div>\n  <div>bio: nothing is known about them</div>\n\n\n```\n\n### Clip tops and bottoms off of files\n`<!--#clipbefore -->`\n\n`<!--#clipafter -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#clipbefore -->\nblah\n<!--#clipafter -->\n</body>\n</html>\n```\n\nResults:\n```html\nblah\n```\n\n### Clip between\n`<!--#clipbetween -->`\n\n`<!--#endclipbetween -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\n<!--#clipbetween -->\na widget!\n<!--#endclipbetween -->\nsomething else\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\nsomething else\n</body>\n</html>\n```\n\n## More Complicated Examples\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License)\n\n[npm-url]: https://npmjs.org/package/gulp-htmlincluder\n[npm-image]: https://badge.fury.io/js/gulp-htmlincluder.png\n\n[travis-url]: http://travis-ci.org/internetErik/gulp-htmlincluder\n[travis-image]: https://secure.travis-ci.org/internetErik/gulp-htmlincluder.png?branch=master\n\n[coveralls-url]: https://coveralls.io/r/internetErik/gulp-htmlincluder\n[coveralls-image]: https://coveralls.io/repos/internetErik/gulp-htmlincluder/badge.png\n\n[depstat-url]: https://david-dm.org/internetErik/gulp-htmlincluder\n[depstat-image]: https://david-dm.org/internetErik/gulp-htmlincluder.png\n","readmeFilename":"README.md","gitHead":"911bdc5d527a9ea8cb5837caddad6095e8adfd59","_id":"gulp-htmlincluder@1.5.12","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-ccOxseMZc/VKnXeqXNcsE/G0+C0YI42131/CrcqSRUBWDpRujSmO/kd60nb7v2wgjQST4SgXeiKZWuVrd16nlg==","shasum":"9fd8973987b3e29634e99802b72577ed65a71944","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.5.12.tgz","fileCount":47,"unpackedSize":161646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3jGnCRA9TVsSAnZWagAAEBsP/1YMtBRZJpzwOMIWNWlm\nUyVSUI9bk0MIeYIWapJndNaTJHKPaljZOMncBYUOykv2Hd6WvoTIhUj8lx4t\nHz8Rpzr4NL1+M+Am3yrxScQhXSa784LN/yl43cU1OOrReOZVs3xhlUZTsk3R\nCQvXBGCsaUUTKiQVrXPKLsgo8yoQ0QvogEYhkRe1FbEgOf/MZFSb6hkrcBRf\nBOwo1+nxgtH2ea4IcEiar3r6pzn0Kw21S2DV+KZxPCM9Q/LyYEA/InaXKbtd\nNbQkqei5lru/Vd8y+cDsT1ylJxGmPlXnut0sEDsuiMxQFR9T3jstsUb0UvxW\nih1oR6WELQLu1XDbKbpnaAtXtSDFEsq+n2Hf+0ait8jSgkWUqnfZk5zRh2iB\n1oBDt8GOaik9NrKmfQP8bUO9Tv73Qmc3AmyegrJyzd1Ti5s5raomz0hLcNvD\nSeTXV2QSAzihYzS7oswWGLMKf7mfZp6w6BHj+a6SkCCmM4aObpt5LR9S8jh9\nK3w9dN0dqfO16fJuExvChxZ2YyN9qNCrLWLIqWhkBTdnBwg2b2YDN6D2vzbE\nSmI2U7tBTQKRKZLCCu6ua7VCQC0i1gx5RNnMvEcV/PwdX8qY2fx7RKpRU2LP\nR7tOCDFowwFJ1gmGgdjZ67c2LUd8vwrkSVtBg7xCqCD90//NqvEb4qFtkNfA\nprDm\r\n=WK0x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC4EM+Dq4gtTv4YloTihl+NQsVrH6RFIQ21S/wNFA3SvAiEAg/uhDUPa4n7Ur7z6K/judaojL1qpXZt//Yw0yk8nmng="}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_1.5.12_1524511142788_0.7613809291356315"},"_hasShrinkwrap":false},"1.5.13":{"name":"gulp-htmlincluder","version":"1.5.13","description":"Gulp plugin for building files into each other.  Made for a workflow involving responsive unit testing.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack -p","webpack":"webpack -w"},"dependencies":{"gulp-util":"~2.2.0","through2":"*"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-env":"^1.6.1","coveralls":"*","event-stream":"*","gulp":"^3.9.1","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^3.11.0","webpack-cli":"^2.0.4"},"licenses":[{"type":"MIT"}],"readme":"# gulp-htmlincluder\n[![NPM version][npm-image]][npm-url]  [![Dependency Status][depstat-image]][depstat-url]\n\n> htmlincluder plugin for [gulp](https://github.com/wearefractal/gulp)\n\n## What does this do?\n\nAt it's most basic level, this allows you to build files out of other files by marking up your files in a particular way. It also lets you insert data into these files (from a json object).\n\n## What was this intended to do?\n\nhtmlincluder was written with the intention of working on static websites while still allowing for a component based development. It also was intended to let the individual components be testable by themselves by allowing the individual component files to include portions that would be removed on build.\n\nIt also can allow the inclusion of some dynamic content into these static sites, as long as you can wrangle said content into a json object and pass it in when you are building.\n\nI'm sure this can be put to a much broader use than originally intended (and may do for a name change at some point, since there is no reason you couldn't include json files into json files, or do other things.)\n\n## Usage\n\n### Install\n\n```shell\nnpm install --save-dev gulp-htmlincluder\n```\n\n### Sample `gulpfile.js`\n\nThen, add it to your `gulpfile.js`:\n\n```javascript\nvar gulp = require('gulp'),\n\tincluder = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  gulp.src('files/*.html')\n    .pipe(includer())\n      .pipe(gulp.dest('dist/'));\n});\n\n// and example using a json data file\ngulp.task('htmlIncluderJson', function() {\n  var json = require('./input-file.json');\n  var options = {\n    jsonInput    : json,\n  };\n\n  gulp.src('files/*.html')\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\ngulp.task('includeJson', ['htmlIncluderJson']);\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n## API\n\n### *File Naming Requirement*\n\nhtmlincluder *requires* files follow a particular naming convention.\n\nFiles that you want to include in other files begin with `-`.\n\nFiles that you want to wrap around other files begin with `_`.\n\nFiles that you want to use to build the resulting static pages can be named however you want, as long as they don't begin with `-` or `_`.\n\nRight now this is necessary because the files that will ultimately exist in the build folder are those that don't start with `-` or `_`. I'd love to change this to determine this in another manner (for example, only files that aren't included are finally built). Would love a pull request trying this since I'm not sure I'll get around to it soon.\n\n### Terminology\n\nBasic tag structure\n\n`<!--#tagName attributeName=\"attributeValue\" -->`\n\n### All Tags\n\nNote: '*' means required attribute\n\n* Wrapping a file with another file\n  * `<!--#wrap path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n  * `<!--#middle -->` <-- the wrapped file gets inserted here\n  * `<!--#endwrap -->`\n* Inserting a file\n  * `<!--#insert path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n* Inserting Json (passed in from parent component)\n  * `<!--#data jsonPath=\"*\" default=\"\" rawJson=\"\" -->`\n* Inserting Json (from data input, or default value)\n  * `<!--#jsonInsert jsonPath=\"*\" default=\"\" -->`\n* Control Flow\n  * If\n    * `<!--#if jsonPath=\"*\" rawJson=\"\" -->`\n    * `<!--#endif -->`\n  * Each (repeater)\n    * `<!--#each count=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n    * `<!--#endeach -->`\n* Clipping (Ignores parts of file)\n  * `<!--#clipbefore -->`\n  * `<!--#clipafter -->`\n  * `<!--#clipbetween -->`\n  * `<!--#endclipbetween -->`\n\n### Attributes\n\n#### path\n\nA relative (to current file) path to a file.\n\n#### jsonPath\n\nA path to data in a json object. For example:\n\n```json\n{\n  a: {\n    b: {\n      c: 'hello world'\n    }\n  }\n}\n```\n\nThe path to `c` is `a.b.c`.\n\n#### rawJson\n\nA string that contains a json object.\n\n*Warning*\n\nInternally `eval` is used so beware. But also, you could technically write a script that generates an object if you need more complicated data.\n\nFor example:\n\n`rawJson=\"(function(){ return {title: 'generated object?'} })()\"`\n\n#### count\n\nOn an #each you can tell it how many times to repeat the inner content with a count attribute\n\n`<!--#each count=\"3\" -->hello world<!--#endeach -->\n\n### Insert\n\nThis is the simplest use case.  Simply put the following html comment\n\n`<!--#insert path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#insert path=\"-file2.html\" -->\n</body>\n</html>\n```\n\n`-file2.html`\n```html\n  hello world\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Configure insert to use other text\n\nIf you want to use ssi includes along with this, and so have the insert string follow that format there is an arguemtn to pass into the htmlincluder in gulp.\n\nThanks to theSLY for suggesting this!\n\n```javascript\nvar gulp = require('gulp'),\n  includer = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  var options = {\n    insertPattern: 'include virtual',\n  };\n\n  gulp.src('files/*.html')\n//now looks for &lt;!--#include virtual, instead of &lt;!--#insert\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n### Wrap\n\n`<!--#wrap path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\nAND\n\n`<!--#endwrap -->`\n\nThe middle tag must be placed in the wrap file so we know where to put the middle part of the other file\n\n`<!--#middle -->`\n\n#### Example\n\n`file1.html`\n```html\n<!--#wrap path=\"_file2.html\" -->\n  hello world\n<!--#endwrap -->\n```\n\n`_file2.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#middle -->\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n### data\n\nInside of wrap and insert tags that you have used the `jsonPath` attribute on you can use use this tag to print data that has been passed down.\n\n`<!--#data jsonPath=\"<path.to.json>\" default=\"some text\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!-- JSON path passed down from above -->\n<!--#insert path=\"-insert.html\" jsonPath=\"hello\" -->\n</body>\n</html>\n```\n\n`-insert.html`\n```html\n<div>\n  <!--#data jsonPath=\"world\" -->\n</div>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  <div>\n    hello world\n  </div>\n</body>\n</html>\n```\n\n### jsonInsert\n\nWhen using a json data file, you can pull data from it directly using this tag.\n\n`<!--#jsonInsert jsonPath=\"<path.to.json>\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#jsonInsert jsonPath=\"hello.world\" -->\n</body>\n</html>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Inline json objects\n\nInstead of using the data file, you can provide a raw json object\n\n`<!--#jsonInsert jsonPath=\"path.to.json\" rawJson=\"{ path: { to: { json: \"hello world\" } } }\" -->`\n\nResults\n\n`hello world`\n\n### Each\n\nEach can be used to iterate over a json array, or just to repeat some data a number of times.\n\n#### Just with a count\n\n```\n<!--#each jsonPath=\"this\" count=\"5\" -->\n  <div>hello world</div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n\n```\n\n#### With an array of values in json input\n\njson input:\n```\n{\n  data : [1, 2, 3, 4]\n}\n```\n\n\n```\n<!--#each jsonPath=\"data\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values, limited by count\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" count=\"2\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n\n```\n\n\n\n#### With an array of objects\n\n**note: use single quotes in json objects, which means you'll need to escape**\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[\n    { name: 'Tom', age: 33, bio: 'Bio for Tom' },\n    { name: 'Dick', age: 55, bio: 'Dick\\'s bio' },\n    { name: 'Jane', age: 28, bio: 'Bio for Jane' },\n    { name: 'Harry', age: 27 },\n  ]\" -->\n  <div>name: <!--#data jsonPath=\"name\" --></div>\n  <div>age: <!--#data jsonPath=\"age\" --></div>\n  <div>bio: <!--#data jsonPath=\"bio\" default=\"nothing is known about them\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>name: Tom</div>\n  <div>age: 33</div>\n  <div>bio: Bio for Tom</div>\n\n  <div>name: Dick</div>\n  <div>age: 55</div>\n  <div>bio: Dick's bio</div>\n\n  <div>name: Jane</div>\n  <div>age: 28</div>\n  <div>bio: Bio for Jane</div>\n\n  <div>name: Harry</div>\n  <div>age: 27</div>\n  <div>bio: nothing is known about them</div>\n\n\n```\n\n### Clip tops and bottoms off of files\n`<!--#clipbefore -->`\n\n`<!--#clipafter -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#clipbefore -->\nblah\n<!--#clipafter -->\n</body>\n</html>\n```\n\nResults:\n```html\nblah\n```\n\n### Clip between\n`<!--#clipbetween -->`\n\n`<!--#endclipbetween -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\n<!--#clipbetween -->\na widget!\n<!--#endclipbetween -->\nsomething else\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\nsomething else\n</body>\n</html>\n```\n\n## More Complicated Examples\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License)\n\n[npm-url]: https://npmjs.org/package/gulp-htmlincluder\n[npm-image]: https://badge.fury.io/js/gulp-htmlincluder.png\n\n[travis-url]: http://travis-ci.org/internetErik/gulp-htmlincluder\n[travis-image]: https://secure.travis-ci.org/internetErik/gulp-htmlincluder.png?branch=master\n\n[coveralls-url]: https://coveralls.io/r/internetErik/gulp-htmlincluder\n[coveralls-image]: https://coveralls.io/repos/internetErik/gulp-htmlincluder/badge.png\n\n[depstat-url]: https://david-dm.org/internetErik/gulp-htmlincluder\n[depstat-image]: https://david-dm.org/internetErik/gulp-htmlincluder.png\n","readmeFilename":"README.md","gitHead":"c38fa3027fc97db995d16c7dc86a1707617d3382","_id":"gulp-htmlincluder@1.5.13","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-asQNzcQaY32g5gRano32pTOdwer1rWcZrNMFbZdm6u7ien+78X/oYxrklvudgyn3bohn9aNC6tIzY9Ioj2XmDA==","shasum":"d3a0b238489a529f1b1727b3c3b9dbc678b44173","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-1.5.13.tgz","fileCount":47,"unpackedSize":174499,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3jPuCRA9TVsSAnZWagAAzo4P/2RS31ztzpQ7Pm7Nwg/V\ngDc3X4GIv7IZakcA0zPlrOhb8Nm4zynqTxbQZ71gTH29oJuPj3RTY6JPBwOs\ncJ2C052JsaJS9hutB0UD0CYoZrBWttOzvkuROOt/Y4caau8bElnRhHJ4PZg7\nQHSsxtsWj48hS5YLbebrMI0N4X4azvZ+7YOxn1mvVUOtiYzLLdG2TIzqHi38\noKSJyeNCNuv/b5gZu1MAJ6QygOVCl/qMqJ15gePoH58YapSFiQ0wDt4Y+AsV\nHgu2MAD1NtZGfp4TyVqeABlUsdciZeQs8f+vbczxL6SrrTGLAfpLpDTgpAAc\nLqkZ/Aci2tiGGbZQa8XBgHGQeHORsQOpKVcbKlF/Ee+9SangTllyg/FDI2Zr\nq6avFWjeszlzAfWLZZz/alhammHFs1PLuLcvrgIFZbBlH2x1ypuoBOY6f647\nPkzIOyKJIuBMTNixbu/98M7OGZ/nDXsl2r0l3vu0TrnoKQDJN0Koc4oE6ttp\ns2HwIz5ijb7ijCfTMeNYESWwe4lRTDtAxGtFC3zDaVdqsCzWXN7yakRlAwq7\nJTHdqFFkTJe4ehnZ+43+i75nPWyL4bRLm6s18jrZ4MNRI0yLAJQFVVioO2fR\nCQU0MSsbgOKoOrndCPkBMMGMCVzed7d7bkssQpUDF8l9xcL//Ar9VKgWB235\nqCTs\r\n=vOs5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyuQ5aMf4zagHh/niyHqWYAPS0Qy7gDsFozanwoRDcOQIgI6Xg/vSro1egNTZ/FdVfUbhKrVC/8OWL3zRs+CbvviM="}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_1.5.13_1524511725212_0.7227504528388815"},"_hasShrinkwrap":false},"2.0.0":{"name":"gulp-htmlincluder","version":"2.0.0","description":"Gulp plugin for building files into each other.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack -p","webpack":"webpack -w"},"dependencies":{"gulp-util":"^3.0.8","natives":"^1.1.6","through2":"*"},"babel":{"presets":[["env",{"targets":{"browsers":[">0.25%","not ie 11","not op_mini all"]}}],"es2015","stage-2"]},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.5","babel-preset-env":"^1.6.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","babel-register":"^6.24.1","coveralls":"*","event-stream":"*","gulp":"^3.9.1","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^4.23.1","webpack-bundle-analyzer":"^3.0.3","webpack-cli":"^3.1.2","webpack-s3-plugin":"^1.0.2"},"licenses":[{"type":"MIT"}],"readme":"# gulp-htmlincluder\n[![NPM version][npm-image]][npm-url]  [![Dependency Status][depstat-image]][depstat-url]\n\n> htmlincluder plugin for [gulp](https://github.com/wearefractal/gulp)\n\n## What does this do?\n\nAt it's most basic level, this allows you to build files out of other files by marking up your files in a particular way. It also lets you insert data into these files from a json object provided from outside.\n\n## What was this intended to do?\n\nhtmlincluder was written with the intention of working on static websites while still allowing for a component based development. It also was intended to let the individual components be testable by themselves by allowing the individual component files to include portions that would be removed on build.\n\nIt also can allow the inclusion of some dynamic content into these static sites, as long as you can wrangle said content into a json object and pass it in when you are building.\n\nI'm sure this can be put to a much broader use than originally intended (and may do for a name change at some point, since there is no reason you couldn't include json files into json files, or do other things.)\n\n## Usage\n\n### Install\n\n```shell\nnpm install --save-dev gulp-htmlincluder\n```\n\n### Sample `gulpfile.js`\n\nThen, add it to your `gulpfile.js`:\n\n```javascript\nvar gulp = require('gulp'),\n\tincluder = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  gulp.src('files/*.html')\n    .pipe(includer())\n      .pipe(gulp.dest('dist/'));\n});\n\n// and example using a json data file\ngulp.task('htmlIncluderJson', function() {\n  var json = require('./input-file.json');\n  var options = {\n    jsonInput    : json,\n  };\n\n  gulp.src('files/*.html')\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\ngulp.task('includeJson', ['htmlIncluderJson']);\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n## API\n\n### *File Naming Requirement*\n\nhtmlincluder *requires* files follow a particular naming convention.\n\nFiles that you want to include in other files begin with `-`.\n\nFiles that you want to wrap around other files begin with `_`.\n\nFiles that you want to use to build the resulting static pages can be named however you want, as long as they don't begin with `-` or `_`.\n\nRight now this is necessary because the files that will ultimately exist in the build folder are those that don't start with `-` or `_`. I'd love to change this to determine this in another manner (for example, only files that aren't included are finally built). Would love a pull request trying this since I'm not sure I'll get around to it soon.\n\n### Terminology\n\nBasic tag structure\n\n`<!--#tagName attributeName=\"attributeValue\" -->`\n\n### All Tags\n\nNote: '*' means required attribute\n\n* Wrapping a file with another file\n  * `<!--#wrap path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n  * `<!--#middle -->` <-- the wrapped file gets inserted here\n  * `<!--#endwrap -->`\n* Inserting a file\n  * `<!--#insert path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n* Inserting Json (passed in from parent component)\n  * `<!--#data jsonPath=\"*\" default=\"\" rawJson=\"\" -->`\n* Inserting Json (from data input, or default value)\n  * `<!--#jsonInsert jsonPath=\"*\" default=\"\" -->`\n* Control Flow\n  * If\n    * `<!--#if jsonPath=\"*\" rawJson=\"\" -->`\n    * `<!--#endif -->`\n  * Each (repeater)\n    * `<!--#each count=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n    * `<!--#endeach -->`\n* Clipping (Ignores parts of file)\n  * `<!--#clipbefore -->`\n  * `<!--#clipafter -->`\n  * `<!--#clipbetween -->`\n  * `<!--#endclipbetween -->`\n\n### Attributes\n\n#### path\n\nA relative (to current file) path to a file.\n\n#### jsonPath\n\nA path to data in a json object. For example:\n\n```\n{\n  a: {\n    b: {\n      c: 'hello world'\n    }\n  }\n}\n```\n\nThe path to `c` is `a.b.c`.\n\n#### rawJson\n\nA string that contains a json object.\n\n*Warning*\n\nInternally `eval` is used so beware. But also, you could technically write a script that generates an object if you need more complicated data.\n\nFor example:\n\n`rawJson=\"(function(){ return {title: 'generated object?'} })()\"`\n\n#### count\n\nOn an #each you can tell it how many times to repeat the inner content with a count attribute\n\n`<!--#each count=\"3\" -->hello world<!--#endeach -->`\n\n\n### Insert\n\nThis is the simplest use case.  Simply put the following html comment\n\n`<!--#insert path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#insert path=\"-file2.html\" -->\n</body>\n</html>\n```\n\n`-file2.html`\n```html\n  hello world\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Configure insert to use other text\n\nIf you want to use ssi includes along with this, and so have the insert string follow that format there is an arguemtn to pass into the htmlincluder in gulp.\n\nThanks to theSLY for suggesting this!\n\n```javascript\nvar gulp = require('gulp'),\n  includer = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  var options = {\n    insertPattern: 'include virtual',\n  };\n\n  gulp.src('files/*.html')\n//now looks for &lt;!--#include virtual, instead of &lt;!--#insert\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n### Wrap\n\n`<!--#wrap path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\nAND\n\n`<!--#endwrap -->`\n\nThe middle tag must be placed in the wrap file so we know where to put the middle part of the other file\n\n`<!--#middle -->`\n\n#### Example\n\n`file1.html`\n```html\n<!--#wrap path=\"_file2.html\" -->\n  hello world\n<!--#endwrap -->\n```\n\n`_file2.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#middle -->\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n### data\n\nInside of wrap and insert tags that you have used the `jsonPath` attribute on you can use use this tag to print data that has been passed down.\n\n`<!--#data jsonPath=\"<path.to.json>\" default=\"some text\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!-- JSON path passed down from above -->\n<!--#insert path=\"-insert.html\" jsonPath=\"hello\" -->\n</body>\n</html>\n```\n\n`-insert.html`\n```html\n<div>\n  <!--#data jsonPath=\"world\" -->\n</div>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  <div>\n    hello world\n  </div>\n</body>\n</html>\n```\n\n### jsonInsert\n\nWhen using a json data file, you can pull data from it directly using this tag.\n\n`<!--#jsonInsert jsonPath=\"<path.to.json>\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#jsonInsert jsonPath=\"hello.world\" -->\n</body>\n</html>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Inline json objects\n\nInstead of using the data file, you can provide a raw json object\n\n`<!--#jsonInsert jsonPath=\"path.to.json\" rawJson=\"{ path: { to: { json: \"hello world\" } } }\" -->`\n\nResults\n\n`hello world`\n\n### Each\n\nEach can be used to iterate over a json array, or just to repeat some data a number of times.\n\n#### Just with a count\n\n```\n<!--#each jsonPath=\"this\" count=\"5\" -->\n  <div>hello world</div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n\n```\n\n#### With an array of values in json input\n\njson input:\n```\n{\n  data : [1, 2, 3, 4]\n}\n```\n\n\n```\n<!--#each jsonPath=\"data\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values, limited by count\n\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" count=\"2\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults\n```\n\n  <div>1</div>\n\n  <div>2</div>\n\n\n```\n\n#### With an array of objects\n\n**note: use single quotes in json objects, which means you'll need to escape**\n\n```\n<!--#each jsonPath=\"this\" rawJson=\"[\n    { name: 'Tom', age: 33, bio: 'Bio for Tom' },\n    { name: 'Dick', age: 55, bio: 'Dick\\'s bio' },\n    { name: 'Jane', age: 28, bio: 'Bio for Jane' },\n    { name: 'Harry', age: 27 },\n  ]\" -->\n  <div>name: <!--#data jsonPath=\"name\" --></div>\n  <div>age: <!--#data jsonPath=\"age\" --></div>\n  <div>bio: <!--#data jsonPath=\"bio\" default=\"nothing is known about them\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```\n\n  <div>name: Tom</div>\n  <div>age: 33</div>\n  <div>bio: Bio for Tom</div>\n\n  <div>name: Dick</div>\n  <div>age: 55</div>\n  <div>bio: Dick's bio</div>\n\n  <div>name: Jane</div>\n  <div>age: 28</div>\n  <div>bio: Bio for Jane</div>\n\n  <div>name: Harry</div>\n  <div>age: 27</div>\n  <div>bio: nothing is known about them</div>\n\n\n```\n\n### Clip tops and bottoms off of files\n`<!--#clipbefore -->`\n\n`<!--#clipafter -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#clipbefore -->\nblah\n<!--#clipafter -->\n</body>\n</html>\n```\n\nResults:\n```html\nblah\n```\n\n### Clip between\n`<!--#clipbetween -->`\n\n`<!--#endclipbetween -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\n<!--#clipbetween -->\na widget!\n<!--#endclipbetween -->\nsomething else\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\nsomething else\n</body>\n</html>\n```\n\n## More Complicated Examples\n\n## ToDo\n\n* Support arbitrarily nested tagging (e.g., <!--# <!--# --> -->)\n* Rewrite more recursively so the code is more managable and so extensible\n* Implement some form of caching so only changed files need be processed\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License)\n\n[npm-url]: https://npmjs.org/package/gulp-htmlincluder\n[npm-image]: https://badge.fury.io/js/gulp-htmlincluder.png\n\n[travis-url]: http://travis-ci.org/internetErik/gulp-htmlincluder\n[travis-image]: https://secure.travis-ci.org/internetErik/gulp-htmlincluder.png?branch=master\n\n[coveralls-url]: https://coveralls.io/r/internetErik/gulp-htmlincluder\n[coveralls-image]: https://coveralls.io/repos/internetErik/gulp-htmlincluder/badge.png\n\n[depstat-url]: https://david-dm.org/internetErik/gulp-htmlincluder\n[depstat-image]: https://david-dm.org/internetErik/gulp-htmlincluder.png\n","readmeFilename":"README.md","gitHead":"ad9ae5b989256f2ff6ebbc9aa3f659d230b1c2fb","_id":"gulp-htmlincluder@2.0.0","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-IDNDY6SvgZ1WsDFpOBNcJHeamwNKLy7zEAXj0g6aHq2aXf926F4lh4Z8jrFC+GCYmyow89UE/fQ+HZ5hxTec+Q==","shasum":"251490f69e439e0465a3e9e75a95394d287aac52","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-2.0.0.tgz","fileCount":34,"unpackedSize":91508,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfJSNCRA9TVsSAnZWagAAijkP/2sD9kVk6Epl0F8HCquR\nNmB3VoaSZP461TcgsYQOdcGp8LXfB0zCYpXlpIHiGu+YruMGJVyRnyji2Srm\nzpiGPfhKvSt10bmGDk7Od3LkgLG/YPIuzOu/ybGjk6LmC43DkKEvsQPaus2n\ntMopknenRH8HB2ysL8GKIG394ynZ1iux098DOxFyTd47lg/rnHFjF7m7hRHx\nol3cYLxieWCmJC2w8mnhQQMnBsS/rHgl4wnWGytDdENFoshgqqJFnxdfsbSz\nIPpJnPlRKcPE+gIHco6GdtyFRf4OVHcZkXY90eKNxS6YDjgay3Byzt/Rt03h\nKKmvOQZv23KgkfHCmUyZ7ADfujR8ovKfZmcYX1ri6lQojwWMGpU/z7PcbmKa\nWODeQpHpGQIjhe4ssCBBb7WTAqxTh0xkX+Fn04NJgDmKNklSpIunPL+rNpTu\nvtYqYbS/Q8lY0+6+VSPZHDxEhgCuHeOYMw6jA9WQ8CgUSMv4bsjqq3VnsUxo\n2HcYlzUF/EiO903o8F8F10dakC4jpCmH6Yh9aj+7q1c3SNIPci+08TYkPVqQ\nqhzNwwuhi3WXGmd5VE+496prAxpbZ1f5bi2NHFh+y+EpoPlw5XcuKhbPUFBj\nVXq4posAsdTci/P9gVdIn+T+vA08CqF8H0VyY98MLPYTA867t1hhkB0HdqU0\nBdIH\r\n=tLN+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtu/M6zAdTMOnShrCVJtmXXm0c+UGfkAqvfkaWTLy8yQIgM8RH0vrtdku2xnEfkH5gAA857neFY5RIvezPG5k0p6A="}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_2.0.0_1551668364684_0.6702134941370033"},"_hasShrinkwrap":false},"2.0.1":{"name":"gulp-htmlincluder","version":"2.0.1","description":"Gulp plugin for building files into each other.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack -p","webpack":"webpack -w"},"dependencies":{"gulp-util":"^3.0.8","natives":"^1.1.6","through2":"*"},"babel":{"presets":[["env",{"targets":{"browsers":[">0.25%","not ie 11","not op_mini all"]}}],"es2015","stage-2"]},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.5","babel-preset-env":"^1.6.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","babel-register":"^6.24.1","coveralls":"*","event-stream":"*","gulp":"^3.9.1","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^4.23.1","webpack-bundle-analyzer":"^3.0.3","webpack-cli":"^3.1.2","webpack-s3-plugin":"^1.0.2"},"licenses":[{"type":"MIT"}],"readme":"# gulp-htmlincluder\n[![NPM version][npm-image]][npm-url]  [![Dependency Status][depstat-image]][depstat-url]\n\n> htmlincluder plugin for [gulp](https://github.com/wearefractal/gulp)\n\n## What does this do?\n\nAt it's most basic level, this allows you to build files out of other files by marking up your files in a particular way. It also lets you insert data into these files from a json object provided from outside.\n\n## What was this intended to do?\n\nhtmlincluder was written with the intention of working on static websites while still allowing for a component based development. It also was intended to let the individual components be testable by themselves by allowing the individual component files to include portions that would be removed on build.\n\nIt also can allow the inclusion of some dynamic content into these static sites, as long as you can wrangle said content into a json object and pass it in when you are building.\n\nI'm sure this can be put to a much broader use than originally intended (and may do for a name change at some point, since there is no reason you couldn't include json files into json files, or do other things.)\n\n## Usage\n\n### Install\n\n```shell\nnpm install --save-dev gulp-htmlincluder\n```\n\n### Sample `gulpfile.js`\n\nThen, add it to your `gulpfile.js`:\n\n```javascript\nvar gulp = require('gulp'),\n\tincluder = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  gulp.src('files/*.html')\n    .pipe(includer())\n      .pipe(gulp.dest('dist/'));\n});\n\n// and example using a json data file\ngulp.task('htmlIncluderJson', function() {\n  var json = require('./input-file.json');\n  var options = {\n    jsonInput    : json,\n  };\n\n  gulp.src('files/*.html')\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\ngulp.task('includeJson', ['htmlIncluderJson']);\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n## API\n\n### *File Naming Requirement*\n\nhtmlincluder *requires* files follow a particular naming convention.\n\nFiles that you want to include in other files begin with `-`.\n\nFiles that you want to wrap around other files begin with `_`.\n\nFiles that you want to use to build the resulting static pages can be named however you want, as long as they don't begin with `-` or `_`.\n\nRight now this is necessary because the files that will ultimately exist in the build folder are those that don't start with `-` or `_`. I'd love to change this to determine this in another manner (for example, only files that aren't included are finally built). Would love a pull request trying this since I'm not sure I'll get around to it soon.\n\n### Terminology\n\nBasic tag structure\n\n`<!--#tagName attributeName=\"attributeValue\" -->`\n\n### All Tags\n\nNote: `*` means required attribute\n\n* Wrapping a file with another file\n  * `<!--#wrap path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n  * `<!--#middle -->` <-- the wrapped file gets inserted here\n  * `<!--#endwrap -->`\n* Inserting a file\n  * `<!--#insert path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n* Inserting Json (passed in from parent component)\n  * `<!--#data jsonPath=\"*\" default=\"\" rawJson=\"\" -->`\n* Inserting Json (from data input, or default value)\n  * `<!--#jsonInsert jsonPath=\"*\" default=\"\" -->`\n* Control Flow\n  * If\n    * `<!--#if jsonPath=\"*\" rawJson=\"\" -->`\n    * `<!--#endif -->`\n  * Each (repeater)\n    * `<!--#each count=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n    * `<!--#endeach -->`\n* Clipping (Ignores parts of file)\n  * `<!--#clipbefore -->`\n  * `<!--#clipafter -->`\n  * `<!--#clipbetween -->`\n  * `<!--#endclipbetween -->`\n\n### Attributes\n\n#### path\n\nA relative (to current file) path to a file.\n\n#### jsonPath\n\nA path to data in a json object. For example:\n\n```\n{\n  a: {\n    b: {\n      c: 'hello world'\n    }\n  }\n}\n```\n\nThe path to `c` is `a.b.c`.\n\n#### rawJson\n\nA string that contains a json object.\n\n*Warning*\n\nInternally `eval` is used so beware. But also, you could technically write a script that generates an object if you need more complicated data.\n\nFor example:\n\n`rawJson=\"(function(){ return {title: 'generated object?'} })()\"`\n\n#### count\n\nOn an #each you can tell it how many times to repeat the inner content with a count attribute\n\n`<!--#each count=\"3\" -->hello world<!--#endeach -->`\n\n\n### Insert\n\nThis is the simplest use case.  Simply put the following html comment\n\n`<!--#insert path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#insert path=\"-file2.html\" -->\n</body>\n</html>\n```\n\n`-file2.html`\n```html\n  hello world\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Configure insert to use other text\n\nIf you want to use ssi includes along with this, and so have the insert string follow that format there is an arguemtn to pass into the htmlincluder in gulp.\n\nThanks to theSLY for suggesting this!\n\n```javascript\nvar gulp = require('gulp'),\n  includer = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  var options = {\n    insertPattern: 'include virtual',\n  };\n\n  gulp.src('files/*.html')\n//now looks for &lt;!--#include virtual, instead of &lt;!--#insert\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n### Wrap\n\n`<!--#wrap path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\nAND\n\n`<!--#endwrap -->`\n\nThe middle tag must be placed in the wrap file so we know where to put the middle part of the other file\n\n`<!--#middle -->`\n\n#### Example\n\n`file1.html`\n```html\n<!--#wrap path=\"_file2.html\" -->\n  hello world\n<!--#endwrap -->\n```\n\n`_file2.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#middle -->\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n### data\n\nInside of wrap and insert tags that you have used the `jsonPath` attribute on you can use use this tag to print data that has been passed down.\n\n`<!--#data jsonPath=\"<path.to.json>\" default=\"some text\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!-- JSON path passed down from above -->\n<!--#insert path=\"-insert.html\" jsonPath=\"hello\" -->\n</body>\n</html>\n```\n\n`-insert.html`\n```html\n<div>\n  <!--#data jsonPath=\"world\" -->\n</div>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  <div>\n    hello world\n  </div>\n</body>\n</html>\n```\n\n### jsonInsert\n\nWhen using a json data file, you can pull data from it directly using this tag.\n\n`<!--#jsonInsert jsonPath=\"<path.to.json>\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#jsonInsert jsonPath=\"hello.world\" -->\n</body>\n</html>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Inline json objects\n\nInstead of using the data file, you can provide a raw json object\n\n`<!--#jsonInsert jsonPath=\"path.to.json\" rawJson=\"{ path: { to: { json: \"hello world\" } } }\" -->`\n\nResults\n\n`hello world`\n\n### Each\n\nEach can be used to iterate over a json array, or just to repeat some data a number of times.\n\n#### Just with a count\n\n```html\n<!--#each count=\"5\" -->\n  <div>hello world</div>\n<!--#endeach -->\n```\n\nResults:\n```html\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n```\n\n#### each over other tags\n\n```html\n<!--#each count=\"5\" -->\n  <!--#insert path=\"./-insert-hello-world.html\" -->\n<!--#endeach -->\n```\n\nResults:\n```html\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n```\n\n#### With an array of values in json input\n\n```html\n<!--#each jsonPath=\"data\" rawJson=\"{ data : [1, 2, 3, 4] }\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults:\n```html\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values\n\n\n```html\n<!--#each rawJson=\"[1, 2, 3, 4]\" -->\n  <div><!--#data jsonPath=\"this\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```html\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n```\n\n#### Array limited by count\n\n\n```html\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" count=\"2\" -->\n  <div><!--#data jsonPath=\"this\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```html\n  <div>1</div>\n\n  <div>2</div>\n```\n\n#### With an array of objects\n\n**note: use single quotes in json objects, which means you'll need to escape**\n\n```html\n<!--#each jsonPath=\"this\" rawJson=\"[\n    { name: 'Tom', age: 33, bio: 'Bio for Tom' },\n    { name: 'Dick', age: 55, bio: 'Dick\\'s bio' },\n    { name: 'Jane', age: 28, bio: 'Bio for Jane' },\n    { name: 'Harry', age: 27 },\n  ]\" -->\n  <div>name: <!--#data jsonPath=\"name\" --></div>\n  <div>age: <!--#data jsonPath=\"age\" --></div>\n  <div>bio: <!--#data jsonPath=\"bio\" default=\"nothing is known about them\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```html\n  <div>name: Tom</div>\n  <div>age: 33</div>\n  <div>bio: Bio for Tom</div>\n\n  <div>name: Dick</div>\n  <div>age: 55</div>\n  <div>bio: Dick's bio</div>\n\n  <div>name: Jane</div>\n  <div>age: 28</div>\n  <div>bio: Bio for Jane</div>\n\n  <div>name: Harry</div>\n  <div>age: 27</div>\n  <div>bio: nothing is known about them</div>\n```\n\n### Clip tops and bottoms off of files\n`<!--#clipbefore -->`\n\n`<!--#clipafter -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#clipbefore -->\nblah\n<!--#clipafter -->\n</body>\n</html>\n```\n\nResults:\n```html\nblah\n```\n\n### Clip between\n`<!--#clipbetween -->`\n\n`<!--#endclipbetween -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\n<!--#clipbetween -->\na widget!\n<!--#endclipbetween -->\nsomething else\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\nsomething else\n</body>\n</html>\n```\n\n## More Complicated Examples\n\nLook in `./test/html`\n\n## ToDo\n\n* Build out more tests - consider more automated versions of them\n* Implement some form of caching so only changed files need be processed\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License)\n\n[npm-url]: https://npmjs.org/package/gulp-htmlincluder\n[npm-image]: https://badge.fury.io/js/gulp-htmlincluder.png\n\n[travis-url]: http://travis-ci.org/internetErik/gulp-htmlincluder\n[travis-image]: https://secure.travis-ci.org/internetErik/gulp-htmlincluder.png?branch=master\n\n[coveralls-url]: https://coveralls.io/r/internetErik/gulp-htmlincluder\n[coveralls-image]: https://coveralls.io/repos/internetErik/gulp-htmlincluder/badge.png\n\n[depstat-url]: https://david-dm.org/internetErik/gulp-htmlincluder\n[depstat-image]: https://david-dm.org/internetErik/gulp-htmlincluder.png\n","readmeFilename":"README.md","gitHead":"5762118b6cd88028fd14e5dc70045503a30734db","_id":"gulp-htmlincluder@2.0.1","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"dist":{"integrity":"sha512-qQA8bOeBxT8dKy3bOv7DnRwqiNch1ZZ2TyXd4mL6PS41kmkyr2weK+ztq/vFjMBbflQaYl8AaiQrptfqOsv96A==","shasum":"5052beb0dde153c100926a650f20c1720737e450","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-2.0.1.tgz","fileCount":34,"unpackedSize":108426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfsagCRA9TVsSAnZWagAACWIQAJUcLvEpXe+GjxDWAqsj\nmGPe2KSxKCD7FxoWyU3j4CehvC3kn/8zRFA06ciKhaOArzfD/aOOdgTkANSE\nZOV4Cy54I3kiY8XwJel1Zd9CGWl8tui8dxjQ1Aaq0nL5pmphvTWiAsrVqs4b\ngFcUaQYTbEZv6MjP/qUZ1fVoXPKhd5d05pDIHCe/CZqjytS8ujjDmhcrEZSA\nczIOVGckW5RklwNGKGhxjQLQM+l7IYI8p1r5qQ0oVdymJMj+joSEPv9/VChL\nRZCPPGFywcuBA1KXdUPRpnVKwChpLvIw47QL7Es9QB1OlzYve5A2jMddFuP9\nwb6QviFzAG0ruOkO4WfVZCKpdg7jIdm4cc7pSwpgSAJ92h7Ad7IdBgMpoH54\n6WgcYJqvXPyL+CSp6htMOv600SbUx85ezyKq+SFRXpg0YS35wuGF/Rq1ihag\nayiR1wm2FEMJVzLLHqR3Py62IllPpGYDFIOmNICQs75oOKptP2lBeTQEzC+Q\n4qEr72UMnCtVWaubiGVzte98usEA9llNBDqa5Nkoccrkl2UKUOvXM4gh8CqP\n9R3tLLXS/DoUuxVDMTM+gZF7eExZ7SMOEMjt+57lU6qG2H8A8O/XM0rrI2xD\nZx1rfVyNMvDe14yOzscTbQNSpZhckr9MNxMweyO5Ad8NvNvSHfNX0LFcbIfh\nl8Nx\r\n=GmEK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDovQpQI6+1yXVwHbIa1cgMyZQh5E6D17UNQLeVbB7U3QIhAP1citXEQco50KSzyz+kwGqlrp8p/aGGZhP43Cb+VXUc"}]},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_2.0.1_1551812255345_0.5288282142058203"},"_hasShrinkwrap":false},"2.0.2":{"name":"gulp-htmlincluder","version":"2.0.2","description":"Gulp plugin for building files into each other.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack -p","webpack":"webpack -w"},"dependencies":{"gulp-util":"^3.0.8","natives":"^1.1.6","through2":"*"},"babel":{"presets":[["env",{"targets":{"browsers":[">0.25%","not ie 11","not op_mini all"]}}],"es2015","stage-2"]},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-loader":"^7.1.5","babel-preset-env":"^1.6.1","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","babel-register":"^6.24.1","coveralls":"*","event-stream":"*","gulp":"^3.9.1","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^4.23.1","webpack-bundle-analyzer":"^3.0.3","webpack-cli":"^3.1.2","webpack-s3-plugin":"^1.0.2"},"licenses":[{"type":"MIT"}],"gitHead":"05e27118fa8bbc4180896c3f7de43f0917063758","_id":"gulp-htmlincluder@2.0.2","_nodeVersion":"15.6.0","_npmVersion":"7.4.0","dist":{"integrity":"sha512-1IuGQk9xVul8BxSnNsM2UGOWhqIDqYTUZbe6EVh3GKFgjGNDQW+HFfvs9oIlF/33fKjWJJRNqrYtryBqZCx85A==","shasum":"50ccf9d28ba5c0d6bc831ebcf7a8c2009729e6dd","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-2.0.2.tgz","fileCount":34,"unpackedSize":108908,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAgdaCRA9TVsSAnZWagAAzDUQAJOVk/zEOKY0rLPThXfq\nXBvnzj0RobPA5gAFrbAH7fZj8FNc6cnCzIuEUSnFxZZ8j2+OxPkioHDJLXwR\nupZpqSNliFRw+WGoji/jCJLaeQ3LxwFQQt/06NU79odDSSKIZ1L0f5fBcOl1\nCnAaYszB9qLF4j+XN4UydmrdLhWPspo0x7V7LXI2Fir0imK9glPKmBlp5qxd\ndxzOL3ECZm9lNvBmBdrp3vP0JHuC/8J6FsqcZ6ZE/NoR51ofLnvlmmTUf2GE\nobfaHwaEoNbdMSrlm6RNNlwHop+0t9dC4VZDKtsEgFuhz/yAkw+88vc+vJer\nqblB7HQlkuQIPNERJedTAK+lGmPNV5mhDjRWWM+Y6dpvpUsijTlpz6pusgI6\n7ZcrnfB8tHWwdGuvsk5w9IH8u+eV1bxVrD6NN3N4lvVMNw5OQyD4iBC1PwXH\nJA3KrGVV5dfjHRstdqwPs/Ji2z3rDP8HzK5+2NQXEMHScrPs2Cnd3i9zS+fG\nTEx62PaLX3Dj+3YXW3J7boY/BR9hKd0Y2woSLq67xEuwlhOqJb6bpLD5LrLf\n+ZzoXYVmTJKyQpAJH59M1iBUlkMmUIBhFBDYciE5z1QTfex/nm76w4F7tcLF\nw0H7WlO9E4jaatGFN9/g9d8uLZu1+LNOzN5+v+Z9ekZ2t1HxW89+8ewwMQIZ\nbfTa\r\n=bVSx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkzd4cp/ryeOlSfkxgjAP1vKv6vTQ/jvd2laqV+XBq5gIgYvc7BChUka3HkQ1B0C+Ljv/PkVvBSPNY4VTST8O1efw="}]},"_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"directories":{},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_2.0.2_1610745690195_0.7733730478520773"},"_hasShrinkwrap":false},"2.1.2":{"name":"gulp-htmlincluder","version":"2.1.2","description":"Gulp plugin for building files into each other.","keywords":["gulpplugin"],"homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack","webpack":"webpack -w"},"dependencies":{"gulp-util":"^1.0.0","natives":"^1.1.6","through2":"*"},"babel":{"presets":[["@babel/preset-env"]]},"devDependencies":{"@babel/core":"^7.15.8","@babel/preset-env":"^7.15.8","babel-loader":"^8.2.2","babel-register":"^6.24.1","coveralls":"*","event-stream":"*","gulp":"^4.0.2","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^5.58.1","webpack-bundle-analyzer":"^3.0.3","webpack-cli":"^4.9.0"},"licenses":[{"type":"MIT"}],"gitHead":"73786e184515a52d5572d2c19d7d37fd4b3b5aad","_id":"gulp-htmlincluder@2.1.2","_nodeVersion":"16.11.0","_npmVersion":"8.0.0","dist":{"integrity":"sha512-ykTBM9naH8UMQWqjy66eGUpgHfSQH3ZUwAW35suXD6+mTdA0gPJtFvPPv+TVvRAWS8VcAOy5zYZ9lu1r/s6U6g==","shasum":"57432db4d3e383b30ecca872294df5d54b464496","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-2.1.2.tgz","fileCount":35,"unpackedSize":88713,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHEQf4L7g67fSGnuAoFNhdV1aP3EiqS3touRzQsF4cMZAiBQNqW9hwF6Eh+tIhKHRHS5Avh74iFGl0HvcKv7ry7B0w=="}]},"_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"directories":{},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_2.1.2_1633980396829_0.1613641404017876"},"_hasShrinkwrap":false},"2.1.3":{"name":"gulp-htmlincluder","version":"2.1.3","description":"Gulp plugin for building files into each other.","keywords":["gulpplugin"],"type":"commonjs","homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack --mode=development"},"dependencies":{"gulp-util":"^1.0.0","natives":"^1.1.6","through2":"*"},"babel":{"presets":[["@babel/preset-env"]]},"devDependencies":{"@babel/core":"^7.15.8","@babel/preset-env":"^7.15.8","babel-loader":"^8.2.2","babel-register":"^6.24.1","coveralls":"*","event-stream":"*","gulp":"^4.0.2","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^5.58.1","webpack-bundle-analyzer":"^3.0.3","webpack-cli":"^4.9.0"},"licenses":[{"type":"MIT"}],"gitHead":"686c206f063ee126eb6bfea20b6584325c50492f","_id":"gulp-htmlincluder@2.1.3","_nodeVersion":"16.11.0","_npmVersion":"8.0.0","dist":{"integrity":"sha512-sq70zTFwfxCMkHAJYZu1ho07K+TWUm0Ix8yxfJmr1JM8fOjs3SPGv6Fm/DPuN7fL4IFh/70mvy4iB+BBWltzsA==","shasum":"c2ad44f6e7e7a77498935c9ec26fd31d15a37064","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-2.1.3.tgz","fileCount":35,"unpackedSize":112974,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7Crg83Dj9cQsv+vxsFsFOMPXZw9S9x9A09u4jD0kSuAIgA33XKYZovSSSyPTdWsjSWTmnXJN0lmL+MaOkmTIFj9o="}]},"_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"directories":{},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_2.1.3_1634172421900_0.6390418827294675"},"_hasShrinkwrap":false},"2.2.4":{"name":"gulp-htmlincluder","version":"2.2.4","description":"Gulp plugin for building files into each other.","keywords":["gulpplugin"],"type":"commonjs","homepage":"https://github.com/internetErik/gulp-htmlincluder","bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"main":"./index.js","repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"scripts":{"build":"webpack --mode=development"},"dependencies":{"natives":"^1.1.6","plugin-error":"^1.0.1","through2":"^4.0.2"},"babel":{"presets":[["@babel/preset-env"]]},"devDependencies":{"@babel/core":"^7.15.8","@babel/preset-env":"^7.15.8","babel-loader":"^8.2.2","babel-polyfill":"^6.26.0","babel-register":"^6.24.1","coveralls":"*","event-stream":"*","gulp":"^4.0.2","istanbul":"*","mocha":"*","mocha-lcov-reporter":"*","should":"~2.1.0","webpack":"^5.58.1","webpack-bundle-analyzer":"^3.0.3","webpack-cli":"^4.9.0"},"licenses":[{"type":"MIT"}],"gitHead":"5a64509338a760357c31820927fdda22f0cd2701","_id":"gulp-htmlincluder@2.2.4","_nodeVersion":"16.11.0","_npmVersion":"8.0.0","dist":{"integrity":"sha512-/SGOk3jZd8RWBh0WbCAQrwBLaF3QpU8GGkXS3VkI0EOBC4Fo5WfZWwasE3huSixEN17BEKBfVI3Szx+L01FckQ==","shasum":"b5c285e48118aa99e4833a2e394a06503d58fe6b","tarball":"https://registry.npmjs.org/gulp-htmlincluder/-/gulp-htmlincluder-2.2.4.tgz","fileCount":35,"unpackedSize":903782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2s1mCRA9TVsSAnZWagAAGbQP/jGIDBIhMuptdczAEJnP\nf5oHAqnzZEJYsAjvGH2r0jqCohaCgkfkE+dplYzalIGaoHudQfJYXxjLWHwd\n0K8PzTcUTWIBAt35RAJ5u0zK3Em5aP0DdtthTvylaGjyA0lBSDF1IKWbK7hN\n0LjpBjEzp4lkaoWNTcNmskAckea8cSDYVKWYlngqJbw6JWVrz/HlxbQUSS0c\natjrV5fuC4JPR6d4o+Xb03M2gv2tGCSlFAZeOeEmcJhSH+hSc+pD104UJYBD\nEbSdTg6E5KSe0EEP3hXgnZdPuAOvrfDz88ZzGYtYJYg/4DlV0S1ayaDAaFQK\nBE+MP1PgZy7AYCr/5pzFUZ7EPFFMhzDLfzuCx3GTX0wRD4gRFyWR5FsvyFzC\n8TRi2MQS3uDotCH5zvINQKGp1/UqqryyxTZsaWNh55Tt9BIWh0yGHLpojHuW\nDklFhpdzeCk5ZyIDeNikJPF2M3peU08Ebu7ftBjhJaKJfDS4QAPO3prcpnHj\nzk+PsNu3KM6+KfU0mattkfEyFhkyFKD2t9HLp3t+hN13kVmQbAqg1c/pBd/S\nEXEaYvNf9bjASLTeKqwzFpcY7Vo/7OEFGEPYeuc7VIlFic9qL1MIBPlD0FeQ\naURpBudf+VS9n8bLHGCsHFGO6Wa3z3WFO7sCox2u9q9AbO8XDRhqRaza9Z+e\niqVq\r\n=eqsx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsOxhdg2Xg4vXmKse4jd7XsdwPSUPihzLMsvkfCVh3YAIhAJDe8xWXZlQmL3ZsY2QGcVK8WCkrbh6/+7uNF5P3R+ks"}]},"_npmUser":{"name":"interneterik","email":"internet.erik@gmail.com"},"directories":{},"maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-htmlincluder_2.2.4_1635127201294_0.38445591954404756"},"_hasShrinkwrap":false}},"readme":"# gulp-htmlincluder\n[![NPM version][npm-image]][npm-url]  [![Dependency Status][depstat-image]][depstat-url]\n\n> htmlincluder plugin for [gulp](https://github.com/wearefractal/gulp)\n\n## What does this do?\n\nThis allows you to insert a special markup into your files to do a number of things:\n* insert files into other files\n* wrap a file with another file\n* clip off certain parts of a file\n* inject data for use in adding text to files\n* basic control flow (if and each) to use with data\n\n## What to use this for?\n\nThis was written with the intention of working on static websites while still allowing for a component based development. It also was intended to let the individual components be testable by themselves by allowing the individual component files to include portions that would be removed on build.\n\nIt also can allow the inclusion of some dynamic content into these static sites, as long as you can wrangle said content into a json object and pass it in when you are building.\n\nI'm sure this can be put to a much broader use than originally intended (and may do for a name change at some point, since there is no reason you couldn't include json files into json files, or do other things.)\n\n## A Brief Warning\n\nCertain features use `eval`. I have flagged these features below, but please use caution when using them so that you don't have any untrusted data that isn't unsanitized going into the system. It could lead to compromising the build environment or XSS attacks in the resulting html.\n\n## Install and Setup\n\n\n```shell\nnpm install --save-dev gulp gulp-htmlincluder\n```\n\n`gulpfile.js` (Using gulp 4):\n\n```javascript\nconst { src, dest } = require('gulp');\nconst includer = require('gulp-htmlincluder');\n\n// A simple method for making basic api requests.\nconst http = require('http');\nconst getApiData = url => new Promise((resolve, reject) => {\n  http.get(url, resp => {\n    let data = '';\n    resp.on('data', chunk => data += chunk)\n    resp.on('end', () => resolve(JSON.parse(data)))\n  })\n})\n\nexports.includer = function(path) {\n  // optional use of json data. options object is not required\n  const jsonInput = require('./input-file.json');\n  const rawJsonPlugins = { getApiData };\n  src('./src/**/*.html')\n  .pipe(includer({ jsonInput, rawJsonPlugins }))\n  .pipe(dest('./dist/'))\n}\n\n```\n\nyou can then run this with `gulp includer`\n\n`gulpfile.js` (using earlier versions of gulp):\n\n\n```javascript\nvar gulp = require('gulp'),\n\tincluder = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  // optional use of json data. options object is not required\n  var json = require('./input-file.json');\n  var options = {\n    jsonInput : json,\n  };\n  gulp.src('./src/**/*.html')\n    .pipe(includer(options))\n    .pipe(gulp.dest('./dist/'));\n});\n\ngulp.task('default', ['htmlIncluder']);\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n## *File Naming Requirement*\n\nhtmlincluder *requires* files follow a particular naming convention.\n\nFiles that you want to include in other files begin with `-`.\n\nFiles that you want to wrap around other files begin with `_`.\n\nFiles that you want to use to build the resulting static pages can be named however you want, as long as they don't begin with `-` or `_`.\n\nRight now this is necessary because the files that will ultimately exist in the build folder are those that don't start with `-` or `_`. I'd love to change this to determine this in another manner (for example, only files that aren't included are finally built).\n\n## Includer Tags\n\nIt is probably best to learn from examples. These can be found in the `./test/html` folder of this repository. These can be run by cloning this repository, running `npm install` and then `npx gulp`. Check the `gulpfile.js` for specifics if you just want to try building single files.\n\n### Terminology\n\nBasic tag structure\n\n`<!--#tagName attributeName=\"attributeValue\" -->`\n\n### All Tags\n\nNote: `*` means required attribute\n\n* Wrapping a file with another file\n  * `<!--#wrap path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n  * `<!--#middle -->` <-- content wrapped replaces the `middle` tag\n  * `<!--#endwrap -->`\n* Inserting a file\n  * `<!--#insert path=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n* Inserting Json (passed in from parent component)\n  * `<!--#data jsonPath=\"*\" default=\"\" rawJson=\"\" -->`\n* Inserting Json (from data input, or default value)\n  * `<!--#jsonInsert jsonPath=\"*\" default=\"\" -->`\n* Control Flow\n  * If\n    * `<!--#if jsonPath=\"*\" rawJson=\"\" -->`\n    * `<!--#endif -->`\n  * Each (repeater)\n    * `<!--#each count=\"*\" jsonPath=\"\" rawJson=\"\" -->`\n    * `<!--#endeach -->`\n* Clipping (Ignores parts of file)\n  * `<!--#clipbefore -->`\n  * `<!--#clipafter -->`\n  * `<!--#clipbetween -->`\n  * `<!--#endclipbetween -->`\n\n### Attributes\n\n#### path\n\nA relative (to current file) path to a file.\n\nExample:\n```\nsrc\n|- components\n|  |- -header.html\n|- index.html\n```\n\nin `index.html` the `path` for `-header.html` is:\n\n`<!--#tagName path=\"./components/-header.html\" -->`\n\n#### jsonPath\n\nA path to data in a json object.\n\nExample:\n\n```\n{\n  a: {\n    b: {\n      c: 'hello world'\n    }\n  }\n}\n```\n\nThe path to `c` is:\n\n`<!--#tagName jsonPath=\"a.b.c\" -->`\n\n#### rawJson *(uses `eval`)*\n\nA string that, when converted to JavaScript and executed, produces a json object. You can access this data using your jsonPath attribute.\n\nFor example:\n\n`rawJson=\"{ sample : 'this is some data to use!' }\"`\n\nYou can pass in a self-invoking function you can invoke this function with the arguments `json` and/or `plugins`.\n\n`rawJson=\"((json, {}) => ({ title: 'generated object?'}))(json, plugins)\"`\n\n`json` represents the json object that you may pass in to the options for htmlincluder when invoking it in your gulp task. `plugins`\n\nIt would even be possible to use an async function to load data from a service or CMS:\n\n`rawJson=\"(async ({ fetch }) => { const response = await fetch('https://cms.com/api'); return response.json(); })(plugins)\"`\n\n*Warning*\n\nInternally `eval` is used so beware. But also, you could technically write a script that generates an object if you need more complicated data.\n\nOf course, if you're loading data from an api it could be compromised. If it contains something like:\n\n`<script>console.log('gotcha')</script>`\n\nYou may have compromised your users. So beware!\n\n#### count\n\nOn an #each you can tell it how many times to repeat the inner content with a count attribute\n\n`<!--#each count=\"3\" -->hello world<!--#endeach -->`\n\n### Insert\n\nThis is the simplest use case.  Simply put the following html comment\n\n`<!--#insert path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#insert path=\"-file2.html\" -->\n</body>\n</html>\n```\n\n`-file2.html`\n```html\n  hello world\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Configure insert to use other text\n\nIf you want to use ssi includes along with this, and so have the insert string follow that format there is an argument to pass into the htmlincluder in gulp.\n\nThanks to theSLY for suggesting this!\n\n```javascript\nvar gulp = require('gulp'),\n  includer = require('gulp-htmlincluder');\n\ngulp.task('htmlIncluder', function() {\n  var options = {\n    insertPattern: 'include virtual',\n  };\n\n  gulp.src('files/*.html')\n//now looks for &lt;!--#include virtual, instead of &lt;!--#insert\n    .pipe(includer(options))\n    .pipe(gulp.dest('dist/'));\n});\n\n\ngulp.task('default', ['htmlIncluder']);\n\n\ngulp.task('watch', function() {\n  gulp.watch(['files/*.html'], function(event) {\n    gulp.start('default');\n  });\n});\n```\n\n### Wrap\n\n`<!--#wrap path=\"<relative-path-to-file.ext>\" jsonPath=\"\" rawJson=\"\" -->`\n\nAND\n\n`<!--#endwrap -->`\n\nThe middle tag must be placed in the wrap file so we know where to put the middle part of the other file\n\n`<!--#middle -->`\n\n#### Example\n\n`file1.html`\n```html\n<!--#wrap path=\"_file2.html\" -->\n  hello world\n<!--#endwrap -->\n```\n\n`_file2.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#middle -->\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n### data\n\nInside of wrap and insert tags that you have used the `jsonPath` attribute on you can use use this tag to print data that has been passed down.\n\n`<!--#data jsonPath=\"<path.to.json>\" default=\"some text\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!-- JSON path passed down from above -->\n<!--#insert path=\"-insert.html\" jsonPath=\"hello\" -->\n</body>\n</html>\n```\n\n`-insert.html`\n```html\n<div>\n  <!--#data jsonPath=\"world\" -->\n</div>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  <div>\n    hello world\n  </div>\n</body>\n</html>\n```\n\n### jsonInsert\n\nWhen using a json data file, you can pull data from it directly using this tag.\n\n`<!--#jsonInsert jsonPath=\"<path.to.json>\" rawJson=\"\" -->`\n\n#### Example\n\n`file1.html`\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#jsonInsert jsonPath=\"hello.world\" -->\n</body>\n</html>\n```\n\n`file.json`\n```json\n  {\n    \"hello\" : {\n      \"world\" : \"hello world\"\n    }\n  }\n```\n\nResults\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n  hello world\n</body>\n</html>\n```\n\n#### Inline json objects\n\nInstead of using the data file, you can provide a raw json object\n\n`<!--#jsonInsert jsonPath=\"path.to.json\" rawJson=\"{ path: { to: { json: \"hello world\" } } }\" -->`\n\nResults\n\n`hello world`\n\n### Each\n\nEach can be used to iterate over a json array, or just to repeat some data a number of times.\n\n#### Just with a count\n\n```html\n<!--#each count=\"5\" -->\n  <div>hello world</div>\n<!--#endeach -->\n```\n\nResults:\n```html\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n```\n\n#### each over other tags\n\n```html\n<!--#each count=\"5\" -->\n  <!--#insert path=\"./-insert-hello-world.html\" -->\n<!--#endeach -->\n```\n\nResults:\n```html\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n\n  <div>hello world</div>\n```\n\n#### With an array of values in json input\n\n```html\n<!--#each jsonPath=\"data\" rawJson=\"{ data : [1, 2, 3, 4] }\" -->\n  <div><!--#data --></div>\n<!--#endeach -->\n```\n\nResults:\n```html\n\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n\n\n```\n\n#### With an array of values\n\n\n```html\n<!--#each rawJson=\"[1, 2, 3, 4]\" -->\n  <div><!--#data jsonPath=\"this\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```html\n  <div>1</div>\n\n  <div>2</div>\n\n  <div>3</div>\n\n  <div>4</div>\n```\n\n#### Array limited by count\n\n\n```html\n<!--#each jsonPath=\"this\" rawJson=\"[1, 2, 3, 4]\" count=\"2\" -->\n  <div><!--#data jsonPath=\"this\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```html\n  <div>1</div>\n\n  <div>2</div>\n```\n\n#### With an array of objects\n\n**note: use single quotes in json objects, which means you'll need to escape**\n\n```html\n<!--#each jsonPath=\"this\" rawJson=\"[\n    { name: 'Tom', age: 33, bio: 'Bio for Tom' },\n    { name: 'Dick', age: 55, bio: 'Dick\\'s bio' },\n    { name: 'Jane', age: 28, bio: 'Bio for Jane' },\n    { name: 'Harry', age: 27 },\n  ]\" -->\n  <div>name: <!--#data jsonPath=\"name\" --></div>\n  <div>age: <!--#data jsonPath=\"age\" --></div>\n  <div>bio: <!--#data jsonPath=\"bio\" default=\"nothing is known about them\" --></div>\n<!--#endeach -->\n```\n\nResults:\n```html\n  <div>name: Tom</div>\n  <div>age: 33</div>\n  <div>bio: Bio for Tom</div>\n\n  <div>name: Dick</div>\n  <div>age: 55</div>\n  <div>bio: Dick's bio</div>\n\n  <div>name: Jane</div>\n  <div>age: 28</div>\n  <div>bio: Bio for Jane</div>\n\n  <div>name: Harry</div>\n  <div>age: 27</div>\n  <div>bio: nothing is known about them</div>\n```\n\n### Clip tops and bottoms off of files\n`<!--#clipbefore -->`\n\n`<!--#clipafter -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\n<!--#clipbefore -->\nblah\n<!--#clipafter -->\n</body>\n</html>\n```\n\nResults:\n```html\nblah\n```\n\n### Clip between\n`<!--#clipbetween -->`\n\n`<!--#endclipbetween -->`\n\n#### Example\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\n<!--#clipbetween -->\na widget!\n<!--#endclipbetween -->\nsomething else\n</body>\n</html>\n```\n\nResults:\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Document</title>\n</head>\n<body>\nsomething\nsomething else\n</body>\n</html>\n```\n\n## More Examples\n\nLook in `./test/html`\n\n## ToDo\n\n* Build out more tests - consider more automated versions of them\n* Implement some form of caching so only changed files need be processed\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License)\n\n[npm-url]: https://npmjs.org/package/gulp-htmlincluder\n[npm-image]: https://badge.fury.io/js/gulp-htmlincluder.png\n\n[travis-url]: http://travis-ci.org/internetErik/gulp-htmlincluder\n[travis-image]: https://secure.travis-ci.org/internetErik/gulp-htmlincluder.png?branch=master\n\n[coveralls-url]: https://coveralls.io/r/internetErik/gulp-htmlincluder\n[coveralls-image]: https://coveralls.io/repos/internetErik/gulp-htmlincluder/badge.png\n\n[depstat-url]: https://david-dm.org/internetErik/gulp-htmlincluder\n[depstat-image]: https://david-dm.org/internetErik/gulp-htmlincluder.png\n","maintainers":[{"name":"interneterik","email":"internet.erik@gmail.com"}],"time":{"modified":"2022-06-18T17:14:39.807Z","created":"2014-03-01T17:01:06.218Z","0.0.1":"2014-03-01T17:01:07.192Z","0.0.2":"2014-03-02T16:10:06.213Z","0.0.3":"2014-03-03T14:26:12.180Z","0.0.4":"2014-03-08T18:22:19.263Z","0.0.5":"2014-03-15T20:11:11.136Z","0.0.6":"2014-03-15T20:52:45.074Z","0.0.7":"2014-03-17T15:11:57.137Z","0.0.8":"2014-03-19T14:53:02.483Z","0.0.9":"2014-06-25T14:12:15.674Z","0.1.0":"2014-10-12T15:44:55.302Z","1.0.0":"2017-11-14T14:44:01.705Z","1.0.1":"2017-11-21T16:36:45.906Z","1.1.2":"2017-11-22T16:52:23.068Z","1.2.2":"2017-11-22T23:25:39.931Z","1.2.3":"2017-11-23T03:46:36.071Z","1.2.4":"2017-11-24T20:51:27.912Z","1.3.4":"2017-11-27T14:58:13.175Z","1.3.5":"2017-12-01T15:42:29.764Z","1.3.6":"2018-01-19T03:22:33.079Z","1.3.7":"2018-01-23T13:04:36.611Z","1.4.7":"2018-02-15T14:49:04.152Z","1.4.8":"2018-02-15T16:26:27.205Z","1.4.9":"2018-02-15T16:47:27.970Z","1.4.10":"2018-02-15T21:49:23.494Z","1.4.11":"2018-02-18T00:21:55.970Z","1.5.11":"2018-03-05T18:24:39.023Z","1.5.12":"2018-04-23T19:19:02.911Z","1.5.13":"2018-04-23T19:28:45.327Z","2.0.0":"2019-03-04T02:59:24.807Z","2.0.1":"2019-03-05T18:57:35.512Z","2.0.2":"2021-01-15T21:21:30.397Z","2.1.2":"2021-10-11T19:26:36.948Z","2.1.3":"2021-10-14T00:47:02.065Z","2.2.4":"2021-10-25T02:00:01.512Z"},"readmeFilename":"README.md","homepage":"https://github.com/internetErik/gulp-htmlincluder","keywords":["gulpplugin"],"repository":{"type":"git","url":"git://github.com/internetErik/gulp-htmlincluder.git"},"author":{"name":"Erik Christianson","url":"https://github.com/internetErik"},"bugs":{"url":"https://github.com/internetErik/gulp-htmlincluder/issues"},"users":{"jayharris":true,"dysonchan":true,"jonthomas":true,"carlos_atx":true,"pronin.cc":true}}