{"_id":"18f-pages-server","_rev":"59-c80fe00d0c5727313807048813ad0dad","name":"18f-pages-server","dist-tags":{"latest":"0.3.6"},"versions":{"0.2.0":{"name":"18f-pages-server","version":"0.2.0","keywords":["Jekyll","rsync","publishing"],"author":{"url":"https://mike-bland.com/","name":"Mike Bland","email":"mbland@acm.org"},"license":"CC0-1.0","_id":"18f-pages-server@0.2.0","maintainers":[{"name":"mbland","email":"mbland@acm.org"}],"homepage":"https://github.com/18f/pages-server#readme","bugs":{"url":"https://github.com/18f/pages-server/issues"},"bin":{"18f-pages":"./bin/18f-pages"},"dist":{"shasum":"b3e168a9e4f1ca7409eed16dbdf85b3cae5d7b5f","tarball":"https://registry.npmjs.org/18f-pages-server/-/18f-pages-server-0.2.0.tgz","integrity":"sha512-gCmB+HI4wIdB+l0gnkL/oxQPsLWkGFXjIhs6heUalqq3CXodzPpnKfkg8TzCFDPNx7vVEYcXDUi8GLb95+VFHw==","signatures":[{"sig":"MEYCIQD3K2Lc9XboPa/xa4utAO/48oEk2hmj7K7gC+ruBgDH7AIhAOJfs4Ku9vj6iOcKytI7O0+7hJdZJnx9qwlBT7vGKMo9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"b3e168a9e4f1ca7409eed16dbdf85b3cae5d7b5f","engines":{"node":">=0.12.7"},"gitHead":"745f54723d6fe8435e82db4622e718abda38aa73","scripts":{"lint":"gulp lint","test":"gulp test"},"_npmUser":{"name":"mbland","email":"mbland@acm.org"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/18f/pages-server.git","type":"git"},"_npmVersion":"3.3.12","description":"Static website publishing server for 18F Pages","directories":{},"_nodeVersion":"5.5.0","dependencies":{"yamljs":"^0.2.4","hookshot":"github:18f/hookshot#0.1.0-with-json-options","file-locked-operation":"^1.0.0","github-webhook-validator":"0.1.1"},"devDependencies":{"chai":"^3.3.0","gulp":"^3.9.0","temp":"^0.8.3","mocha":"^2.3.3","sinon":"^1.17.0","yargs":"^3.32.0","eslint":"^1.10.3","gulp-mocha":"^2.1.3","mock-spawn":"^0.2.6","gulp-eslint":"^1.1.1","chai-as-promised":"^5.1.0"},"_npmOperationalInternal":{"tmp":"tmp/18f-pages-server-0.2.0.tgz_1454969824061_0.7443745150230825","host":"packages-5-east.internal.npmjs.com"}},"0.2.1":{"name":"18f-pages-server","version":"0.2.1","keywords":["Jekyll","rsync","publishing"],"author":{"url":"https://mike-bland.com/","name":"Mike Bland","email":"mbland@acm.org"},"license":"CC0-1.0","_id":"18f-pages-server@0.2.1","maintainers":[{"name":"mbland","email":"mbland@acm.org"}],"homepage":"https://github.com/18f/pages-server#readme","bugs":{"url":"https://github.com/18f/pages-server/issues"},"bin":{"18f-pages":"./bin/18f-pages"},"dist":{"shasum":"5592d71314fb49bdead5952b8082159faf7a2509","tarball":"https://registry.npmjs.org/18f-pages-server/-/18f-pages-server-0.2.1.tgz","integrity":"sha512-Dilv50UnvWkHFYh4DALH5uc7SJa2QA2PIxkIxlE4X+rlmBmkziIbGylBZNOcCc5jDochP/PWIZdZz/Qvgv9phA==","signatures":[{"sig":"MEUCIQCNqt54dZCt1FilMXtSziIzMGI8vYiTmVsO6YiMDY7mFwIgKfyeK2Ck1W1nWtpoBQPnqEBq3rWmm1QgjnwBU+2MVbk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"5592d71314fb49bdead5952b8082159faf7a2509","engines":{"node":">=0.12.7"},"gitHead":"5f835fd2b438b92f8b9d1f8d1889a845569d30d5","scripts":{"lint":"gulp lint","test":"gulp test"},"_npmUser":{"name":"mbland","email":"mbland@acm.org"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/18f/pages-server.git","type":"git"},"_npmVersion":"3.6.0","description":"Static website publishing server for 18F Pages","directories":{},"_nodeVersion":"5.6.0","dependencies":{"yamljs":"^0.2.4","hookshot":"github:18f/hookshot#0.1.0-with-json-options","file-locked-operation":"^1.0.0","github-webhook-validator":"0.1.1"},"devDependencies":{"chai":"^3.3.0","gulp":"^3.9.0","temp":"^0.8.3","mocha":"^2.3.3","sinon":"^1.17.0","yargs":"^3.32.0","eslint":"^1.10.3","gulp-mocha":"^2.1.3","mock-spawn":"^0.2.6","gulp-eslint":"^1.1.1","chai-as-promised":"^5.1.0"},"_npmOperationalInternal":{"tmp":"tmp/18f-pages-server-0.2.1.tgz_1455912145795_0.7162796866614372","host":"packages-9-west.internal.npmjs.com"}},"0.3.0":{"name":"18f-pages-server","version":"0.3.0","keywords":["Jekyll","rsync","publishing"],"author":{"url":"https://mike-bland.com/","name":"Mike Bland","email":"mbland@acm.org"},"license":"CC0-1.0","_id":"18f-pages-server@0.3.0","maintainers":[{"name":"mbland","email":"mbland@acm.org"}],"homepage":"https://github.com/18f/pages-server#readme","bugs":{"url":"https://github.com/18f/pages-server/issues"},"bin":{"18f-pages":"./bin/18f-pages"},"dist":{"shasum":"8b8d5a71c4dca5565c2d76a46d630d60662ee9d3","tarball":"https://registry.npmjs.org/18f-pages-server/-/18f-pages-server-0.3.0.tgz","integrity":"sha512-ZfVIZjDS9ulXF36nIZONW+k6KDl0klaHejIhQrajropGoHkhkkCkA5rzpg8MPlfis2m+AvU+y7e8cUNgh4o1hA==","signatures":[{"sig":"MEUCIQCIP0/xP/wmkmTyG6rKzGX8Rkq96WAyGDMDvuyX33Z+6gIgeRJRVSx+GW5mA0Xqw/qielvjFtmNlqXxDzaA/YHI7Jk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"8b8d5a71c4dca5565c2d76a46d630d60662ee9d3","engines":{"node":">=0.12.7"},"gitHead":"ed744fa260509425f42cbb4565c1e7200c6e34ef","scripts":{"lint":"gulp lint","test":"gulp test"},"_npmUser":{"name":"mbland","email":"mbland@acm.org"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/18f/pages-server.git","type":"git"},"_npmVersion":"3.6.0","description":"Static website publishing server for 18F Pages","directories":{},"_nodeVersion":"5.7.0","dependencies":{"yamljs":"^0.2.4","hookshot":"github:18f/hookshot#0.1.0-with-json-options","file-locked-operation":"^1.0.0","github-webhook-validator":"0.1.1"},"devDependencies":{"chai":"^3.3.0","gulp":"^3.9.0","temp":"^0.8.3","mocha":"^2.3.3","sinon":"^1.17.0","yargs":"^3.32.0","eslint":"^1.10.3","gulp-mocha":"^2.1.3","mock-spawn":"^0.2.6","gulp-eslint":"^1.1.1","chai-as-promised":"^5.1.0"},"_npmOperationalInternal":{"tmp":"tmp/18f-pages-server-0.3.0.tgz_1456842463200_0.18005127203650773","host":"packages-6-west.internal.npmjs.com"}},"0.3.1":{"name":"18f-pages-server","version":"0.3.1","keywords":["Jekyll","rsync","publishing"],"author":{"url":"https://mike-bland.com/","name":"Mike Bland","email":"mbland@acm.org"},"license":"CC0-1.0","_id":"18f-pages-server@0.3.1","maintainers":[{"name":"mbland","email":"mbland@acm.org"}],"homepage":"https://github.com/18f/pages-server#readme","bugs":{"url":"https://github.com/18f/pages-server/issues"},"bin":{"18f-pages":"./bin/18f-pages"},"dist":{"shasum":"2fd0e2203fe2bf7f118c6a8acd5542de99161b8b","tarball":"https://registry.npmjs.org/18f-pages-server/-/18f-pages-server-0.3.1.tgz","integrity":"sha512-3WpWN8nw6vqvelS95DWXP7Jal3a5vvcEUIoHeTtT5JAVKWppm9MgRNjViYKusPDMwMOlcW7ild5XrUjqAAOVdg==","signatures":[{"sig":"MEQCIEHFK9QXwGTg1uxbu0dbfKVfsy0PWl912eFQkRPkcb1aAiAUqAaZznUIZp3A9XvzPrY6QP9rL8q2NaG0HbEshow8RA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"2fd0e2203fe2bf7f118c6a8acd5542de99161b8b","engines":{"node":">=0.12.7"},"gitHead":"2670a1ea1ec5c1c1ccf08b61a4a1c95243e3f55b","scripts":{"lint":"gulp lint","test":"gulp test"},"_npmUser":{"name":"mbland","email":"mbland@acm.org"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/18f/pages-server.git","type":"git"},"_npmVersion":"3.6.0","description":"Static website publishing server for 18F Pages","directories":{},"_nodeVersion":"5.7.0","dependencies":{"yamljs":"^0.2.4","hookshot":"github:18f/hookshot#0.1.0-with-json-options","file-locked-operation":"^1.0.0","github-webhook-validator":"0.1.1"},"devDependencies":{"chai":"^3.3.0","gulp":"^3.9.0","temp":"^0.8.3","mocha":"^2.3.3","sinon":"^1.17.0","yargs":"^3.32.0","eslint":"^1.10.3","gulp-mocha":"^2.1.3","mock-spawn":"^0.2.6","gulp-eslint":"^1.1.1","chai-as-promised":"^5.1.0"},"_npmOperationalInternal":{"tmp":"tmp/18f-pages-server-0.3.1.tgz_1456853012818_0.5464258342981339","host":"packages-5-east.internal.npmjs.com"}},"0.3.2":{"name":"18f-pages-server","version":"0.3.2","keywords":["Jekyll","rsync","publishing"],"author":{"url":"https://mike-bland.com/","name":"Mike Bland","email":"mbland@acm.org"},"license":"CC0-1.0","_id":"18f-pages-server@0.3.2","maintainers":[{"name":"mbland","email":"mbland@acm.org"}],"homepage":"https://github.com/18f/pages-server#readme","bugs":{"url":"https://github.com/18f/pages-server/issues"},"bin":{"18f-pages":"./bin/18f-pages"},"dist":{"shasum":"0aef4fb655275deb9f19d0ea1d363753482c56e1","tarball":"https://registry.npmjs.org/18f-pages-server/-/18f-pages-server-0.3.2.tgz","integrity":"sha512-Ecn0rJBTJlqzFoxP8hlTLl+dqmRcLyJwyh+yUMhv4j8T0gHE0ax2GBI9pSmcsg7OGXHa2jkvQmngz9zHDs9D7Q==","signatures":[{"sig":"MEYCIQC/nin92B91SJ3J5jP8szjxtMnD/2suEmEcs0CH8qCRXAIhAJi0SWYz7gLjzpHmnlMPkO6Shzfr7MdJlyHItAscRqLz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"0aef4fb655275deb9f19d0ea1d363753482c56e1","engines":{"node":">=0.12.7"},"gitHead":"8496cc6560123e9af9da0550754703aa5fab033e","scripts":{"lint":"gulp lint","test":"gulp test"},"_npmUser":{"name":"mbland","email":"mbland@acm.org"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/18f/pages-server.git","type":"git"},"_npmVersion":"3.6.0","description":"Static website publishing server for 18F Pages","directories":{},"_nodeVersion":"5.7.0","dependencies":{"yamljs":"^0.2.4","hookshot":"github:18f/hookshot#0.1.0-with-json-options","file-locked-operation":"^1.0.0","github-webhook-validator":"0.1.1"},"devDependencies":{"chai":"^3.3.0","gulp":"^3.9.0","temp":"^0.8.3","mocha":"^2.3.3","sinon":"^1.17.0","yargs":"^3.32.0","eslint":"^1.10.3","gulp-mocha":"^2.1.3","mock-spawn":"^0.2.6","gulp-eslint":"^1.1.1","chai-as-promised":"^5.1.0"},"_npmOperationalInternal":{"tmp":"tmp/18f-pages-server-0.3.2.tgz_1456865891775_0.22921587014570832","host":"packages-12-west.internal.npmjs.com"}},"0.3.3":{"name":"18f-pages-server","version":"0.3.3","keywords":["Jekyll","rsync","publishing"],"author":{"url":"https://mike-bland.com/","name":"Mike Bland","email":"mbland@acm.org"},"license":"CC0-1.0","_id":"18f-pages-server@0.3.3","maintainers":[{"name":"mbland","email":"mbland@acm.org"}],"homepage":"https://github.com/18f/pages-server#readme","bugs":{"url":"https://github.com/18f/pages-server/issues"},"bin":{"18f-pages":"./bin/18f-pages"},"dist":{"shasum":"0ad9ef7059b5bec73b8d6dbef1e87a433eca3946","tarball":"https://registry.npmjs.org/18f-pages-server/-/18f-pages-server-0.3.3.tgz","integrity":"sha512-rhGBs8ucyLJ55rygJoKGCfH7Z3thgfU0rA4TdBoVy1xGqBDZJJ+QKGO/LgDmJ5KLowwH9sLkdkbA1VsR3smaQA==","signatures":[{"sig":"MEUCIQCezJKfrKO89dVdjcQRwy1sc0QS1qoeNPAmajmDEUuyYgIgE5nCZVpgOtPHml32JhH3EYknN0zHpcG5BIBApsrmehU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"0ad9ef7059b5bec73b8d6dbef1e87a433eca3946","engines":{"node":">=0.12.7"},"gitHead":"9508487fba1523ded17234986078d4c633edc3c2","scripts":{"lint":"gulp lint","test":"gulp test"},"_npmUser":{"name":"mbland","email":"mbland@acm.org"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/18f/pages-server.git","type":"git"},"_npmVersion":"3.6.0","description":"Static website publishing server for 18F Pages","directories":{},"_nodeVersion":"5.7.0","dependencies":{"yamljs":"^0.2.4","hookshot":"github:18f/hookshot#0.1.0-with-json-options","file-locked-operation":"^1.0.0","github-webhook-validator":"0.1.1"},"devDependencies":{"chai":"^3.3.0","gulp":"^3.9.0","temp":"^0.8.3","mocha":"^2.3.3","sinon":"^1.17.0","yargs":"^3.32.0","eslint":"^1.10.3","gulp-mocha":"^2.1.3","mock-spawn":"^0.2.6","gulp-eslint":"^1.1.1","chai-as-promised":"^5.1.0"},"_npmOperationalInternal":{"tmp":"tmp/18f-pages-server-0.3.3.tgz_1457015980420_0.3022870148997754","host":"packages-12-west.internal.npmjs.com"}},"0.3.4":{"name":"18f-pages-server","version":"0.3.4","keywords":["Jekyll","rsync","publishing"],"author":{"url":"https://mike-bland.com/","name":"Mike Bland","email":"mbland@acm.org"},"license":"CC0-1.0","_id":"18f-pages-server@0.3.4","maintainers":[{"name":"jbarnicle","email":"michael.barnicle@gsa.gov"},{"name":"mbland","email":"mbland@acm.org"}],"homepage":"https://github.com/18f/pages-server#readme","bugs":{"url":"https://github.com/18f/pages-server/issues"},"bin":{"18f-pages":"./bin/18f-pages"},"dist":{"shasum":"96e868f6a5711d9cf7f01b024ab83bce8fe119ac","tarball":"https://registry.npmjs.org/18f-pages-server/-/18f-pages-server-0.3.4.tgz","integrity":"sha512-1IA+B8Wuum/STeiuIFGaS95egbPkxMryGgHMWMkl1ROPDj9+CFegdNrVa3qobyDYh0e2XijnRfn4CeGtmLJsHg==","signatures":[{"sig":"MEYCIQC+tiNtevWPvqpkFrdMlpN1UM91ZCdSSVYftdWu+9Bh4wIhALfSJkAtLxZPoPb6pY5i9yRDaS4TZ/SPZiP9IrcR4mcd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"96e868f6a5711d9cf7f01b024ab83bce8fe119ac","engines":{"node":">=0.12.7"},"gitHead":"7b2bb7e9f82cdc93cebddf824629100fdb8a014a","scripts":{"lint":"gulp lint","test":"gulp test"},"_npmUser":{"name":"jbarnicle","email":"michael.barnicle@gsa.gov"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/18f/pages-server.git","type":"git"},"_npmVersion":"2.14.4","description":"Static website publishing server for 18F Pages","directories":{},"_nodeVersion":"0.12.7","dependencies":{"yamljs":"^0.2.4","hookshot":"github:18f/hookshot#0.1.0-with-json-options","file-locked-operation":"^1.0.0","github-webhook-validator":"0.1.1"},"devDependencies":{"chai":"^3.3.0","gulp":"^3.9.0","temp":"^0.8.3","mocha":"^2.3.3","sinon":"^1.17.0","yargs":"^3.32.0","eslint":"^1.10.3","gulp-mocha":"^2.1.3","mock-spawn":"^0.2.6","gulp-eslint":"^1.1.1","chai-as-promised":"^5.1.0"},"_npmOperationalInternal":{"tmp":"tmp/18f-pages-server-0.3.4.tgz_1457104588305_0.8294156438205391","host":"packages-12-west.internal.npmjs.com"}},"0.3.5":{"name":"18f-pages-server","version":"0.3.5","keywords":["Jekyll","rsync","publishing"],"author":{"url":"https://mike-bland.com/","name":"Mike Bland","email":"mbland@acm.org"},"license":"CC0-1.0","_id":"18f-pages-server@0.3.5","maintainers":[{"name":"aidanfeldman","email":"aidan.feldman@gmail.com"},{"name":"ertzeid","email":"amanda.robinson@gsa.gov"},{"name":"jbarnicle","email":"michael.barnicle@gsa.gov"},{"name":"mbland","email":"mbland@acm.org"}],"homepage":"https://github.com/18f/pages-server#readme","bugs":{"url":"https://github.com/18f/pages-server/issues"},"bin":{"18f-pages":"./bin/18f-pages"},"dist":{"shasum":"31389a613a4c16fb26f508ce948b7f3ade3d92ba","tarball":"https://registry.npmjs.org/18f-pages-server/-/18f-pages-server-0.3.5.tgz","integrity":"sha512-Xc2qdxFrT+zS0cJolXOvUHuxF2UfTuyrMtXkckQU8S1qVAdWjcmFMyRBAJa70o/uR2ZIoh0wl9qUcUV3X5LRMg==","signatures":[{"sig":"MEUCIApVCCg1DTie2Y0if9YAE8AMvlqEIbXhF5HjuhZ1UKsNAiEA0m/F8MlP3sCq7BFfgFWHqtVYNjOI5+iMKO8M7FGnUsk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"31389a613a4c16fb26f508ce948b7f3ade3d92ba","engines":{"node":">=0.12.7"},"gitHead":"d0911fe8468f64366dcd342c34ac42c126e85ed7","scripts":{"lint":"gulp lint","test":"gulp test"},"_npmUser":{"name":"ertzeid","email":"amanda.robinson@gsa.gov"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/18f/pages-server.git","type":"git"},"_npmVersion":"2.14.4","description":"Static website publishing server for 18F Pages","directories":{},"_nodeVersion":"4.1.1","dependencies":{"yamljs":"^0.2.4","hookshot":"github:18f/hookshot#0.1.0-with-json-options","file-locked-operation":"^1.0.0","github-webhook-validator":"0.1.1"},"devDependencies":{"chai":"^3.3.0","gulp":"^3.9.0","temp":"^0.8.3","mocha":"^2.3.3","sinon":"^1.17.0","yargs":"^3.32.0","eslint":"^1.10.3","mkdirp":"^0.5.1","gulp-mocha":"^2.1.3","mock-spawn":"^0.2.6","gulp-eslint":"^1.1.1","chai-as-promised":"^5.1.0"},"_npmOperationalInternal":{"tmp":"tmp/18f-pages-server-0.3.5.tgz_1458606591838_0.5307066461537033","host":"packages-12-west.internal.npmjs.com"}},"0.3.6":{"name":"18f-pages-server","version":"0.3.6","keywords":["Jekyll","rsync","publishing"],"author":{"url":"https://mike-bland.com/","name":"Mike Bland","email":"mbland@acm.org"},"license":"CC0-1.0","_id":"18f-pages-server@0.3.6","maintainers":[{"name":"aidanfeldman","email":"aidan.feldman@gmail.com"},{"name":"ertzeid","email":"amanda.robinson@gsa.gov"},{"name":"jbarnicle","email":"michael.barnicle@gsa.gov"},{"name":"mbland","email":"mbland@acm.org"}],"homepage":"https://github.com/18f/pages-server#readme","bugs":{"url":"https://github.com/18f/pages-server/issues"},"bin":{"18f-pages":"./bin/18f-pages"},"dist":{"shasum":"8f227f006d0712a471f9b8d02d1fef17872c1031","tarball":"https://registry.npmjs.org/18f-pages-server/-/18f-pages-server-0.3.6.tgz","integrity":"sha512-eteKG9/ipjgXwsHJfYhtyjVVgL02UnW8e6kgoMGAeHRvINfB1hzEDvHBCEZpZ0sFyoU5CWVCBxKQxsdpZzVPIw==","signatures":[{"sig":"MEUCIDCqkM9jJ4l5Us0f0NH+IRIA/RnGPhH7vUH8uqsOFJVNAiEAl0y6kpH6anLOcLSUtsILEVxlCX1rl/q6A1StP/+QXUg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"8f227f006d0712a471f9b8d02d1fef17872c1031","engines":{"node":">=0.12.7"},"gitHead":"ecc55764d2176ac577c0b4ae2eadf91bec4756fc","scripts":{"lint":"gulp lint","test":"gulp test"},"_npmUser":{"name":"aidanfeldman","email":"aidan.feldman@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/18f/pages-server.git","type":"git"},"_npmVersion":"3.7.3","description":"Static website publishing server for 18F Pages","directories":{},"_nodeVersion":"5.6.0","dependencies":{"mkdirp":"^0.5.1","yamljs":"^0.2.4","hookshot":"github:18f/hookshot#0.1.0-with-json-options","file-locked-operation":"^1.0.0","github-webhook-validator":"0.1.1"},"devDependencies":{"chai":"^3.3.0","gulp":"^3.9.0","temp":"^0.8.3","mocha":"^2.3.3","sinon":"^1.17.0","yargs":"^3.32.0","eslint":"^1.10.3","gulp-mocha":"^2.1.3","mock-spawn":"^0.2.6","gulp-eslint":"^1.1.1","chai-as-promised":"^5.1.0"},"_npmOperationalInternal":{"tmp":"tmp/18f-pages-server-0.3.6.tgz_1458670813451_0.05896102334372699","host":"packages-12-west.internal.npmjs.com"}}},"time":{"created":"2015-09-24T02:43:33.956Z","modified":"2026-07-30T16:06:36.993Z","0.0.0":"2015-09-24T02:43:33.956Z","0.0.1":"2015-09-24T19:49:09.521Z","0.0.2":"2015-09-24T20:22:46.345Z","0.0.3":"2015-09-26T18:15:16.784Z","0.0.4":"2015-10-03T15:04:36.964Z","0.0.5":"2015-10-06T19:35:20.890Z","0.1.0":"2015-11-02T15:04:07.789Z","0.1.1":"2015-11-19T18:55:58.581Z","0.1.2":"2015-11-19T22:03:15.688Z","0.1.3":"2016-01-04T19:41:42.579Z","0.1.4":"2016-01-15T00:36:12.149Z","0.2.0":"2016-02-08T22:17:05.514Z","0.2.1":"2016-02-19T20:02:30.772Z","0.3.0":"2016-03-01T14:27:46.819Z","0.3.1":"2016-03-01T17:23:35.045Z","0.3.2":"2016-03-01T20:58:14.298Z","0.3.3":"2016-03-03T14:39:56.964Z","0.3.4":"2016-03-04T15:16:31.986Z","0.3.5":"2016-03-22T00:29:54.570Z","0.3.6":"2016-03-22T18:20:16.046Z"},"bugs":{"url":"https://github.com/18f/pages-server/issues"},"author":{"url":"https://mike-bland.com/","name":"Mike Bland","email":"mbland@acm.org"},"license":"CC0-1.0","homepage":"https://github.com/18f/pages-server#readme","keywords":["Jekyll","rsync","publishing"],"repository":{"url":"git+https://github.com/18f/pages-server.git","type":"git"},"description":"Static website publishing server for 18F Pages","maintainers":[{"email":"devops@gsa.gov","name":"18f-devops"},{"email":"rochelle.ribeiro@gsa.gov","name":"rori123"},{"email":"sheldon@navapbc.com","name":"sb-nava"},{"email":"gina.yamada@gsa.gov","name":"ginayam"},{"email":"micah.neveu@gsa.gov","name":"mneveunava"},{"email":"tts-tech-portfolio@gsa.gov","name":"tts-tech-portfolio"},{"email":"michael.r.king@gsa.gov","name":"mkgsa"},{"email":"charles.ferguson@gsa.gov","name":"cvfergus"},{"email":"matt.gardner@gsa.gov","name":"nava-matt"},{"email":"keithwilliams@navapbc.com","name":"keithnava"},{"email":"tai@taigrr.com","name":"taigrr"},{"email":"luigi.ray-montanez@gsa.gov","name":"luigiraymontanez"},{"email":"john.jediny@gsa.gov","name":"jjediny"},{"email":"lakeisha.russell@gsa.gov","name":"lrussell01"},{"email":"gerardo.cruz-ortiz@gsa.gov","name":"gerardo.cruz-ortiz"},{"email":"aj.farkas@gsa.gov","name":"ajfarkas_gsa"},{"email":"aidan.feldman@gmail.com","name":"aidanfeldman"},{"email":"mbland@acm.org","name":"mbland"},{"email":"michael.barnicle@gsa.gov","name":"jbarnicle"},{"email":"amanda.robinson@gsa.gov","name":"ertzeid"}],"readme":"# 18f-pages-server\n\nThis server publishes static websites for [18F Pages](https://pages.18f.gov/).\nIt works very similarly to [GitHub pages](https://pages.github.com/). It\nautomatically publishes [Jekyll](http://jekyllrb.com/)-based web sites\nwhenever updates are made to a publishing branch (like `gh-pages`, but where\nthe name of the branch is defined by the server's configuration). It also\nsupports publishing via [`rsync`](https://rsync.samba.org/) if the publishing\nbranch does not contain a Jekyll-based site.\n\n## Reusability\n\nThe server may be run by other organizations, as it is completely configurable\nvia the [`pages-config.json`](#pages-config) file. You may imagine replacing\nall instances of \"18F\" in the instructions that follow with your own\norganization's handle.\n\n## Publishing\n\nOnce the server has been set up per the\n[server installation instructions](#installation), commits to a repository's\npublishing branch (e.g. `18f-pages`) will publish the site at\n`https://PAGES_HOST/REPO_NAME`, where `PAGES_HOST` is the name of the host\nrunning `18f-pages-server` and `REPO_NAME` is the name of the repository\nwithout the organization prefix.\n\nFor example, `18F/guides-template` will publish to\nhttps://pages.18f.gov/guides-template/.\n\nThe status of the most recent build attempt will be visible at\n`https://PAGES_HOST/REPO_NAME/build.log`.\n\n### Prefixing Jekyll links with `{{ site.baseurl }}`\n\nEvery link to another page or resource within a Jekyll site that starts with\n`/` or that is defined using directives such as `{{ post.url }}` _must_ be\nprefixed with `{{ site.baseurl }}`. The `18f-pages-server` depends on this\nproperty to ensure that your site may be published correctly on the host as\n`https://PAGES_HOST/REPO_NAME/`, as explained in the\n[additional server-generated Jekyll configuration](#generated-config) section.\nThis is exactly analogous to the\n[GitHub Project Pages URL structure](https://jekyllrb.com/docs/github-pages/#project-page-url-structure).\n\nFor example:\n\n```markdown\n[This link will be broken when published.](/another/page)\n[This link will continue to work.]({{ site.baseurl }}/another/page)\n```\n\nWith `{{ site.baseurl }}` applied to every link that needs it, your site will\nrender properly and behave identically when served locally at\nhttp://localhost:4000/ via `jekyll serve` _and_ when published to\n`https://PAGES_HOST/REPO_NAME/`.\n\n### Repository configuration\n\nIn the following instructions, `18f-pages` is the name of the publishing\nbranch. This name is configurable for each `builders` entry in the\n[`pages-config.json`](#pages-config) file.\n\n- Create the `18f-pages` publishing branch. If you already have a `gh-pages`\n  branch, you can do this on the command line via:\n```sh\n$ git checkout -b 18f-pages gh-pages\n$ git push origin 18f-pages\n```\n- If your repo is primarily an 18F Pages site (as opposed to a project site\n  with an `18f-pages` branch for documentation), you may optionally set the\n  default branch on GitHub to `18f-pages`.\n- Configure a [webhook](#webhook) for the repository if there isn't already\n  a webhook configured for the entire GitHub organization.\n- Push a change to the `18f-pages` branch to publish your site.\n\n### New sites are not published before the first push to the publishing branch\n\nThe server currently does not detect the creation of a publishing branch (e.g.\n`18f-pages`), or the creation of a repository with a publishing branch.\nTherefore, one must push a change to a publishing branch before the site will\nappear on the serving host. It is unclear whether we will implement detection\nof new repositories or publishing branches in the future.\n\n### Multiple publishing branches\n\nA repository can contain more than one publishing branch, with each branch\ncorresponding to a `builders` item in the [`pages-config.json`\nfile](#pages-config).\n\nSeveral 18F repositories have both an `18f-pages` and an `18f-pages-staging`\nbranch, with the idea that most changes will be applied first to\n`18f-pages-staging` and published at https://pages-staging.18f.gov/. When the\nsite is ready for public release, the `18f-pages-staging` branch will be\nmerged into `18f-pages`, publishing the site at https://pages.18f.gov/.\n\n### <a name=\"internal-external\"></a>Publishing to internal and external sites from the same branch\n\nIt is possible to configure your site to publish to both an _internal_ site\nand an _external_ site from the same branch.\n\n- Add a `_config_internal.yml` file to your Jekyll site containing the\n  configuration needed to filter out internal-only content. For example, your\n  internal-only content may be wrapped using the following\n  [Liquid conditional](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers):<br/>\n  <pre>\n  {% if site.internal %}REDACTED TO PROTECT THE INNOCENT AND THEIR VICTIMS{% endif %}\n  </pre>\n  Then, your `_config_internal.yml` should contain the property:\n  <pre>\n  internal: true\n  </pre>\n  However, you're free to implement any filtering and configuration scheme\n  that makes sense for your site.\n- Add a [`internalSiteDir` attribute to one of the `builders` in your\n  configuration](#pages-config). The internal version of your site will be\n  generated in this directory, and the external version will be generated into\n  the `generatedSiteDir` directory for the `builder`.\n- Configure your web server to serve from `internalSiteDir` and\n  `generatedSiteDir` from two different virtual hosts. Configure the\n  `internalSiteDir` host to provide authenticated access. For an example, see\n  the [18F Pages Nginx configuration for https://pages-internal.18f.gov/](https://github.com/18F/hub/blob/master/deploy/etc/nginx/vhosts/pages.conf).\n\nYou may also add a `_config_external.yml` file for additional configuration,\nbut a `_config_internal.yml` file must still be present.\n\nIf you need a site to remain internal-only, set up a separate [`builders`\nentry in the configuration](#pages-config) for an internal-only branch.\n\n### <a name=\"webhook\"></a>Webhook configuration\n\nYou will need to configure one or more\n[GitHub webhooks](https://developer.github.com/webhooks/) to send `push`\nevents to `https://PAGES_HOST/deploy`, where `PAGES_HOST` is the hostname for\nyour organization's instance of the pages server, e.g. `pages.18f.gov`.  The\nwebhooks must be of **Content type `application/json`**.  Webhooks can be\nconfigured for individual repositories, or a single webhook can be configured\nfor an entire GitHub organization. See the [18F Guides Template webhook setup\ninstructions](https://pages.18f.gov/guides-template/post-your-guide/#set-webhook)\nfor an example.\n\n### Stale sites and repositories require manual deletion\n\nThere is currently no facility for automatically deleting stale repositories\nor the sites generated by them when a repository or its publishing branch is\nrenamed or deleted, or when a site updates its own `baseurl` via its own\n[`pagesYaml` file](#generated-config). For the time being, such repositories\nand generated site directories must be removed from the host manually. We may\nimplement automated site and repository removal in the future.\n\n### <a name=\"generated-config\"></a>Additional server-generated Jekyll configuration\n\nFor Jekyll sites, the server will generate a temporary Jekyll config file with\na name defined by the `pagesConfig` [configuration property](#pages-config).\nFor 18F Pages, this file is called `_config_18f_pages.yml`. It will define the\nfollowing values that will override any existing values from the site's\n`_config.yml` file:\n\n* **baseurl:** - set to the name of the repository without the organization\n  prefix, e.g. `/guides-template` for the `18F/guides-template` repo\n* **asset_root:** - set to the `assetRoot` [configuration\n  property](#pages-config)\n\n**In most cases, published sites should not have either of these properties\ndefined in their `_config.yml` files, nor should they publish their own\n`_config_18f_pages.yml` file.** However, if a site does contain its own\n`_config_18f_pages.yml` file, the server will use settings from that file\nrather than generating its own.\n\nIf a site uses this file to define its own `baseurl` property, and that\nproperty is not `/` or the empty string, then the generated output directory\nwill match the defined `baseurl`. In this case, `baseurl` _must_ begin with\n`/`.\n\nIf `baseurl` is `/` or the empty string, or is not defined in the file, the\ngenerated output directory will match the default for any other site, which is\nthe repository name without the organization prefix. See the section on\n[creating a symlink to the generated homepage](#homepage-symlink) for details\nabout this use case.\n\n## <a name=\"installation\"></a>Installing the `18f-pages` server\n\nInstall the following if they are not yet present on your system:\n\n* [Node.js](https://nodejs.org/) version 0.12.7 or higher;\n  check with `node -v`\n* [Ruby](https://www.ruby-lang.org/) version 2.2.3 or higher;\n  check with `ruby -v`\n* [Git](https://git-scm.com/) version 1.9.1 or higher;\n  check with `git --version`\n\nFor Ruby, we strongly recommend using a version manager such as\n[rbenv](https://github.com/sstephenson/rbenv) or [rvm](https://rvm.io/),\nthough this is not required.\n\n`rsync` should already be installed on most UNIX-like systems, but the\n`rsyncOpts` [configuration option](#pages-config) may require adjustment,\nparticularly on OS X. You may wish to experiment with `rsync` manually to\ndetermine which options suit you best.\n\nWith the correct Node.js, Ruby, and Git versions in place, run the following:\n\n```sh\n$ gem install jekyll bundler\n$ npm install -g 18f-pages-server forever\n```\n\nFinally, as the user on the host that will run the server,\n[generate an SSH key to add to your GitHub\naccount](https://help.github.com/articles/generating-ssh-keys/). A new key can\nbe generated by another team member should you leave the organization.\n\n### <a name=\"pages-config\"></a>Generate and configure `pages-config.json`\n\nRun `18f-pages print-template > path/to/pages-config.json` to generate a\n`pages-config.json` file. Edit this file to support your installation.\n\nThe template is a copy of the [`pages-config.json`](./pages-config.json) from\nthis repository, which is based on the actual configuration for 18F Pages, and\nillustrates each of the following settings:\n\n* **port**: the port on which the server will listen for GitHub webhooks\n* **home**: the parent directory for all of the generated site content\n* **git**:  path to `git` on the host machine\n* **bundler**: path to `bundle` on the host machine\n* **bundlerCacheDir**: path to bundle cache relative to **home**\n* **jekyll**:  path to `jekyll` on the host machine\n* **rsync**: path to `rsync` on the host machine\n* **rsyncOpts**: options to pass to `rsync` that control Jekyll-less builds;\n  OS X installations in particular may need to adjust these\n* **s3 (optional)**: if present, will back up each generated site to\n  [Amazon S3](https://aws.amazon.com/s3/); attributes are:\n  * **awscli**: path to the [`aws` command](https://aws.amazon.com/cli/) on\n    the host machine\n  * **bucket**: address of the S3 bucket to which to sync generated sites\n* **payloadLimit**: maximum allowable size (in bytes) for incoming webhooks\n* **githubOrg**: GitHub organization to which all published repositories\n  belong\n* **pagesConfig**: name of the [server-generated Jekyll config file](#generated-config)\n  that sets the `baseurl:` and `asset_root:` Jekyll properties\n* **pagesYaml**: name of the file from which properties such as `baseurl:`\n  will be read\n* **fileLockWaitTime**: max time for an incoming build request to wait for the\n  lock file, in milliseconds\n* **fileLockPollTime**: max interval for an incoming build request to poll for\n  the lock file, in milliseconds\n* **secretKeyFile (optional)**: if you defined a **Secret** for your webhook,\n  you must enter the path to a file containing the secret value; otherwise\n  ignore this\n* **assetRoot**: the value that the generated `pagesConfig` file will contain\n  for the `asset_root:` Jekyll configuration variable; see the\n  [`guides_style_18f` gem's source code](https://github.com/18F/guides-style)\n  for how 18F Pages share common style sheets and JavaScript files across 18F\n  Pages sites, so that updates to the theme are shared across all 18F Pages\n  once they are pushed to the\n  [18F Guides Template](https://pages.18f.gov/guides-template/)\n* **builders**: a list of individual webhook listeners/document publishers;\n  each item contains the following fields, _each of which must contain a\n  unique value relative to all other `builders` entries_:\n  * **branch**: the publishing branch from which to generate sites\n  * **repositoryDir**: the directory within **home** into which all repositories\n    will be cloned\n  * **generatedSiteDir**: the directory within **home** into which all sites\n    will be generated\n  * **internalSiteDir**: the directory within **home** into which internal views\n    of sites will be generated\n\nAlso, each `builders` entry may override one or more of the following\ntop-level values:\n\n* **githubOrg**\n* **pagesConfig**\n* **pagesYaml**\n* **secretKeyFile**\n* **assetRoot**\n\nThe `builders` list allows us to run one server to publish both\nhttps://pages.18f.gov/ and the authenticated https://pages-staging.18f.gov/.\n\n#### Branch-specific secret keys\n\nThe value within the top-level `secretKeyFile` will be used to validate all\nincoming payloads across all branches by default. However, it is possible to\nconfigure branch-specific `secretKeyFile` values, if the payloads\ncorresponding to a particular branch are generated by an additional webhook.\n\nFor example, if you want to run one Pages server for more than one GitHub\norganization, rather than sharing secret keys across organizations, each\norganization will have its own branch with its own `secretKeyFile`.\n\n### Run the `18f-pages` server\n\nAfter that, run the following to launch the server via\n[Forever](https://www.npmjs.com/package/forever), where `/path/to/` and\n`/usr/local/bin/` are replaced with the appropriate absolute paths:\n\n```sh\n$ forever start -l /path/to/pages.log -a /usr/local/bin/18f-pages /path/to/pages-config.json\n```\n\nYou can find the absolute path to `18f-pages` by running `which 18f-pages`.\n\n### <a name=\"homepage-symlink\"></a>Create a symlink to the `index.html` of the generated homepage\n\nFollow this example if you wish to publish the homepage of your\n`18f-pages-server` host using `18f-pages-server` as well.\n\nThe [18F Pages homepage](https://pages.18f.gov/) is itself built from the\n[18F/pages](https://github.com/18F/pages/) repository. It defines its own\n[`_config_18f_pages.yml`](https://github.com/18F/pages/blob/18f-pages/_config_18f_pages.yml)\nfile so that the `baseurl:` override described in the\n[additional server-generated Jekyll configuration](#generated-config) section\ndoes not take place:\n\n```yaml\nbaseurl:\nasset_root: /guides-template\n```\n\nThe homepage is _literally_ a one-page site, but it is still published into a\ndirectory called `pages`. The trick to having it appear at the root of\nhttps://pages.18f.gov/ is to manually\n[symlink](https://en.wikipedia.org/wiki/Symbolic_link) `pages/index.html` into\nits parent directory:\n\n```sh\n$ ln -s /home/ubuntu/pages-generated/pages/index.html /home/ubuntu/pages-generated/index.html\n```\n\nThis symlink-based solution results in the homepage also remaining available\nat https://pages.18f.gov/pages/, but that hardly seems worth fixing. If\navoiding this is a priority for your organization, the homepage can be\ngenerated using its own dedicated `builder` and served via its own dedicated\nwebserver rule. Trying to automate generation of the symlink or to copy the\ngenerated homepage file might be another option, but seems riskier and\npotentially esoteric.\n\n### Webserver configuration\n\nThe final _required_ step is setting up your webserver to expose the `18f-pages`\nwebhook endpoint and to serve the static content generated by the `18f-pages`\nserver. The final _optional_ step is setting up an organization-wide\n[webhook](#webhook) once the webserver is configured and running.\n\nThe following excerpts are extracted from the complete\n[18F Pages nginx configuration](https://github.com/18F/hub/blob/master/deploy/etc/nginx/vhosts/pages.conf)\nfor https://pages.18f.gov/ and https://pages-staging.18f.gov/. Note how the\nvalues match those from the [`pages-config.json` file](./pages-config.json),\nexplained in the [configuration section](#pages-config).\n\nThis first excerpt from the https://pages.18f.gov/ `server` block defines the\n`https://pages.18f.gov/deploy` webhook endpoint. This endpoint proxies\nrequests to the `18f-pages` server running on port 5000. Note that only one\nwebhook endpoint is required, since the single server instance publishes both\nhttps://pages.18f.gov/ and https://pages-staging.18f.gov/.\n```\nserver {\n  listen 443 ssl spdy;\n  server_name  pages.18f.gov;\n  include ssl/star.18f.gov.conf;\n\n  ...\n\n  location /deploy {\n    proxy_pass http://localhost:5000/;\n    proxy_http_version 1.1;\n    proxy_redirect off;\n\n    proxy_set_header Host   $host;\n    proxy_set_header X-Real-IP $remote_addr;\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    proxy_set_header X-Forwarded-Proto https;\n    proxy_max_temp_file_size 0;\n\n    proxy_connect_timeout 10;\n    proxy_send_timeout    30;\n    proxy_read_timeout    30;\n  }\n\n  ...\n}\n```\n\nThis second excerpt from the https://pages.18f.gov/ `server` block corresponds\nto the first `builders` entry from [`pages-config.json`](./pages-config.json):\n```\nserver {\n  listen 443 ssl spdy;\n  server_name  pages.18f.gov;\n  include ssl/star.18f.gov.conf;\n\n  ...\n\n  location / {\n    root   /home/ubuntu/pages-generated;\n    index  index.html;\n    default_type text/html;\n  }\n\n  ...\n}\n```\n\nThese final `server` blocks define the authenticated\nhttps://pages-staging.18f.gov/ host. The `127.0.0.1:8080` block corresponds to\nthe second `builders` entry from [`pages-config.json`](./pages-config.json).\nNote that this site uses the\n[bitly/oauth2_proxy](https://github.com/18F/oauth2_proxy/) for authentication,\nwhich you can learn more about in the [OAuth2 Proxy section of the 18F Hub\ndeployment README](https://github.com/18F/hub/tree/master/deploy#oauth2-proxy).\n```\nserver {\n  listen 443 ssl spdy;\n  server_name  pages-staging.18f.gov;\n  include ssl/star.18f.gov.conf;\n\n  include vhosts/auth-locations.conf;\n}\n\nserver {\n  listen 127.0.0.1:8080;\n  server_name  pages-staging.18f.gov;\n  port_in_redirect off;\n\n  location / {\n    root  /home/ubuntu/pages-staging;\n    index  index.html;\n    default_type text/html;\n  }\n}\n```\n\n## Contributing\n\n1. Fork the repo (or just clone it if you're an 18F team member)\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Make your changes and test them via `npm test` or `gulp test`\n4. Lint your changes with `gulp lint`\n5. Commit your changes (`git commit -am 'Add some feature'`)\n6. Push to the branch (`git push origin my-new-feature`)\n7. Create a new Pull Request\n\nFeel free to [file an issue](https://github.com/18F/pages-server/issues) or to\nping @ertzeid, @jbarnicle, or @mtorres253 with any questions you may have,\nespecially if the current documentation should've addressed your needs, but\ndidn't.\n\n## Public domain\n\nThis project is in the worldwide [public domain](LICENSE.md). As stated in\n[CONTRIBUTING](CONTRIBUTING.md):\n\n> This project is in the public domain within the United States, and copyright\n> and related rights in the work worldwide are waived through the\n> [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).\n>\n> All contributions to this project will be released under the CC0 dedication.\n> By submitting a pull request, you are agreeing to comply with this waiver of\n> copyright interest.\n","readmeFilename":"README.md"}