{"_id":"igem-wikibrick","_rev":"71-c07234ab91533ec7d977f5dc34069e9a","name":"igem-wikibrick","dist-tags":{"latest":"0.8.2","dev":"0.7.1"},"versions":{"0.3.1":{"name":"igem-wikibrick","version":"0.3.1","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"214d7c5cde954746db46d05f95e556df454a784f","_id":"igem-wikibrick@0.3.1","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-Cs/KBrLxHNgk2mWlopCxXMoqfQ+7HjRGHcpjjnGSltn0gWoRyVs1o2yCUhUJMYHkdu7f7bOJW63/ySDb0lk8Dw==","shasum":"309066ac91fbdb5e05df760e3239bae77cc9aa42","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.1.tgz","fileCount":67,"unpackedSize":267786,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbUffHCRA9TVsSAnZWagAAf1gP/AyU91RxgxZHE32tfUhP\n5M9iwQ4WVSnJea3hm+ZzWLVZnJ63O0JRBknOTSwzV0M/hhgW6fol22sCtqmy\n8lzPBoPPFf3juHsZRqY42vnja/zEG5KCjhHrPaJmR5dztAC43eMvXtLld61s\nQnSxK1WiYTJvG/upE1AHbkFHO0QXnTXUzLHZDqx+QQZx5aLT8cOy9LL3NcWw\nJ5xdNEnRvGSxKoi5KzDaVzn+7eUjwesKX43Ijyg3JELu+xsgUzaUyi1Qtl8T\nuxrNX1O2h0iniDLlUBLWSfe+VfAkcjkKG9FNSkZm/JOLxVuYLZe/BHkYo/N4\ndwbxq660cYNyqBlWpwceCjc86l7rHzODU3Q5NysXilJJZ6tWX83iKokyMluJ\nP4mxabzLPXhxtTyYTkZZB4lN+UzeTSJh8HHbByUfasNTEjFPzudeylfupl7z\ne4lCUUs6NK24q4qE6o61yPtZHj57eEkTW18IWVNb69Nen2Zs8cMd+6tYPWUE\nExFL1JfAq83tcieVF6ozvf3FRaoW8+B02eD862b6QsLSCJpOnkkj8kWtyVx2\nQ9VaxKB1F/+dsPfiVpAWcWTyhCNGLSdkGpt/Pm6zcRDSBDl101H5/NTGy9db\nd8YCFdZ+HzLJ3pCjxhKW7yYjEhax29Sy+9mhoFG4ERbKh1nlaWQKr4MsK62Z\niROf\r\n=D7z7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICnSxUfuzjKPM5iB2owb/ubrLNVPe8JstQKpnkvXLtLcAiBwBre0qSwe9a/lcFyVBQuvnuSF5mHJY3WMYqv42VDLWw=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.1_1532098503686_0.46109277501859336"},"_hasShrinkwrap":false},"0.3.2":{"name":"igem-wikibrick","version":"0.3.2","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"249d2cc6d057ddde1437cad64d0c3608eabcd0ba","_id":"igem-wikibrick@0.3.2","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-eBEvNnS7Og6pv5JbK2hu9hR/nBgB4MOZJiQwHtHqn7Ap690GABuUqRpJUrX3ro3JMUSB26eMBs8mCA2Z1gaIZA==","shasum":"7cf7abcc5325e03ab79ec6bf8d3e590e6a91d6b8","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.2.tgz","fileCount":67,"unpackedSize":267856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbUfm7CRA9TVsSAnZWagAAm3wQAI0kZO5t0lY9ryniFSxo\nk0Ritos1QNmfIAurYMmBg1x4SE6/nBS9YrJFdnncYwEj/vbJuIJ/o1jaGjmK\nRQS7b5+7PwrmctgpOgERbxn0Y4mHnCjHUIqaEYdelgVJycEAvABdIfC/fVfG\njvoUm0wvuIIbaNE78SwlnLfGFD7wiHbNe2zM9wYA2aBCKbnnE2j8O1Bkoblp\nHd7s/SG5QGtjHWdZRWGWY2zjST5hhmAWsw3Dm5PAACli10zf/JztgagPyhKF\ntIL3QU7noRqYCHl9xgNKiMY4XI33/ThxI/FjuZ7DKrgoVDBjSBAXooO6DTwL\n0dRrtaS1y9bNMm/HctNKIaiKlpDr/55xbIvEWEv8M3lZFT1RLsd6LHKb9iLW\ndYFb7ZFUwgoFCB1BB/+PhZqzVGQtByuZR1UK7kP1PyNOpI1vG2QQqRvDXPcX\noRCWOjx7FW1qsQd0RFiHKEJLiQkl/e3krdiHTlt7yZVNbN80zykiLgItOeHu\n5lIGW8k070zV+0vlWFa0Ux89rxMVfbcREhOXjGmFIfxfnOkaY+V1D/9qRITA\ngWcBXQ1X+HDdYumDmfp2NIn3u4kzNeEAx8iHc461gALSbrEiNWIuoLB+uZxk\nJ1l99h3nMGZpUxqrdKPWNh8noMchhtlfCxc2UW9BSR7ClvlNlX/8ozes7zLt\n8YX1\r\n=7Mwn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDgoWJqzWxDDGIpLljZiVWDGSbvfkmOef+lc4XuKa03sAiEAvNuiqnIB516+3DviqLepSz6p/RKw+p+wwtEvA/pbV/Y="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.2_1532099003815_0.5880206574506461"},"_hasShrinkwrap":false},"0.3.3":{"name":"igem-wikibrick","version":"0.3.3","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.5","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"651804bcdb43b3db5ca87452fdca33541461ece0","_id":"igem-wikibrick@0.3.3","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-0HetU5vT+JGrIIP1cqvVdnaEwcV8J/ywf4yNme3tl4s/bGx7xWxqLvf9sIR54R3Sq1AwlZUFb/6EGln2ZDGUig==","shasum":"665fe490f5b3a2ab37e30cdef329dbf3f0aa3498","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.3.tgz","fileCount":67,"unpackedSize":268178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbUic9CRA9TVsSAnZWagAAS0EP/2skq6DALhKmcVWJXjZy\nqohw601PXL6SLjkJ/ZuCSQ8WcclJ+ZzyHa1RYWtWJIRi50/JDSFM2wj7QTjt\nbnmMoJrBe1EnsC4vuGcDk5B62sccUqfobine0cvaG6flDU989JDba6mXVpW6\n28jtogxOozdFwvEK3Q9gZ1nmOnAgOxk0GgM2qfYLdrYoWTRcO5KCqp5tRiaU\nYdghIjY/ordOJ6oyAQIGB8Ywox2cfmjNIFPIRzvmQ9PJgGPZMQItKyy+kmQF\nikddRwOsKrBLUBcItrRP4lNOgSxYi/OllD1Lbi6jXTyqJriwFXmBKUNQZmXz\nYYNNCbaYbflMnhUUU3TRwfUbx4dFSX88zZATGk3cfMOcEw+p0pl4txq7eiAM\nX6GkHGLK+xzrQCXXDHoMgLT/ZZMclh8WqA/v2EiLpXpFLHLu8HilvdmnLXoI\n3rmx8XnEZfr/B56OalW1AtP/5yLYIgVdvQLgp2ihf8TaoP03gljIY08yiW6P\n/3OuTCRuABPEj80SvvRn71bVl3TG3q1WGDbyK5T7GDEcZkOi1vB5aO78Skvr\nzh+djClPJzi3DICMzYD2/EpkrMJM4YbkN1Z6z8x7jRhmG/v/2SzhNS9Lms1W\n0XRepUkqc7hfz1AsMVGFzAKfD9j2XboiUhdEM12m8w8LzS9iRqgKPyMrzfDb\npa2f\r\n=/ZAY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRZ4TuRgnv1bnB5GPBCM7KrVNASGcTySv81qatRNmsIwIgaZiiMj8k8L64K3xL3UWTlttwG/O8Txom9naXZLlEVxc="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.3_1532110653345_0.7786639868539629"},"_hasShrinkwrap":false},"0.3.4":{"name":"igem-wikibrick","version":"0.3.4","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"e051e537d7a19c3960b209aed70c8aa85bcf173f","_id":"igem-wikibrick@0.3.4","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-8AOg/s3IsiyTjD9A82QuJ+QTBawbQT+1Nphid8GKRPMXJZxkKnbY+olOTllXlXJL8VCja3Dc2PRgA15FE5s7tQ==","shasum":"8d1e34b0652dbafffbddc2f5159637e3863ff072","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.4.tgz","fileCount":78,"unpackedSize":2452261,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbVgEpCRA9TVsSAnZWagAAZPQP+QA1d2msWmVuX13rcLwc\nqmkoOmnEKU3GFDWVbc3z0xyi6JIIaFis2lZhLhclWF4CS0z1C6vS9KfThkFV\nCgq10bEMXRMU/z2ul8DyifssfKUvOlv9RM+sudSmL7pjpSrJIJj7R6lzACEa\nBZ+udFfxxEG3+O+R9Onn3vbZqKFgulxZskdqSmW36jlVfjU93zhma95MbgQk\n4vZXkn5yvN/fObm0MJD3WURw4XGeyIo7nrW/luRl4s29mOWrd/tdh6wgpRIr\nWsuwrwhnNU1rK3EhuS1NvDSvqIgLbiJtveURt1qNoB/IhrDQlgG5tgfeBRIV\n1FMNS4CcSDbp0qRdB4aHMciGsIdLSB2TtodNfjf/zomnUS6fm4P0MK4Nkmv3\n/JOJfjpMeOAoqgpBbZggU/dOzvAZQL368pROYiYohc2C4zrcEhz78mbn9rYo\nRodxoBGc0nYdl5IR5IHqcuhiy9+fcOfmwnQVQxbx2dE6FHpnKzN2koI5il8B\njFJ/hG8JgxAC4Bl1WmmIhI3mMK/EhhmlVpzMnnoIUrtU9ebH8uqcAtFhODAT\nDD9gSpIaf0W7+l7RUlBdRDq7F2nOjdcWwinrfiEo2gSH5xPVd2nujlz4EZ2C\nIN4NrL+whSpGFhiUKDFsYw98eug11UwWz6Wh4SXbX0QUjhq3ob5GqIriMSgh\nGF1Z\r\n=c6dv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCc/dI9l5F47MFjqGZZl7S/Ws5eqgaCQ4RmcCueAjFBswIgWXrZf/RVEMowIpDhVg9lBVG7VXCxQOOTUm2uDAmnxXw="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.4_1532363049350_0.5211866204397009"},"_hasShrinkwrap":false},"0.3.5":{"name":"igem-wikibrick","version":"0.3.5","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"f283a42b94d01a43360c2da935a31c3bf9ba9fcb","_id":"igem-wikibrick@0.3.5","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-KHRsu47tQB96b8/D6qlgh3y7QjcqQQNPn+FqaVaeE8LJzqlrpSn3hvsM4Gv2F/jDekT4AIl6sFJJf3lsC0VfHg==","shasum":"2fff99cf29925e1fe937a4a5336743b3fb9cfa7b","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.5.tgz","fileCount":79,"unpackedSize":2460958,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbViiGCRA9TVsSAnZWagAAEqkQAJg1/OpZNPZrsKAfzrfI\nMIfMhONoifZ3+jOEFQzxf5OQxx7sle0bc93mvt2B0+qB/vWgV/ppy1o1eBgm\nnmZ+rPIp7C10DKZP3SnQA/3dLyIZTEwGY6yRt1wKWVG89TMt0eK84/LntmFv\noLgJxBfz1VKm4nLI2/1efSYQa5j8cDm0U+bPBdYBiEEKeocYQ6RroaS/Gine\nkQjM8ZhejmDeByb6keO2t9XCzV2lgxzJcWY5gmaYnwuMrcJOCUFNcryXT3Za\ne/boyvk9f7PUBD9twKNgyl20MhGpV/hYejKff4CNoKNz0IfrbwYvNLcauNif\nVMr0//kxoFmVcakvg38yHNiex5HRqZLuiUaLR0b1uLDGkR7RWojp+D59ethD\nl7uLqp/Hsiv6gt8jWwKE9FVWPN+IkE6yl8s9nJ94klFn1hOn1SGnVojp1635\nmIVP5e4vXxnlfvl3/sC0+ugIXASibb45C5kStzI3YEagmIYFPBSmC+IQdStX\n2fP//9DSkqW6ldZhFB49dMi28mX55fRfk4+k6N+6HBp+McxAzb1KwBCqsbNP\npQdjuIVsKSugDQqy4dENA3w9huNNrBmsukTSUSMHHd+aFRZlqkOePUMQZ+bI\nOsPeJki9nKHGxH0/s0YEYKXBZyO6nwRWbC4+w23rb4TorspAnfJxB+BjHASb\n9ETe\r\n=5x1Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIATd76sip2RrH9Fprgtwfnu26tcZfVhJ1vdm/DTv1os7AiB3lh83l6Z+k13q4bmgTT9AwQXDk2O9G8Kf4jmeJnODOw=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.5_1532373126505_0.9589093967910318"},"_hasShrinkwrap":false},"0.3.6":{"name":"igem-wikibrick","version":"0.3.6","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"19333d209f532c1fd0961e79b55e319eb532065e","_id":"igem-wikibrick@0.3.6","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-mCtBopv8I9UCaexLw2vL5sfLp0uUSMNGBzGOtDN8LV3676YUl2HadnBPGIH9S0TAIg29FbeyOuc36KpL2AIZjA==","shasum":"7e81e12fd0d9299fe8cbefe0eeaa588c923ffea8","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.6.tgz","fileCount":79,"unpackedSize":2461113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbVitqCRA9TVsSAnZWagAA6ZYP/09taGn0a7dw6CQrlrip\n//ZoCAj+w01YBuzXqCoIqFoLt804ur/b5IqrLPhzWwm74MHwSVBbHkunU1DI\nK0FW8kJzuRxp0t+7NEIKvtsRiVDLbAESfst+2xEuc2vdH9d4lDqlM/cFfrDF\nz2/ya0LjJULTiLgDX3kA4g/b8/3LTdRuQBshF7aD9B10Ww5yvQ3soVDN2fFq\nN2JvTBdhBuFv4aO8hCZMjnhT9eLEFGMoNtHc9CESGU9+/SUt5VuqOduhyVxU\nXdPgURuVsetuVkz59N4HxyH0BTCs3s5A4pzCNxGSTZ/u9qNmBp9yvHotrNR6\n7V5Y6n128gYWmXzFV7XmM1rBPVOZUJK2qeKZNIFt/+xNiWscTxdNytqiE6zq\n0mWMP+wTgvnFkq/xcDq9yQd2pBv/cnjFcY7juOo0OYxgD+kCC7ocmUR+/Uw3\nAQKXbx88UJF9gMUTaUWVhpilD/OSKGsztEDmQkn1vIEli9OP0/VE5SMGPoZd\nUzAW1erwBRCg4O/WMOe1hA7TWIO/gyuHcRh+88spV0LzRx8LuU0siMq5639T\ntHYshzECfYS/zslRiWy1k+ny7ZviiVPSNZb0uQvASL6oSy/Vb6pawT9Juhcl\ndm5IlUQtmDpTysShKenUteSPg8DSSEXofMzYjiUbxLEcNvlTikcpQ0Ob1hj0\nXnby\r\n=HH27\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCz3xg6PU/Ci9QIt7DosycQurfS3NcgN+OY2WAWDsoy4gIgL3V+SsAhy3MOd23syfj+hJE5+j+1BexHvo80CexRCUc="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.6_1532373866578_0.8317779232876314"},"_hasShrinkwrap":false},"0.3.7":{"name":"igem-wikibrick","version":"0.3.7","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"418f26c33c3e73a7e8e01201dc86136771d1a58c","_id":"igem-wikibrick@0.3.7","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-MH/bX4ywDih/6uMX/YimzlZKAOkFfEnw7xbKHSBMDEmceaCkEBF6z5fOpJy70WJG0rdceis4m42Rnb5phHm4VA==","shasum":"884bce08a6dddd912d511aa00138061564bfb016","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.7.tgz","fileCount":79,"unpackedSize":2461115,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbVz2xCRA9TVsSAnZWagAAslYP/jkdo5e4SgpRQcLhd9Xb\nvpIRnlN5yDdkOrNT4SoJwTA+HD1jR/H49gX/RY9X99/5QEkMHqqCCWyME/io\njHMlt3WbNtOEKblNHNagZfVdL7kKkax4ebw7WVv9srSCJNdauEKVmcDDvcXH\nNg4xTIm019RHvMiJDiH+3ZMJX+bozyeX5/DN6nPy/w2k4RfqC8mGM+7hhXAZ\nqvJJ/OWnVv4j5ACqgPONaGDxFlMFlKI7MDgMfh5wtmu54reba8Ej6YZXIAjl\nlFzVcJu3YXTWgzV2UHSctv6ZeM6/zw3m9Yk3qptka6ggzOSt2Bm8j4CXAYge\nAgoH5ODkfWC+ZZdlEs9ZAJ4b244ssW2JFfHIKmh5ueQtfcK3Be2hYD1y7j8/\nqD71VxGy4735bT53V0UYjQpsEtoFAh7hJfwS6EuVJ2lV40MLDhkCd7/LPbeB\n1fy9tzM+BFKGJcaPWsXNmWxxbIpyOmXm7ueDtnF0m+gh5Kp6QjU1dd7g22kt\n8Z9KrrQzjhzDCG4VH/RidHAdfMmrYHbWEnuO/tAwOJ4GW2Vj1Az0Tvd3Pu1J\nFff+Vh70DFv0XpBrDdUxunS7zX/2uoFqjXxAldPbu+fZczHrt2zCzdtBS8ls\nyM4r23jqiFwEXCOPlQ1gQtpVpotGRDIjf12RgiqFoHv8+jTMS13U5GY+pp4z\n2mNN\r\n=mDFB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZZ9lXEU+mCbSBbOWCEYbm3O+kH+B9VlG7Hm9zIkWoYQIgZKKB9Q+GSoSQ8k3ONKwszsIKTXtRnI1PqejwExMu6sE="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.7_1532444081632_0.6156283698933687"},"_hasShrinkwrap":false},"0.3.8":{"name":"igem-wikibrick","version":"0.3.8","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"e44fc7acd463d2ddd4dc8f75b614de132f4546de","_id":"igem-wikibrick@0.3.8","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-Hhg8ejIARm1P7LuGrrgKWevXn5nD/ViH96sVu85t0d8+r87n6ufGFnEBTJgANS9YyqgcLgCfJMb6vWrwO4ApFQ==","shasum":"107c28dc570e578a06ad7b6c1701f1bfd613fcbe","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.8.tgz","fileCount":79,"unpackedSize":2461076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbV0KdCRA9TVsSAnZWagAAAk8QAJnh9w06QWBS6Tt8qdvA\nEu+dLGuTHMZ10I2ttFHhR74XkIrwYblge+g31kQgzQTFB5xZ08etuSX5EIeB\nG2toLrHlJJcpvk6MFw/BsegMN/MFmfN8hySupZ3hUOdM+qhMMNanft5zSMuI\n4OoNE5bzV1D5bfNNQQ62z4ocLyPMpdrh5VnopwBiZFXLWKljvpVq3wvN+5SU\niXvpA/s6T0gLhtjjLV+6b3qVTFbac0lwoU1Qp6sOsKOpudwQo88CsMvwSHdd\n58KcVmsPqT/IpfJUFf7SSHZiayfA7dbdWZX8+L7HHc004ZGLTvsG5ATyyUWu\nTfOuzp0osPoEjMYYo+dKaVqsFnVg6hed78eFcJPikqd3WaApUWzheNwmSd1V\nQQF8P3pnSsOYq0LLnf2uzQTChGBtRSSaZX5OCp8Iu49XizVKHrTHgwzfRLTs\nayYpJkKJe1+zN8NCWAyPGVs481zM8hQFrUybLILxMjERA4xN+Ltz9oi37PIA\nlstHQ8yo4/GvYJH9QcixQheDG+Vc29OcC+rRgljA/wFR/lqm1ZfF72SBbExd\nFZFa3FFFlDVj0alWdo5zaDKOfxD+Hh8WAphn8jbiefuBQLZ13+hLkDShuScr\n67WCrMG36lQtoFHlqkphSE6v6eQ8zkXk/TT/NMHOZJCjxvQAEqWX5eXP/H/F\n1BXx\r\n=i7Hx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFaufyQf7YrOXch7+qCoPL8bIG6zjy2txwVyqllD4K9QAiEAtSD3fZCyXoAX9h9+KPN4LYXQtix+i4nSa98D7j5QfWI="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.8_1532445341227_0.35540462514902194"},"_hasShrinkwrap":false},"0.3.9":{"name":"igem-wikibrick","version":"0.3.9","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"a012f0a5bf326f87afae98ccaad55dcb27ae0acf","_id":"igem-wikibrick@0.3.9","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-5aikHe9nIIzt4OeHlaGR5XcPErAnox2SVQ7743ZmvGGwkD8BbSTVqEEDe7bie7Blmh8w4JW32LUVlr1ucVedew==","shasum":"4cb85da584f42f58d48f7b386c6ebea7d06e2170","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.9.tgz","fileCount":79,"unpackedSize":2461076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbV1PSCRA9TVsSAnZWagAAiHAP/RflTJ84v+bXYcTysKfX\nl48U6bCyLkhqG3OlCza6844gvCCElObNDnIleqyfFbgL8vTTaWLme0MI6fU3\nP65vLIC4EgPHjBlo55C2sAqe6LWrBwATQMCFaRwAb1FafdqDJgVB6iSF+t1g\nRpM1HW9Jy7fv7BlZFmKCtWCIWo1khEbtL7S+TwFa+DGLJanWwHGvEjwnQKaE\nZtA7ofaVLvxIFG+ah0Ie9KuWs7cxWOpeBNJBawfRePcjOfyNgNsfAB6YAz3I\nl2e3yvjYg1QTTqY1g1B+FfYi0q1nNE1OmOJ4aI+MN8D148bkRYA72jxSNxgl\nKeshrHFkhmEwlzOhs/SgBnGQ8nNeQT6csxvY3wF2enXUCNpEI5gvFKh++G7d\nPNcmTIyjJmrvb48fYlTBe9MSnQhIP+G4oBz68A86P9MuFWm0iS2drpLF9hPP\nKY4yuSYclnfUUDxubmE5peGFniKMmRljI9e/UIHVK80viMQl2R8kmBhv5IQF\nTzlYmQfSwKMU+HjKWnr0fiIltRJ3LuamA/PNMXYksd0uXQV5Kyfhjg9zFOBw\nTaW+n1ZGEM75E3/8diqSKmkEOLHokrcjnrzSFuPOtIURkufw5PUuHirWx1J3\n4k1dEI9s2UdUsHuyvoUE1OC54BPebGwlSTSBPqGI4YEa3d1BMRdtytryD7yf\nxPIz\r\n=ZbNy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQCcm5kn9QAG+g1I7wM0lx+FCi7+O4Y+IQWM7S7zfaeNJQIfPYW/0WQkoT/kICv0yWO6hNdPy00u0XXWNLU/ZgpvZQ=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.9_1532449745866_0.88146639870698"},"_hasShrinkwrap":false},"0.3.10":{"name":"igem-wikibrick","version":"0.3.10","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"d2d79a52540064001acbf336693434c7d1ed2ac2","_id":"igem-wikibrick@0.3.10","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-LCZJTukD5iHMJSe0TNJaETerQ1Cn0GfveH6gmP73P/uaYCyJyQW7Vb6u4Y0FVaUXUOLRh7r5awGy1XLxFgh+7g==","shasum":"58349bc45b2400e2380cdb65cdb98550c9e389aa","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.10.tgz","fileCount":79,"unpackedSize":2461155,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWJOgCRA9TVsSAnZWagAAlK8P/jsOt2zu7LpSXET+MGBs\nLv2KsDZuke/t4SQ42v9mfGKHbln6xZxxA22RKPBK/urm0Lj5OegWP0D7gCQ/\nzfwY3zQiVL6LJgBr1TJh0ISC6lIvaHtfm+EGUmTbo6rKzSMOMTMRnlnC31PH\ndaE+v11pU2hFcr6ef+ZlAGnqr4VZSmSkdhaS4bsKFGuU6jd1kh0xftEiSfXD\nba1yQ6I81xIQG9q0o7irwtYG2GosbMMrTFhtIilGDAtB9SXtT2bUT/VmJBLx\nBue/ZUgBeDK9RKSXQswmmOMegs2jfItEjfnw6R57md1txRp4LxnqbWWU9bjz\neKSF1n4ZXOerrQkMmx+3rh54C1lMCBzZioN9s0lWQ9FbZ03h/vrQFJVcGasr\naHwG/MRyfT46cabGENMUWr/RASt0EeDnaI9VYwUYw5o6n40DfQ59g+QxCiWb\nnIsFfa2EH/E4+HyFi8THq9jZ9fmF+copEV1JUxw48b4XS9DybmNTlTiIBTXV\ngxisRDsn9CkEhhf1e4uopF9EnCw+MEW3Qb0pFpzZk2wMpG4Rzn6a7EkKTVdf\nG20SqkFEYP9bprdbbfPDBd57lnBCrS6weuoWn5rCxQb4UGQCUTZ5OHyO9LEV\n//+/HAyjU1v5B369L6CXKtcRDHKABEsVh6R6QajlDLQ2X0ps/Et2Q+YrR10K\nAheL\r\n=6l6T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCC/kKS0jdkLuDeKDjcqcrudI38oJF3h0HJPst0Gqi6HQIgQ5+pUuyaCFSCIVo9vWRZP4jW8veOEUZpy5RbhRvlgAM="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.10_1532531616233_0.6889752701908114"},"_hasShrinkwrap":false},"0.3.11":{"name":"igem-wikibrick","version":"0.3.11","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"b9a8f125c77e033be3fa39dc9c575ae2b1cb6923","_id":"igem-wikibrick@0.3.11","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-5LAqgEn8X7H7ykXJrieuTh8K76ZBn2vTDkMDl3uHMM2L1OGdCJdbQHfq08XzTiFs+X6BJ3fGNj7ypKhV4hxihQ==","shasum":"9a9800c9a31d412fa38cb83bdd0a86b05bde1b14","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.11.tgz","fileCount":79,"unpackedSize":2461155,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWJapCRA9TVsSAnZWagAAZwYP/3Nt4sWYxBlrUndFtpxQ\nEU+3tQUWrgnsQIjiXDLzMl2pTmzw/L3bflIRddz9wcdtia9Hx08GCY4y8jwr\npunWC6knAqcGPY3YwU0POzxxnMQ5ATq4qWaR3E0zNMU+prOXISEgCu2agGKK\n3EYYq7sod93sNztsG5ae6qCYxhkUbwJ1AVfuM5J5ciBktp5uf1NbB3Rx6dxu\nmAUJxIJ8FGLXzq9BRyoEYpTOD5XJmBLY9DoSNKtQORTKCF6I3qh/bPoWo0ks\na0x2VDwMBJoFY2Ei+2auHEbbWTE7RBjG2BuOy5GgD1tWfpphX4rc2uTcKeVm\naj5gE9GAWhwYO4YDkTLb6Tl6mLLIraxSb5jFjDSFwNSrrxIeXEoZ1QuhSxds\nWhuBu6UQ0kUnMnplgmzNaT517QcCuVbeilwsavg0pz0T9XBybAVDY7u8wXF4\nRD4TOCLv/iQ9uoqqp5C0+RUVx7/DSJvv3t5rA3gIx2R0+4+Boll+UQCQ3fSW\nl+3Cb3od/WdAX+reDoTQagmNHmsTF13YM/VoFibWRCgINreAaqiytPnrmX9H\nXD+Ouq7g5nx9GYgd2kGk4PJculk3kVZ2HgvO8TGWn3TRTotBY6fu13CZuqCp\n9RpSLmsTjclouV08u5C4cwAPDjRJxQXAbctmk2kaiVU6towkFUPLA/FuQWXK\ntOxk\r\n=iqab\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeB5ONyzcepwPXVt5mXOM9XsTj7g5gibNZ6JYGcrRTlgIhAPhUSpk53UiDUSfiAOCLeYj2vCP/t6U0Msjz0wC8vfZB"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.11_1532532393715_0.7911638039179423"},"_hasShrinkwrap":false},"0.3.12":{"name":"igem-wikibrick","version":"0.3.12","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"e50b7346bb671237fcf21a0483a7141233176ed3","_id":"igem-wikibrick@0.3.12","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-Mwmix8PoKurTeoPNECWaRGpUgNXmwQNotrIAI315u2UD6eHMU0yVTjwrCdQIBeQBm88RjjSZv+tOXL0u0jDQSA==","shasum":"ebae7ff11d379ae9bab475e0a82bd19f69f98b1d","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.12.tgz","fileCount":79,"unpackedSize":2461434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWJhICRA9TVsSAnZWagAAbSYP/jvonBqR+AXWQjedlHhF\nmOrRCUiWkwDhJPkRHCaRxwrHfh/RZjFkGp6/978kcSo1tkIlJUGednVNZC61\n0u1itZV38grnkVECJms+vLw8ps+gFVMdNLGk7tj6S985leTFJ0gO4nOZOK3+\n4S0rdRw57dGTsgwN5gNR6SbEIgEwEaaNCH2MNwIxlT7SaThi8n6NxmjrKmQP\n92VXOMJv1frzLIDCu17trQanY/OcFrp4Ea1beLFt/2Ou/eO+GOB3TsakMK8u\nSKxUWC6Zr+AEcxAeNUav+UmH1bEnshunVhHqwB/UJZ3/3487jUIFs+cyMz8J\nA6t6K1bqA0m+7fpJzcIFk2lcaz0o8AzmVoCm4jgZOPleCEWKYJjdlP6Q2FXC\nBs62Sogvv9Tr0SWUqAumJmYOkv5Az8xyOeHgiv4E5LyMyuNKRn+LPLiicQVn\nZ4NS03XkB+TveT1M81ICbU/F5pqAW2jsn4JFV5kjB95f2+TkTJ3lkmaL7hM4\nR+ecmenynEZpnlIjBY0RoZXt17lvd5UjkprLxyzpXsX+mtbwoK9bBU4cS43q\nTkYQ2Gk6EayWfQoy3aq3dO+YxAaHzLWylImCXPG6VJYm8HugqoJFOQmi4yPv\nxRwrC2C6tVTYe6AEl0u011linkmxAKFklbU62dgM3een3oX6EwRQJ5v7ol8t\nVnNk\r\n=y4vu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGbpsFRJzLzW51CLMSZIh4IqZhXgdLcZ7Vce/sH+CihvAiAOvW9qhwKBpPG93dHDL3J9pnnNRiznXBkVmbsEOOOW2Q=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.12_1532532808420_0.43439619607228885"},"_hasShrinkwrap":false},"0.3.13":{"name":"igem-wikibrick","version":"0.3.13","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"7cbbc039cdaaea63e180d8d31871b07d2f9ab34b","_id":"igem-wikibrick@0.3.13","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-zFUS0UHqHfCvpVEk9I+JijEtQP51qONjxcZUh+5YbZCHHNyaaoaIMZIY7UZ0F69PZGqk3ZIFKswqUUUv47AAVQ==","shasum":"8e4c64bd78cc85aba71caf8130a400ce704795d2","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.13.tgz","fileCount":79,"unpackedSize":2461439,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWR5ACRA9TVsSAnZWagAAvlMP/i3ghFK9h/WWVwdTQQqu\nWFz7uzdyMTImoCEi7oyF/HN3mBBKDbSp9qj/0X/6T2DtR1WS9NiSsh5Pry2y\n4sKPPUt5pjnzsUzgFH1OoONitqmsIDH7uMS5z7A7cMjLzVVAyDiazQgWxZo2\n0H51dY9Fp1xNvD2pyHncZRW0EbKom/crvgcS35q3okU9TDXuHeLIY+vagg4T\nOSdLw8BRSM7Rh7LJNOISd2QoqiQxY+cZXOrO1c2Qnbq4rYU3gSU+a5AvMQfu\nZnJolrfCsnJpDlwi8DOhoTu2N5pR9/f2UEin3+sQrnlZcZ52p88dpOpvAeBP\nhjjhBDXuFSngqvjKukVcYgs/mZooL5sAMSVq8nb1k+Ggu1Ff+N8OpOVVF8jZ\nqy0wpCIVyJm8YdqBawu3notE6l4RL67j1xYxT1XKZnSM1lS33A14IO/9QATX\nbcKfkpdOjQNHb7CKn+YzeBwr2bJp3AAaZAKUk2xX+pgI64YPneZQQTmQShM5\nrC9bWFQ4CEf9/khKs4LpZTJ5k1WUlLYygzcCbQbLiZXQ7EGiJf5wBOmcj90g\nb5awWxVtcziRisPWm7xova8mCfnDO1q8bTrmZABlf+A6QEGN5MWEMzhgciSG\nG88R0geplr6SMv9XIY4MDfd06aSHGLJcEO/tnj9CnlgPtbzPnIhu1oNXvv5L\nMSL3\r\n=nVis\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFgXxAMCewbSedCuWgnbG/qWMIwtwPpKT8EnyRNDW6P3AiA/rAu6nN0yv0YNMt9gSqoEeb6QcbaUqUw6eU5JnHShzg=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.13_1532567104385_0.09930286470537064"},"_hasShrinkwrap":false},"0.3.14":{"name":"igem-wikibrick","version":"0.3.14","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"c30abef745f458f8b92a407ed6f190c37f54acb9","_id":"igem-wikibrick@0.3.14","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-L2UT+AfEDgecQSISVz2bz9zNyd7CqwArgpKs7N2P+ozb+MzicKg57rC3i3ncmkxTvCVCezMxZqKqUwt45ATCCQ==","shasum":"0ec743be0ebc1060ec06c4d2ca06da9b3d06f670","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.14.tgz","fileCount":79,"unpackedSize":2461461,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWSiICRA9TVsSAnZWagAA0HUP/iQ0xUnL+khp3dYbtzS+\nEKZqw9hZCdnk+l8RA9xaNw1DrMCODFhQs3wafMKEIr6Yj1YN8T1NB87VVT6A\n1MnYZ9Q/JuYPJub1rBu3dl1N2N2Fvngs1OaG9a2b6//GbF69VM6qQDxU0gUf\nOZlN2RZ8bAi+p63p4/Uyg1cOq8Fkf2+Qa97tf5GO/kEkRUEe+ok8MlcI2szL\nzwr7l0G1u0WEtZRvLpsSageYBfDK4jVkfzPHOyll3Ed5RPrbfiSgiu9GloYW\nOWnNBfLcxmAMZqPRCKuN5gYfXRsTL6wdxHssztfh+DVv8Lw4BIkkx/cLKvOE\n4v8ZfA7wRjAaAtxkYHiqm7uJEjCGhWJesNd9eC+41tz2m6rfVT+b39J+34w3\nX2IC9WnGG67INB3j/95LRFZGyDfCDsGSVbHljpTkY/JNzYGaRdoyixELI2ZL\n6vXDEgW92VNvVzEkdIdCjA39JmNgB+veBtrGcCryeyUK5Y4Hk9HUHNMEw2SP\nazfM2AYXh0C68gTPkBfLQgXrS6qRjBqJIm3kbCuL2ZZOYA0N7dZvFTWEl2x0\nul31q0RB1dr+vVgSfoU86zkQ7W0IwEtxVX2A875EqXBUFJW7r2hwfLYN14Jo\nvkmdwa4YX7K6D0rLLaIanI8TJIqKGFni6zTZMeTkb0sQiMrjtl/+dUlXXyC3\nwCBI\r\n=Fls2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRm8gFbMPn2W17BN4CzyNWiFnPX/U3leeKvfYnGC12YAIgZtKSsAAZAvJ1pv8FgIQU0TGzYbX3ZjTHbANZ9+yy9JA="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.14_1532569736534_0.040555493082808036"},"_hasShrinkwrap":false},"0.3.15":{"name":"igem-wikibrick","version":"0.3.15","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"e1fc57ad2b30a79a2e9d81621190c1842f614964","_id":"igem-wikibrick@0.3.15","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-yg3KAY4z43VWrF+9DqMfKAN8FbPRrhbNzZ6eFz+DhL2yz6uvkFdyqTbnm8PG6WVbMDvTuFEANvsKl0IQvZT1TQ==","shasum":"7388a1a625ebfe68114b37981aa6238654df5300","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.15.tgz","fileCount":79,"unpackedSize":2461343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWWegCRA9TVsSAnZWagAAAjcQAIuoHVHOIbWkiA7Jmp61\n5FwtmiyBxkfX3zEv59dpVkTDKqNBJwlm1eNLdY4hdAVluAzMBxFuMouDcD08\n+biLvocXbfGXDAbexhjAXlxnnAG6KuTlhDWjtH+Tr6+XDtxJt57O6jCHIfZJ\nupRr2is6Oooh1wpjnZxcaPEa0G7JXa/K1nqclbtMH5ff3iHHOUdBhsF5pvq4\nL3DfrFz9JGEPqwADeO7bDL87wHeeUJU9vs5EnsLX0tDWZalV5sVoK+jfZGB/\ncyuMKWouWbL9F3RPgAnYsVO78j0Ko+N8U1RGcwoZH/29XSVM8JeyMQfiT6MY\njjQ7pdrS3jcRSM9pMhB7itqVf3F3+mb/ZZ9VooGKmaGDVgZYb0EWJOVx+jYd\n7q2IYMQAE1XuGeMU5pV4WbWRKKjJMz/kYAg1FXw2c5B/mDR02EMrN9rZNA9M\nCycF5LcMczEpJaySnEn9MrDz8r57mqH6UMQJFdlBV8tkyamcKQMjnJHd3jlU\nFJvhpqVzbzH8cwXBYBxNGKtNxtwnY5d1P80dsAHFwgG+V8zHdo9+lMo71cAF\nTuxVq4/rLISekzRIjhLP3VzhOnAvzKC80x4PU0oXjOgDWpDaKL3ABIouKdIS\nIvVlY51qQu2dva5LwJWO4Fqc3rKVd04irtm1cT7IuFUy9E7vJ2D1Ffoh19kb\nKFiu\r\n=Rcwh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwlGocRCafAsQ9E0HTZszNIU1P32eivesnbdAW5K80/QIgG9m9qiniCod7U2CvgirDqTVJR7+6vyfxc00b4m/okHg="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.15_1532585887742_0.2756684075242035"},"_hasShrinkwrap":false},"0.3.17":{"name":"igem-wikibrick","version":"0.3.17","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"b63f917a0cc71ed80b38597cd7046bd2e1d83ac1","_id":"igem-wikibrick@0.3.17","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-xE19OxUGN5dX8Shw3xKGULQzr8RvCKwMyGS2O6MJ8s9Lw4gKrif2mpB+N+NNO/Gd4I0/fModYgSuhTg9vefruQ==","shasum":"68ba1c325771502503b8f60c0f831ce01ff2bb57","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.17.tgz","fileCount":79,"unpackedSize":2461236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWeCKCRA9TVsSAnZWagAAdVIQAJcSd6nIPPdYr3WcvSOA\nraZoxW08E6pq1SU39Vyq1rIqu0fiF0fFRmsNeJ5jtF5UMbZcu8P6fTrDJuAa\nYA4tyEKoGGOu0u8duHrFMsBFDAG2JFZpswOknNFCGvKmALK9pHlJC1I4KzbW\nw5qGo9xyvj/vysqwykV9NJMouRCq+UN8Fo+yEpXynfhUIePlCKM3ubGUYxnv\nzBWk4ex0dQujgDtq+CidCRuca9Dy7w5m2WhXn5VhN2LEUVRR3tjSYR/uwALn\n2kqQUJfq1mUacDr1WLqXPzXNcjT3aTJGXz8ajxl5g+ZDBHb38mKys6kkalK3\nZ18GHg2lQN6OpkNsvvK008T6TbbwEs3SDF9TXo/oDzEjjD1PMNQWWvjyLUUs\nYVa7Iwwep8i0VCHJoLULtWREGmrt/Z670HCTLFzhhj6b1Q5QmOXDwjhohvEK\nruJ323FQR8j5szITsPjBJ3IQjB63eN6BgEtM11CmAznwPZgsPo+XzZHfgm7z\nnCugUY+uLTppAjOKNqauxpQWNU9k60Gb8wFtkNXlJiE+ld4wivqZgFkycnsS\nMZKa5SW+/Se8jEZakaVxSGsrRpFryLCN2746EbwPtfXEJtx3nmUTmOx0JgUV\nPoJaKCEMYkj9OksmVnp+5EhlsAmHi9f1bin3EUONTPZkKn3TxlS1qBJgI15d\n5ucM\r\n=Z+5D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxorP94yAfOzkb2j0qWbnHeLCiKhxv/EfB8+QWLQYwqAIgV7Uqo+ZJWsDMkp0ytcaqWn/K/eyV/MJMLPF8eyaE4Lo="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.17_1532616840463_0.6861997997061906"},"_hasShrinkwrap":false},"0.3.18":{"name":"igem-wikibrick","version":"0.3.18","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"f22936f3b8312f7366bcf9986496f6a336d5e606","_id":"igem-wikibrick@0.3.18","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-cKY6v7uS7sPjSAuYSKnqoO8ifYCtkZhNPM3tCGopY85UBrcV1zmCmbu/jrR+HdLXvQVspcZGf09SL9tFMwQWAQ==","shasum":"420284bd6f0085f0620020cfd3f477fc573312c6","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.18.tgz","fileCount":79,"unpackedSize":2461232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWe12CRA9TVsSAnZWagAA/A8P/2OZGcmSyAm/4HQK06AR\nWN1nNakSFFALuYIuwkXrFMNercIuYzxhS3hAyt/SYBXLHVZKOUewkS8tpgux\nArlhUvJk6blB6EMGbfxKnYbf+FdUr98Keo3CAby1HqmnLYK90697QmeBjAB+\nLntII+ji5k42cDP/Kcxfx7NEHTmtAGbipNYwkFr2U5m5oztIYGzgSgedbnnD\nJglJqgtHZm8tSlPg/zObeBjgc1e0DIkB1Nq89mw/kCntiUrf+CmTvSG/QUfI\nqoMzz0Zzjbh16k5ehS8ow0tIg6PV5N1KEhEFdv+J/tVuDFne9zbc7j67CoYV\n9eh22sxUaKS8qifcqsZNfRWBdeFpnWv/KQPbX4rtv8CqDtF995pMTIaJFfb8\nxi2oGcOOMPWa7dtBN4ZlRdTfBdly4SidO0LnuEEkUfsOdaizK+jhKmti/tNN\nQeibkeK0veeM24iZrhBBSBoD0yg+wjR6VV7260GT0JzwxzOi9TBvQWBkz0O1\n3ViDcUG6pnVDAS7qJxUNbyfAL0Uuoj9lHTDEAnAQQtCxe5l1Uj76eymbtjx0\nyKZEfaKw1L6IlIZdUF4Zk/3NepUDb9KUPbQiVp8PvT2DCTnNpLc1k1MEpdwd\n/VxH5eJEKbdPAA5a5vpF+cDSWykS/G7rZg/GnQhfBXO05wYkpptSRi6Tgb8V\n1d7t\r\n=TIP6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTJXMdddn48W5gnQ+zjrMHAwB/rhTNkcco9g0HOOs/mwIhAPBSdt1O1jPI3uSZQygyImmsyX97KqTfE2v6nQo7rxru"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.18_1532620150179_0.8320428440407961"},"_hasShrinkwrap":false},"0.3.19":{"name":"igem-wikibrick","version":"0.3.19","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"e6afe630b6d8b76ebc69e408cb438d1d9981fb60","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n**Warning: igem-wikibrick is still under fairly active development. The package is working as intended _for us,_ but has not been thoroughly tested for bugs and corner cases. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork, modify and submit a pull request. If you are on an iGEM team, this can count towards your collaboration requirements. Contact us for more information.**\r\n\r\n## 1 Table of Contents\r\n\r\n1. **Table of Contents**\r\n2. **Installation**\r\n3. **Tutorial**\r\n4. **Description**\r\n5. **Todo**\r\n6. **Attributions, Dependencies and Works Cited**\r\n\r\n## 2 Installation\r\n\r\nIn the future: Run an install script. For now:\r\n\r\nIf creating a new project: `npm init`  \r\n`npm install -g gulp@next bower`  \r\n`npm install -D igem-wikibrick gulp@next bower string-format`  \r\n`npm update` - May or may not be necessary due to [a bug with npm's package management](https://github.com/npm/npm/issues/1341).  \r\n`cp node_modules/igem-wikibrick/config.js ./`  \r\n`cp node_modules/igem-wikibrick/gulpfile.js ./`  \r\nIf you would like a sample project:  \r\n`mkdir app`  \r\n`cp -r node_modules/igem-wikbrick/app ./app`\r\n\r\n## 2 Tutorial\r\n\r\nSee [igem-wikibrick tutorials, examples and templates](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial). The tutorial contained therein is aimed at individuals who may have never worked with webdevelopment before, and includes more detailed installation instructions.\r\n\r\n## 3 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 4 Description\r\n\r\n`igem-wikibrick` is an open-source Node.js package, build system and/or template for iGEM teams that automates the creation of iGEM wiki pages. It is a significant improvement over the Mediawiki in-browser page editors and enables teams to rapidly iterate on their wiki design and style and incorporate automated build tasks into their workflow, allowing the entire team to contribute to the wiki, using the full benefits of version control and automated builds. Using the tool requires a cursory understanding of web development; however, the tool is designed to easily incorporate workflows from other parts of the team, enabling team members of a non-CS background to easily contribute.\r\n\r\nThe tool was built because our team wanted to design an award-winning _website,_ not just a collection of Mediawiki pages, as we wanted access to the same tools any modern web developer would use. This would allow us to iterate faster and use styling packages and tools like [SASS](https://sass-lang.com/), [Bouboun](https://www.bourbon.io/) and [Neat](https://neat.bourbon.io/), and Javascript libraries like [ImpactJS](http://impactjs.com/). We wanted to write our code on our own computers with our own text editors, and we didn't want to waste time hand-uploading every single image and copy-pasting every page that would end up on our wiki. Every member of our wiki team wears at least 3 hats, so we needed to work on the wiki efficiently so we would have time for other parts of the project.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\nSome features:\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 Todo\r\n\r\n### Known Issues\r\n\r\n- `npm install` will not correctly install this package due to problems with npm's dependency resolution. Workaround is to run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - Fork igemwiki-api and modify line ~90 of upload.js to correctly catch timeout errors instead of erroring out before... Continuing execution on user input.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big error and broken URL substitutions. Tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing.\r\n\r\n### 5.1 High Priority\r\n\r\n- Fix _igemwiki-override.scss_ so that it actually corrects for the wiki styles and the published site reflects the local build site 1:1\r\n- Update tutorials to reflect Build-Tool's current state\r\n\r\n### 5.2 Medium Priority\r\n\r\n- Make the actual path/name of `imagemap.json` something defined in `config.js`, instead of hardcoded.\r\n- Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- Added error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n- Fix MathJax with [#10 - Misc from this article](https://2016.igem.org/Team:Peshawar/Wiki)\r\n- Modify `gulp/unit/html.js` so that it also accepts markdown files.\r\n  - The code's there, just commented out; need to keep markdown processor from mangling `<!DOCTYPE>` tag.\r\n  - Should probably compile markdown files exclusively and load them in using templates.\r\n  - Also add Google Drive support?\r\n- Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n\r\n### 5.3 Low Priority\r\n\r\n- Wrap the whole tool in a custom commandline tool?\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n- Replace bower with npm or yarn for managing live dependencies.\r\n\r\n### 5.4 Questionable Value\r\n\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 6 Dependencies\r\n\r\n### 6.1 Build Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/2018-wiki/blob/master/package.json)\r\n\r\n### 6.2 Live Dependencies\r\n\r\nSee [bower.json](https://github.com/Virginia-iGEM/2018-wiki/blob/master/bower.json)\r\n\r\n## 7 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.3.19","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-FqNFxh2Upt2r0mWmv5H23vZylykrHIkDqWZfBV4WPY8hc/NlfMWIf7knHpkTTa7yQFY+bUCBhwzavoerTeazZQ==","shasum":"0bcfe993764209b50cafc3f5a0636710cb6b558f","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.19.tgz","fileCount":79,"unpackedSize":2461128,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWmbZCRA9TVsSAnZWagAAfXkP/0OYo1GoGm2lH6GUeBI8\ngj1VVFxpbig6a5mnu6rx9y93juw52NWfx8q5dnOf6PtevzXRcA+qvecx8ahq\niBPiWBWOfoXWCCvtxIEaoIhpqGl5pxw31lkt6bHnPav7/rACH+bdmMJmZgAQ\nRVvk99tl0Zf1+gDc7vcZEgIbLhmBpfRvbfDGN4+1HjUcQoaC9SZYOT3N24gW\n5hH9gkmhiwuNuQ4SZ6fBhophpA4IE6Z5fkfhxbvJb0A9pgoMOwIvFHlditVu\nTAz4aDuIs5z61hcL4qCoRl2QneyH+nnBY+4FRNRz9pqrWEt9Hrr3fZmAeCoI\nTIYhhXDMMIXDTu+OFU4qMCawmTBaMMjk/O5+1LPspWDwEyIteVozd04e7e2U\nTcvfa65qsuxzN9jnH5SxaFZu9N2hGrNOW8V+OO/p0pHFcJF/wd3gjIxf7dUq\ngYnqaDaLMbu3dWJoUxVGuMVTUvic5vcnu6RKWQGteT26qycE+si/cQY+Jpt4\nJo5Pmx14flYC8iigRcmBnWQnQOnFbXfseibZ+v+6ebNSkhQyiyajX4pt0Rkr\nutG+4oMnVUcKSW6bezSQyylvdwO5GAkaBoQ0+0aNnevy4tPDVGJ4QKYWseWc\nyvaWz7QGqmr1qUUCZbybHiQn4c8ZMPrctsMcIU0+fxtoJv+facSp3YYDJp2U\nkd81\r\n=M5NT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4wocG+kljaOFz8AH30GdvsJ5asnAWWfvT1CXmEo3e9QIgdInNc+OamsMuXxePpspTgfCdLP77qzkLxH2x3Pcb394="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.19_1532651225632_0.039594996193634824"},"_hasShrinkwrap":false},"0.3.20":{"name":"igem-wikibrick","version":"0.3.20","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"65dcc4bd4cd879bf20f2c280f9a5b967815a8481","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n**Warning: igem-wikibrick is still under fairly active development. The package is working as intended _for us,_ but has not been thoroughly tested for bugs and corner cases. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork, modify and submit a pull request. If you are on an iGEM team, this can count towards your collaboration requirements. Contact us for more information.**\r\n\r\n## 1 Table of Contents\r\n\r\n1. **Table of Contents**\r\n2. **Installation**\r\n3. **Tutorial**\r\n4. **Description**\r\n5. **Todo**\r\n6. **Attributions, Dependencies and Works Cited**\r\n\r\n## 2 Installation\r\n\r\nIn the future: Run an install script. For now:\r\n\r\nIf creating a new project: `npm init`  \r\n`npm install -g gulp@next bower`  \r\n`npm install -D igem-wikibrick gulp@next bower string-format`  \r\n`npm update` - May or may not be necessary due to [a bug with npm's package management](https://github.com/npm/npm/issues/1341).  \r\n`cp node_modules/igem-wikibrick/config.js ./`  \r\n`cp node_modules/igem-wikibrick/gulpfile.js ./`  \r\nIf you would like a sample project:  \r\n`mkdir app`  \r\n`cp -r node_modules/igem-wikbrick/app ./app`\r\n\r\n## 2 Tutorial\r\n\r\nSee [igem-wikibrick tutorials, examples and templates](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial). The tutorial contained therein is aimed at individuals who may have never worked with webdevelopment before, and includes more detailed installation instructions.\r\n\r\n## 3 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 4 Description\r\n\r\n`igem-wikibrick` is an open-source Node.js package, build system and/or template for iGEM teams that automates the creation of iGEM wiki pages. It is a significant improvement over the Mediawiki in-browser page editors and enables teams to rapidly iterate on their wiki design and style and incorporate automated build tasks into their workflow, allowing the entire team to contribute to the wiki, using the full benefits of version control and automated builds. Using the tool requires a cursory understanding of web development; however, the tool is designed to easily incorporate workflows from other parts of the team, enabling team members of a non-CS background to easily contribute.\r\n\r\nThe tool was built because our team wanted to design an award-winning _website,_ not just a collection of Mediawiki pages, as we wanted access to the same tools any modern web developer would use. This would allow us to iterate faster and use styling packages and tools like [SASS](https://sass-lang.com/), [Bouboun](https://www.bourbon.io/) and [Neat](https://neat.bourbon.io/), and Javascript libraries like [ImpactJS](http://impactjs.com/). We wanted to write our code on our own computers with our own text editors, and we didn't want to waste time hand-uploading every single image and copy-pasting every page that would end up on our wiki. Every member of our wiki team wears at least 3 hats, so we needed to work on the wiki efficiently so we would have time for other parts of the project.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\nSome features:\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 Todo\r\n\r\n### Known Issues\r\n\r\n- `npm install` will not correctly install this package due to problems with npm's dependency resolution. Workaround is to run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - Fork igemwiki-api and modify line ~90 of upload.js to correctly catch timeout errors instead of erroring out before... Continuing execution on user input.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big error and broken URL substitutions. Tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing.\r\n\r\n### 5.1 High Priority\r\n\r\n- Fix _igemwiki-override.scss_ so that it actually corrects for the wiki styles and the published site reflects the local build site 1:1\r\n- Update tutorials to reflect Build-Tool's current state\r\n\r\n### 5.2 Medium Priority\r\n\r\n- Make the actual path/name of `imagemap.json` something defined in `config.js`, instead of hardcoded.\r\n- Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- Added error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n- Fix MathJax with [#10 - Misc from this article](https://2016.igem.org/Team:Peshawar/Wiki)\r\n- Modify `gulp/unit/html.js` so that it also accepts markdown files.\r\n  - The code's there, just commented out; need to keep markdown processor from mangling `<!DOCTYPE>` tag.\r\n  - Should probably compile markdown files exclusively and load them in using templates.\r\n  - Also add Google Drive support?\r\n- Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n\r\n### 5.3 Low Priority\r\n\r\n- Wrap the whole tool in a custom commandline tool?\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n- Replace bower with npm or yarn for managing live dependencies.\r\n\r\n### 5.4 Questionable Value\r\n\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 6 Dependencies\r\n\r\n### 6.1 Build Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/2018-wiki/blob/master/package.json)\r\n\r\n### 6.2 Live Dependencies\r\n\r\nSee [bower.json](https://github.com/Virginia-iGEM/2018-wiki/blob/master/bower.json)\r\n\r\n## 7 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.3.20","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-Nd7DyY/1ZrO9Y9hdJcNIe1MOSLfjWbT0LXPVRDcE3O0qIMucyd1QDYHn/5+syGUog2e5Kv15AqiRMFhgJiRLqA==","shasum":"d1e35d30cde33865fda779aac396a34510bd4e9c","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.20.tgz","fileCount":79,"unpackedSize":2461128,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbW0grCRA9TVsSAnZWagAAmYsP/A/BanYtoF3rexUcwwXf\nVP+UNqyxy3HxOkO/xVB4CU5oB3oYoLk1Y/1b9gLuP5wUXjoJJ6MRF6/B7qBc\nlS0wt5M2U+nb/dHlSjFcWwKyOzR05xzuQJiW/rjUb6AzlvxNyxsAzd5LnTdU\nscPHP0ML/F3DJeD7emhNvr5zwPbCV8Yc/v8kyTygn9JmIO1saUsVdSqPezB7\nmBtGLh2oPB06F9tIhrRfsunIYaL0pI6LvAGqF+A+9v99pwsupBaEO03dbn8f\nXp/8Clk9w57eGL4BTqbKDOgQFvCWo60YKw3jbsXx2StZ4NzwlzRQsgjgDUVe\nHHeWyLF2f/Goas1dsPZ7FV+JG10/9YXWvUeXYoLLcgAVPhZ3ImbNq2LJKk6p\nfOvu3ALkTaL6ZL0VY9f/0vrfT6Div0WH75imcpNnO9L+h8S4soxiiZS+jTZ/\nJpUFiuZwDdUeVmVW0bIvVMuJLCGVnU+hLYHLjnGf6C5Mg4h6sVr4YufEHky+\nUej7Ln7gnIDb8KTS6ueydnw4lFJE/dJy+0nvGF+cyjXXplukaBzznJl2jvsG\nRor8Zu6T7tk9Q68ThKUgeAT8HEZtaNC5/JFh5CxyqvsXB77AdszVkGthQ4MB\nrIhXJmOj3AcQjKf9i44R22k9puq5nbhBlGGUJuRiQVKyaxfhwv/ptbYnysgm\nq5Yg\r\n=7EcK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICqvdf1wAk5xfOYsuuL7XzZ37GPLFpOJXsqGXPLTwOAJAiEAxOf+Idq11xJ1Pgu3l/YJ6kS9t3h+AxDw1t0+hf/wiHI="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.20_1532708907438_0.16439562959768295"},"_hasShrinkwrap":false},"0.3.21":{"name":"igem-wikibrick","version":"0.3.21","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"url-join":"^4.0.0"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"7963afc4790dcb6314a7b0293733f4c9373009cc","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n**Warning: igem-wikibrick is still under fairly active development. The package is working as intended _for us,_ but has not been thoroughly tested for bugs and corner cases. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork, modify and submit a pull request. If you are on an iGEM team, this can count towards your collaboration requirements. Contact us for more information.**\r\n\r\n## 1 Table of Contents\r\n\r\n1. **Table of Contents**\r\n2. **Installation**\r\n3. **Tutorial**\r\n4. **Description**\r\n5. **Todo**\r\n6. **Attributions, Dependencies and Works Cited**\r\n\r\n## 2 Installation\r\n\r\nIn the future: Run an install script. For now:\r\n\r\nIf creating a new project: `npm init`  \r\n`npm install -g gulp@next bower`  \r\n`npm install -D igem-wikibrick gulp@next bower string-format`  \r\n`npm update` - May or may not be necessary due to [a bug with npm's package management](https://github.com/npm/npm/issues/1341).  \r\n`cp node_modules/igem-wikibrick/config.js ./`  \r\n`cp node_modules/igem-wikibrick/gulpfile.js ./`  \r\nIf you would like a sample project:  \r\n`mkdir app`  \r\n`cp -r node_modules/igem-wikbrick/app ./app`\r\n\r\n## 2 Tutorial\r\n\r\nSee [igem-wikibrick tutorials, examples and templates](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial). The tutorial contained therein is aimed at individuals who may have never worked with webdevelopment before, and includes more detailed installation instructions.\r\n\r\n## 3 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 4 Description\r\n\r\n`igem-wikibrick` is an open-source Node.js package, build system and/or template for iGEM teams that automates the creation of iGEM wiki pages. It is a significant improvement over the Mediawiki in-browser page editors and enables teams to rapidly iterate on their wiki design and style and incorporate automated build tasks into their workflow, allowing the entire team to contribute to the wiki, using the full benefits of version control and automated builds. Using the tool requires a cursory understanding of web development; however, the tool is designed to easily incorporate workflows from other parts of the team, enabling team members of a non-CS background to easily contribute.\r\n\r\nThe tool was built because our team wanted to design an award-winning _website,_ not just a collection of Mediawiki pages, as we wanted access to the same tools any modern web developer would use. This would allow us to iterate faster and use styling packages and tools like [SASS](https://sass-lang.com/), [Bouboun](https://www.bourbon.io/) and [Neat](https://neat.bourbon.io/), and Javascript libraries like [ImpactJS](http://impactjs.com/). We wanted to write our code on our own computers with our own text editors, and we didn't want to waste time hand-uploading every single image and copy-pasting every page that would end up on our wiki. Every member of our wiki team wears at least 3 hats, so we needed to work on the wiki efficiently so we would have time for other parts of the project.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\nSome features:\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 Todo\r\n\r\n### Known Issues\r\n\r\n- `npm install` will not correctly install this package due to problems with npm's dependency resolution. Workaround is to run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - Fork igemwiki-api and modify line ~90 of upload.js to correctly catch timeout errors instead of erroring out before... Continuing execution on user input.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big error and broken URL substitutions. Tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing.\r\n\r\n### 5.1 High Priority\r\n\r\n- Fix _igemwiki-override.scss_ so that it actually corrects for the wiki styles and the published site reflects the local build site 1:1\r\n- Update tutorials to reflect Build-Tool's current state\r\n\r\n### 5.2 Medium Priority\r\n\r\n- Make the actual path/name of `imagemap.json` something defined in `config.js`, instead of hardcoded.\r\n- Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- Added error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n- Fix MathJax with [#10 - Misc from this article](https://2016.igem.org/Team:Peshawar/Wiki)\r\n- Modify `gulp/unit/html.js` so that it also accepts markdown files.\r\n  - The code's there, just commented out; need to keep markdown processor from mangling `<!DOCTYPE>` tag.\r\n  - Should probably compile markdown files exclusively and load them in using templates.\r\n  - Also add Google Drive support?\r\n- Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n\r\n### 5.3 Low Priority\r\n\r\n- Wrap the whole tool in a custom commandline tool?\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n- Replace bower with npm or yarn for managing live dependencies.\r\n\r\n### 5.4 Questionable Value\r\n\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 6 Dependencies\r\n\r\n### 6.1 Build Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/2018-wiki/blob/master/package.json)\r\n\r\n### 6.2 Live Dependencies\r\n\r\nSee [bower.json](https://github.com/Virginia-iGEM/2018-wiki/blob/master/bower.json)\r\n\r\n## 7 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.3.21","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-BE9XcM35jhNwc7sUv3eCP/HwDDCKTW438TggFcU+qhTkHI89QSnPhST5eL0H/AlEtd7NWZoCcnNlI6MDEJqMpg==","shasum":"91a75619c639a9d70a1fe0d013ffb99fec889f41","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.21.tgz","fileCount":79,"unpackedSize":2461163,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbW04bCRA9TVsSAnZWagAAPCQP/0r6uCpGl/3zs6iasXgJ\nqx4HfAM79aUjIFUydn2cHqBHaiJ8uQN5Poe3mdE+AJm4j+ohD1pGsxY0GtjH\n641s3Xmo3hOy39QNZxp713ElveKk/sCTL83wCZorz7SKApGaB+mIoL60BWqR\nXiu6MelyX5Nudr49FKS3X/6ZCPWTuEgw+05fjTcDqaKEbRCdPwVfTxvIUgf7\nSPvptitDE7SuaqWHdqMcP7WXxlIekGjR5KisuA9aRAuBcVtPEZ/en/ZMdhKf\nTlMxje3Ip23HNMmJ6/vKyRczbl2TCtX8vSdr4YEZ1MofZ/THOh31TItfIiJ1\n3TNXm6P/Gu5Qh9zVKkachLLDMWLQqucCBzJXt0uXQ9sICFv2jj74Q0JQDib+\nPGDGunW1umBWChk1n8BOVHDBryIPPw9bx6DjPCC2DRet27G1kDEhdmGMZIFE\nirxxb8Q2sa9AxIk878Oon3BCI0ArXFu1yW1+6mt2/xZbu80/DrWyyMVzOO5i\nVDBF1LLB9fj3mii1F5mTJYgDTIF5Xbe3kDM6Pe/ic4XoEC30Cqg6zKMFS103\n3KMhoGnv+Ku9QPM0VEJc0ah8T1vz1Hs36TcVc+oDvtj1YViHgc6ozkGmMubg\nXTVqO0/71dxhUzDcJ3OcNWgqoKi9wZO5R4ZMWzWeyaFE4xxM5F58WLRfk0eo\n3ngU\r\n=zLIq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFE37uwWeGGheDrPJ2JLk1y+P8PsNuxX7+nZ/Cz1ZoWWAiEA00zH2Eveem+XEyPTJWOpU6GIUYrq5INDB53Suo9sY3w="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.21_1532710427711_0.957073212943574"},"_hasShrinkwrap":false},"0.3.22":{"name":"igem-wikibrick","version":"0.3.22","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1","url-join":"^4.0.0"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"292f464d4094a73dda1bd14eb3420eee03eab865","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n**Warning: igem-wikibrick is still under fairly active development. The package is working as intended _for us,_ but has not been thoroughly tested for bugs and corner cases. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork, modify and submit a pull request. If you are on an iGEM team, this can count towards your collaboration requirements. Contact us for more information.**\r\n\r\n## 1 Table of Contents\r\n\r\n1. **Table of Contents**\r\n2. **Installation**\r\n3. **Tutorial**\r\n4. **Description**\r\n5. **Todo**\r\n6. **Attributions, Dependencies and Works Cited**\r\n\r\n## 2 Installation\r\n\r\nIn the future: Run an install script. For now:\r\n\r\nIf creating a new project: `npm init`  \r\n`npm install -g gulp@next bower`  \r\n`npm install -D igem-wikibrick gulp@next bower string-format`  \r\n`npm update` - May or may not be necessary due to [a bug with npm's package management](https://github.com/npm/npm/issues/1341).  \r\n`cp node_modules/igem-wikibrick/config.js ./`  \r\n`cp node_modules/igem-wikibrick/gulpfile.js ./`  \r\nIf you would like a sample project:  \r\n`mkdir app`  \r\n`cp -r node_modules/igem-wikbrick/app ./app`\r\n\r\n## 2 Tutorial\r\n\r\nSee [igem-wikibrick tutorials, examples and templates](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial). The tutorial contained therein is aimed at individuals who may have never worked with webdevelopment before, and includes more detailed installation instructions.\r\n\r\n## 3 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 4 Description\r\n\r\n`igem-wikibrick` is an open-source Node.js package, build system and/or template for iGEM teams that automates the creation of iGEM wiki pages. It is a significant improvement over the Mediawiki in-browser page editors and enables teams to rapidly iterate on their wiki design and style and incorporate automated build tasks into their workflow, allowing the entire team to contribute to the wiki, using the full benefits of version control and automated builds. Using the tool requires a cursory understanding of web development; however, the tool is designed to easily incorporate workflows from other parts of the team, enabling team members of a non-CS background to easily contribute.\r\n\r\nThe tool was built because our team wanted to design an award-winning _website,_ not just a collection of Mediawiki pages, as we wanted access to the same tools any modern web developer would use. This would allow us to iterate faster and use styling packages and tools like [SASS](https://sass-lang.com/), [Bouboun](https://www.bourbon.io/) and [Neat](https://neat.bourbon.io/), and Javascript libraries like [ImpactJS](http://impactjs.com/). We wanted to write our code on our own computers with our own text editors, and we didn't want to waste time hand-uploading every single image and copy-pasting every page that would end up on our wiki. Every member of our wiki team wears at least 3 hats, so we needed to work on the wiki efficiently so we would have time for other parts of the project.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\nSome features:\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 Todo\r\n\r\n### Known Issues\r\n\r\n- `npm install` will not correctly install this package due to problems with npm's dependency resolution. Workaround is to run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - Fork igemwiki-api and modify line ~90 of upload.js to correctly catch timeout errors instead of erroring out before... Continuing execution on user input.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big error and broken URL substitutions. Tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing.\r\n\r\n### 5.1 High Priority\r\n\r\n- Fix _igemwiki-override.scss_ so that it actually corrects for the wiki styles and the published site reflects the local build site 1:1\r\n- Update tutorials to reflect Build-Tool's current state\r\n\r\n### 5.2 Medium Priority\r\n\r\n- Make the actual path/name of `imagemap.json` something defined in `config.js`, instead of hardcoded.\r\n- Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- Added error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n- Fix MathJax with [#10 - Misc from this article](https://2016.igem.org/Team:Peshawar/Wiki)\r\n- Modify `gulp/unit/html.js` so that it also accepts markdown files.\r\n  - The code's there, just commented out; need to keep markdown processor from mangling `<!DOCTYPE>` tag.\r\n  - Should probably compile markdown files exclusively and load them in using templates.\r\n  - Also add Google Drive support?\r\n- Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n\r\n### 5.3 Low Priority\r\n\r\n- Wrap the whole tool in a custom commandline tool?\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n- Replace bower with npm or yarn for managing live dependencies.\r\n\r\n### 5.4 Questionable Value\r\n\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 6 Dependencies\r\n\r\n### 6.1 Build Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/2018-wiki/blob/master/package.json)\r\n\r\n### 6.2 Live Dependencies\r\n\r\nSee [bower.json](https://github.com/Virginia-iGEM/2018-wiki/blob/master/bower.json)\r\n\r\n## 7 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.3.22","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-tpob9LtEaYakFNr2CX3DyhRf9T4X2Jsex6c1fUpXLqlyyRwWNU0WYMhZf+Ue7ruzTR/7JwjnHR+1bZlidlh/4w==","shasum":"8f06ddef6ff70dc8b1e767289b2d1d9f000096fb","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.3.22.tgz","fileCount":79,"unpackedSize":2461164,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbW09WCRA9TVsSAnZWagAAh9EQAJqCRP3MHEBK/KefqjsS\nOJN9K/EXNt/jWwuAAShra9i9f1D35XjPCfiM9IKbDrDajMtwcfBgCjR5MrrU\nKHJJiv7qWxSGMMKJyzjFvDyLvtvJafNidQuDw6Lncgg47CXtqWRXqeJanygx\nLYGY6VqA5ZMQ2Qa89L/TkBtlGwxBu4GP3dzvblJAw6Cxtmp5HaVoiCQ2qqmB\n/gXbrXccxuxeayGzyzs6co0y57jSf/7P3kt/gLJ/zGrIpnzbn0T11GhfDfMb\nDMejoW7C1glQmLm0UmU7DZioNCAc8tZ5PzXODCx2fEX3gcQwhPakQUoXAR/w\nxFKxyfHg5rZdmsV48l3V+ZiMj7EkQ4ouYPjsc2u9pIwrkhAFSPmO/ciFDOto\nfFR/BO+krBax66NEKp7S1DBWlUR/8IWHYDpbBpw64g/tp+uhXwEZKjol/Y0x\nHIFGEK/dIL9iDFeTUjJgTVe7+KYKSJ1tFseCc7l8ql5+tUTnyTG2RZWqxUSc\nyyQ1GuEFBW3ZcSPupkVjPmAVAP7wp8lj/cNyYxRTOyM/uO2iPeeoYqa9Mpjw\nIafwsK5ezDKf1EFCBJUKTzZ06g9sYWmhSmyfrz1qRk1ZVGS7u7be0688iSgN\nptfDj5HaP5OaLeEnSmuEHLf7rec1uOgq6y8xN8DBu3AKX2ldmXb8f2zEkegC\naPwk\r\n=lFNI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDVOMPPvTIccM2Yvv2wUrmLnlsmeaY7vBYaVC+dr/RS4AiEA3cU+mXGRwEr1qu3pG2bVDl6gEXWZIE0yldvgxlOkaMU="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.3.22_1532710742235_0.6054876496721189"},"_hasShrinkwrap":false},"0.4.0":{"name":"igem-wikibrick","version":"0.4.0","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1","url-join":"^4.0.0"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"f9c97be80ed21d45a307a980993d7de9f6129d19","_id":"igem-wikibrick@0.4.0","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-1F+4dbcImkeCyGleY3OkhExS4fFH89PINaWzrUFsKxK4kXCUpgV5sPch6nwBi0lJWjW9iRxrK0OND5oZYq0bLQ==","shasum":"ab91a4e9fb69debd3779e73a4a5dc4bd4347659a","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.0.tgz","fileCount":79,"unpackedSize":2461537,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbW1KrCRA9TVsSAnZWagAAVdkP/30Trq/xSlL+8+NIQPLN\n6FY/H8D4+kACnxDy0+xk1E21CCNaz3p1z+KeHUGxeArFjwCyQwUvj35jB24b\nP/PGQXtXwb+UE2IDmtZHeuyIKgWn7FXIL/xKnrptxuVH4BcFsxA/zRCEI8bT\nojAHx+PWJ20tgPPg3X2Q7ibhpuj/2bKBckOipO4uqg9XAZjQpYPtNXUkuc8h\nPG/OUv52Hvw2nO/R6nmJxWz+F3hD7foaTV5GbVvIobYuHAd57vesgLL+7rUC\nEsrLVHDc9TlB4Cgdn0I8r0ItcgJ6iyW6nE5ExySerWyyqqIbqZ3e88YWWCtS\nzhVXWl4mtdKoAbngvew3M5Jd26OQaaYQHKra/DGF+LfWGIC/PDh+PAzxvkQg\n1rQh436bvIEKYJZdoMjUlJGNTk/rfhdEbW+RS3GpBErdi6xkddsTXZvJSLyA\ngU1rkbSMiU9sNA3CQqBRu8Nhg/+mWbSQCx/jZ1qS0zovHVyqIxY5a1ibZaS/\n1gnoek1pKJZWB9+u7MBXdq63OP7QYLCWTSzP5rZ4WA/72VsfC7EuBFJ1j1Ce\njGR1rgvv/fbnnZL6qeFCFWiUvZHud6Pu1Afy+khXDKS6uLw2LgBa818PGiOG\n6A2ii1jrjzVm3tLcBoK+6Y76ci2WNGqArmya0xhCT0ZAATwm5NZiBjJJsaxF\njZ8d\r\n=VvOC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0PtOfParrBV0D8cPp0F7ZOWFW0zU4uxzOHcxvBjt2nQIhAKgQHi00hVtK98/hPfHupPwCEf/Tq1UK+Pu3+feXhHZ7"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.0_1532711595564_0.7611640589702338"},"_hasShrinkwrap":false},"0.4.1":{"name":"igem-wikibrick","version":"0.4.1","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1","url-join":"^4.0.0"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"e6f23a1e75e8a50c11db8a7395506ab30a430b6a","_id":"igem-wikibrick@0.4.1","_npmVersion":"6.2.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-FtyzZGmpEWxAM7G+DZeUDUJ9IJ0N1cSJ2kAysqXtZAykXl+3XHc+nw7QujlRB60fLuBuvJO6bPYxYL83ZkirVg==","shasum":"93c4b81a0f7f2d69b418e8916e43bad0069f895d","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.1.tgz","fileCount":79,"unpackedSize":2461537,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYG39CRA9TVsSAnZWagAA3GgP/imQarj/UMMCuRNGIpuP\nNykJL1hyuDRn37lNHKfcBtxa3q2tg32tCx3LWmDxcdCFSeq0tlG3F9MEJWkN\npERIQi8+neVyZHX1ezszU8HXVSH4nuqLIXKNhCMX7hmdhIehPCAN1AfeSGTx\nwExzyp8rjk7kq87jWrXekFJFSex3hXZPDzyGoxO1Qhwflm6jT2FHZU4udqxB\nwwWIRRMCPDOW7BK9b1MBAv2N5hM0UW3BYEgN5OXxq9LXzfNZcic6Og9KXbyG\nIb09sNav2Hp1z96OwLpYveF3wFpJMHipyWYgt5M3RO0g3Gf0LYwRBUnVoRAp\na6ud7Z9AKskn1qdtTKE89vRsZ4gSQd7mg6+a6JFO99UK69uP3f2YJXrvFijb\nKdHuMvJ/1BDXsSLXXW2KMzOUl40YPTKSjB5TXCoZckX4dAfS75E6p6CPu6Z8\n1ZAt0rtZV9Fr9hc8uR4Uci3ohYAa0i4o8K5bqZU/z9+F2WFiYvc/5aHxcCCN\nG0rkMo6YGP5VPXBMt7teRG8mGFiYURflHN61X0qtxjy8Bi+NKx8tcwTMR6PO\nIrxRbFH3tykGSJBf37rFBgGbPLAhBk3JVaiWy7IsFq0d6b460fiLkkSN2mVJ\nQL/DZUaSHSyKqHGtA5HKfgyVs5jJQ8VZ1DJng/DvvanWe0K2/vhdkJyP0xRH\nNp32\r\n=OQTv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFg0LKqAgHnBJJ0XExAL8CyIUJDf/tvbfmYSlULYs7tUAiEAisqa6ktGZiQXhcH0kzdAQtrZs4G0aI4tSczH+/CnoC4="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.1_1533046269338_0.13604320521400481"},"_hasShrinkwrap":false},"0.4.3":{"name":"igem-wikibrick","version":"0.4.3","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1","url-join":"^4.0.0"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"b874f29ad36b8b197adbeb573859fd029f9f06e7","_id":"igem-wikibrick@0.4.3","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-zjlTvEeFDjtyGf7wrVhobwjPvJT821NJQiVnArBmRJtLUwH+YBvkbF6cnQ6YobzGIdMYeqfy1hbl6albl2R87g==","shasum":"3f4bd4dcac8462db0b73ee9e5651b858df3c81bd","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.3.tgz","fileCount":27,"unpackedSize":326795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbY760CRA9TVsSAnZWagAACagQAICOv9ZJBFKRhUwkFSuJ\noJXqqll/bWywsWlnxHaA5UswRMrTXycls5b5HbdooUxwQ3oYe758px4c5FkK\nlu2gEwQELJIYFDR7KEdzwBvrC6l3hlFjwJzy12ZYjBAe4IH38dYPcC3B5LmW\nyusCHb+vXf9XCJNQ8wQm0PURXbbcclBFAbaQAPJhunttgtTVAmO8yHg06g01\ner4HtOAygdS7FUAwPOrCLOhFv7VFZsWuuCSq9Wu3jcDSvuHBOs5Z5YnvsYiD\n5PR5DZhrTSaLlXoUeDS2b1isECo16NOvgxb2KxXWOo8ROnpib3S/pATy4Mj2\nFJBcyTJpdIwptQZWUB9ddvvF7VlEcotimNZT9v3MbA7lHLSEcRga0+I7zN2F\nDe8bWdn8iixecdWZOda8LzhHvf6/XYzrwEx7sFhRz2NQiojUXs1rua1raUnX\ntK/qeUR2r5sXbEhiOp027rfjeMGGfSrdSVO5sADKVCD917S8TSzyQ4lmTUSh\n2+vIrltMiWwbjnNQ8/pVPJV9g7ZfUhDLttlzjGa8TYp0jDmYs5Z0q7AU7+KW\nyBMStn+w4TJxicHRC1V5Kt0qt1OGLUYQ40WOVVxsCHjcwAXpSamsjeUwn7Yj\nvAHBnslYRkRy/QI7z7cX5Z8xS8DbQ9pdsydiIHSep7j4O+LtUhHAivPRokNy\n7fOv\r\n=B2V4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHJqkfyI+7aumY5oFdFDh0Pq/uQLHHc0uYo9yIChnYyjAiEAlD90rhaD+XwJ6F+E6GNeLrv0CWhufKO3V3MkOxXavc8="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.3_1533263539277_0.8571909568589591"},"_hasShrinkwrap":false},"0.4.4":{"name":"igem-wikibrick","version":"0.4.4","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1","url-join":"^4.0.0"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"d9f2dd0395bc4cc9e6316f3f265a33a2175dc2b3","_id":"igem-wikibrick@0.4.4","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-GMHCHeOwgR/a4BinGI4m1Vx68X0ohZMlytqprWY+jfeejzIwP0L4MfcFPtWJLsoJFzx9nwv06AZbHGZ+EnE6/w==","shasum":"8450eac4dd69b0e9b358e6bd77dffc9dd0928805","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.4.tgz","fileCount":27,"unpackedSize":330887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZIVeCRA9TVsSAnZWagAAjeYP/iNFT/TCvbN2tuK/srdj\nnoB06mx0jwsnn2wQnehDt7u9ArV73uaeD9dYa1xfeKVRc33d9qzQl21kcT0R\naeDBxNhGgXcZk/1YMqm92MAHZR/Qvnj2xV0nTjAVdwLjSxpSxOEMeARRMQKw\nd2hlQxHmgXOE89WRLNs243FMTeRwj8tS848Y1Wu/BclNT0DEcBAeCeivMzRu\nJrUzquvI8JfAid0+sqOUUIAk4zm7kQc7rE69TDjLQ8Fs3hxoXMwoF1YWKmJz\nHllrpHeF+gU/KGbIfhvCp8cAUFBwmur6sMHj9Cg+CiqylVD2YsxG0r/cWR5b\nQY85HkWI0Hg3mZkJhF14jXdaQb3XiPqUQOjX4n/x+ujmcmK/g3eCOAxt+V6P\nCLWJr2C1IIBycS3i+y593DlILmTv7zcGdaXw0UxxnYV+ezTU2x3B4IMCKE+C\nDiPgXBxZD/x2FP6rUvQfyh84lzDL0CaEjEvYtpdX/cEV8OqHRQj3V4IA9r7s\nFinyXn4l1E6/4YwVJsexzD+esDgfSwzzEYiVZlfqVu/C1mftbIPAMF0A3dpS\nNadxRVF6p2Yy8XzSC1f93w3s7oAD1QL8XCk2PAsMiOYLCl4ZioYbBIvYiAL/\nzUh+w9qfqDCJm2/2fEqRdkfx8+uSgNFpZpIwUJpAsY+STaz3psa4xeoSgMwI\nwmbi\r\n=q78W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBV+fPNauw+4rWxvqki1nSD8eoZGHS676y8NyKHLOK5lAiBYiccy09auOgQVon1d0XwMYvXZZbUY6iTKn12gQYuGUw=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.4_1533314397441_0.3902090253294652"},"_hasShrinkwrap":false},"0.4.5":{"name":"igem-wikibrick","version":"0.4.5","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","yargs":"^12.0.1","url-join":"^4.0.0"},"devDependencies":{"gulp-csso":"^3.0.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"2607f03ed634eb9bd32dab130470f7890c8e08a5","_id":"igem-wikibrick@0.4.5","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-v1eAk12tJ9b7ad4wqsXxcMz7wunBg3wL0ADBs/8S4SNkdi/H9AQXWk7/WFlM/fPE1WH3jff8vDuOunFxOHfZUw==","shasum":"23b0d4940c37a31d941e5b446a26ef2a178a0111","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.5.tgz","fileCount":24,"unpackedSize":271055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdDUBCRA9TVsSAnZWagAApNwP/jMn6UmwUsQioDNGZKJf\nEbGWP0wxUs/sDkQuu/tBP5MqIPdkZN+K1Ct2yGYI9nCK5925zmdT9+FW5Hu8\n0cWGkOchX1a2z5kTox0f9tEA6v7PmISBrhCTxxxWyVUKuYjL2NwHu9q/Ei7V\njAOAK0J+JjsRWYIB1tySQ2pcBZZlvzDN8SbM6htcaACSgDOozOG2q2ONGPyF\nV+l42F9sXG3lsoJNc47teon21e7ccQ8kCZr9Zn0wuCCGsizHkS6HboOLPjon\nSCgMnkx62C4Dp9uJiUTPGfxmf5rCVT261zCFAIqJY3NjabHJ5Bq2LGyRfqhG\n65TWHf6vRsFtThtgnSsVcsZQ3KpSRQ2wG39/5x6y3xv3ed05ivabRDnfDmLq\nyjsCpZ1cPqu+0bRWnsRDoPAFKVnz5IO6QUjCKrVi1ita4ojGHd14JMxVPxhu\nYB0fK2JWrzs0qYfWYQYSJ+yJ6iwjlaPwbmrkh7l4G32swZRsTp9jIaqTjsnd\n4jR0GGLctA8oVqh/pCKMEJrrLAu5fASkWIf4eSFf1dG2Qe1zOSzmETFELzYn\nho92YOvjB+FaghcbKNr9mtckqonkSDB8g30n1BZ9fwu6Wuc8G3QqFLcL7tw+\nhAT1guPMfdunFjUDwGek3fnBzW3HWkL7K7uxxYsmW54MfcZoIuX0GtNjN8i/\nmAH7\r\n=H7aT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzEBodfH7Ahe5Ta+asYcapji4ZXAtP8PtvsU2neGSJ7gIgLe7zKFwRbJt7+oiq3Slh0OC7Cmm36xXYG+TvjYxFrtk="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.5_1534342401167_0.9240600015848799"},"_hasShrinkwrap":false},"0.4.6":{"name":"igem-wikibrick","version":"0.4.6","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","yargs":"^12.0.1"},"devDependencies":{"gulp-csso":"^3.0.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","gitHead":"37504b9936b2868b80f2f34675c6cd2716417874","_id":"igem-wikibrick@0.4.6","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-7pgBzd89l1TWQP3tQyJBkoRHx7leNFxobjljYAFOnbOSjjmZwOVLtuZ9AOQiJL1IMMpw8ZIbjLKk1G/HaUH8Ag==","shasum":"7b41cc898143f8db9831a39aa69d709946eaa2c6","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.6.tgz","fileCount":24,"unpackedSize":272034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdEZYCRA9TVsSAnZWagAA4g8P/1OVXhOymVt9rHEiDBAc\nmhlvoLuUjbhSIxMTeH1c0LpdDowd4AC9hrhFqkrzt25q0a8TV2foHhu4Gxxl\nOsV84WbmbLTME5GkOTurWfI5Z1Aza5LfXp2QMLYfbh7IrG657EkTaXJN0l5b\ny1udsQlxn261nLHu50yODQiryI8KyQdIUMschBlAUrpBNWk3YG4HX9uzbhs9\nsOPh5AKrJ6uf7rLwXg0V5nq1IiQhqPwH1KKrKT6h8aPapKILFJT7Ys/YQJAQ\noqwxAAR8Cblu4SF2vtXVHEk7EoYdwWxtkpnmUSDZRPPNhPeBJ9CnpcUKWr1s\nMD0y8EqOgc0G0irvK65kTYSo25HIo7Uxb4pgNU3FGRv7C7GL0rqDFDAW16mj\nzkkZdrb8w4BaRMvMfzjyTptfyPXjnjRvBGgGAgEYVJwSqXH/DZSNqpk1zfC9\nh2Czy4EKyn03NEqyJOosHcpFIpF31UgXzVXunoBvCkigXvi6y4PgbG0TmbCb\nzMmYAOSwtorfmU5mnapgpne5v3eSdsWts5xlGrzjb0wfHJpLfKM6vHVKPFYQ\nVbXB1EOmvUMNAYbsXIKW5BzqiQXYaxwa3XOwQs3U/TFoONbYMW+iLAfEFETa\n6zs2Bw1+9JaFse1i1q9uCu7DMNhKHhzaAyRR+kxZ0bS7QDbqJVlF6YNffFmA\nN+KO\r\n=GlrJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICqkcvEe4AdLQWaAkUBH3n/faZoM6gOqEKJ16YAYsEFkAiA0iZJvDiNpIE9ypmbCmOy3UNNEQNakCFgy+RsjVl/ppQ=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.6_1534346840063_0.17098048634195528"},"_hasShrinkwrap":false},"0.4.7":{"name":"igem-wikibrick","version":"0.4.7","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","gitHead":"cbf4acc12d6444d6cde2ee0439c2d9c4ee380809","_id":"igem-wikibrick@0.4.7","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-D6eEeGBhgyRh1uZvB0UAw3aqNQ72rYAHC8UkUqf0/rvF7ZAsQzcHuPE9VIdc0T5s6fhYPO5WJ1DRJxOxz4CZwQ==","shasum":"e867ec5c79d5b840552223038801673f24843a21","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.7.tgz","fileCount":24,"unpackedSize":272035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdEi6CRA9TVsSAnZWagAAj+AP/2B5eBZGdAFMc2qXinCi\n1dV0G1pwx+LFdcZmDiNhZjLS0bbFYHo8aoijSi6FgTt+74uZuVj+bajPC44D\nGurxnBSwR4fK5CGaBb9rL9U/bUh672dDXRa7/pv9YTB5Nls1VBAbYsqbh2Vk\nMRDo/TZ+gHCCpkUQhNNLdA/MlCMy3K3f7++1KEkeLmSRBnmO3NrBvMjZ947m\nrQkv86mjtPYwFWdL5lffKKS4Phz2MD2cr5yNgjqC3Mn52m6MOoMg0Glp7sCQ\nA8O6KwT2tt9Lq/0jXTGsphS5ZAlbftNCggroDDKnGJ/74ASt6nSYu96bqo2P\n6rZu1JRVVWaZudb9XZr4h252UVdqiTcOw7pLX9at+YNLWSTo8JMvtzrmezT3\nyiz9c/L6bPdlzvbbmxe17Q0lfdoJuSkumY4uUfb4suruW39RKrHpTsLzYlyk\nbONMQwZbX/67SgUX7608l8Fh0gYUeYuK/7eZ1WzjNAEO9bF3OcziakE5JNxz\nRIh/GsFrynUMdp20DmraOPOvYtMkldeb/ALQkEh6rc2L94gTI7Z+RU6vYhzr\nLnrRhOrEiFicEw5E5j/sraSU4iBK8ldSTQxvOFCvc0t7UNt3tQ9EUuraCQbA\nOuXNU3DdpI8WfIk5Vp1leM2vI42OgygopGckc7msWNdidH0uKt4vUvvS3MW6\nduVL\r\n=Fha2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEnEOPm+jf4sepn+tK3C0lwcGR4jeoWc+pcWsXeRgxgzAiEAstMKYlWWsLyHpCKJtPIv2HJNwqPW+SrLNoasdz5vpQ0="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.7_1534347450051_0.5632483105449801"},"_hasShrinkwrap":false},"0.4.8":{"name":"igem-wikibrick","version":"0.4.8","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.5","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.6","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.1","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.6","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","through2":"^2.0.3","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","gitHead":"b7ff2a9a10c7b5fc44fc7a331234a5d42dbcd252","_id":"igem-wikibrick@0.4.8","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-JnaZTelpDLjSX27aFXiIZDFiZG+d5Bu+Gs2SYgHA4Acjta6qFG7/Bu8tDDXAEBSWAZiVHFgXUUl2mqIKrm84SA==","shasum":"3fdb794c89f712bd5cd952ec692568826f15d4b3","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.8.tgz","fileCount":24,"unpackedSize":272166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdEyoCRA9TVsSAnZWagAAqC8QAI7bK6P6KD8I+oIwO+bV\ntDk8ceZRPj0CaStIz15qUiTDeZVcspPcEFiYi6640iezxStO07i79XnO8Cdz\nPrXMPKIjUKzSR3MmuDb1FG0Qf037Mr0+oROu8LV/V/ASafCGkqwp5otCx64A\nnyNN6w7Zces6r6Yqu48NU21vfaoG60C9rsaJDZzSjkl/P70RMbz6PV3/uKr+\nRKAVP5cFfay95abM0UF81IwdBpPm713tx3iaVKv2WjjcLhKIRKFzACfv3wU9\nTV/5FoyK5Wef6Slr3rIPf75AkATcVo43OtcXhckX+hbf3oOjYLCNMFJsEHOo\nM1hEFLKXaXuzzJPbN+Ym/qZelRIHirBGxnxb4ZnNPyhuujzFePTvEH/qzECr\nZCv5KudB64daTrmqXKLq0W87AfssROmz4c9B9zvlS4wQeH9pnvj5jPBMlZ81\nO0hKmY1y6/tpJHtixMby2yatNVUEIubzmZRntF09nPz3ln9bRXvn/Lgf5v3s\nCz2kq9iJPk8QcObmU9c7fJEHcjMeGIGeuG1/z+T1UtItPCwJ8lq8Z7g/V8mq\noLHOq+i/txdrtQjr7QxFeW1SyW1bTV+nAGFigMalolvWWLEd/RKrLTHKmOkR\nglUzelC+bSLST5rBWH82npQ8zXrCdwzsBvCE7q7jUcgu4r5ZFCply/dEF+Ct\nddlj\r\n=tuu5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDd7djal/ZUYuh6HRUg85xBrE7keUeP9k5paF4epV1oYgIgFlEMbKSVZ65DOCgTA31wgsYFJSkw9bnaFDyfzXZgSz4="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.8_1534348456118_0.7964739406001291"},"_hasShrinkwrap":false},"0.4.9":{"name":"igem-wikibrick","version":"0.4.9","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.5","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.6","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.1","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.6","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","through2":"^2.0.3","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","gitHead":"7dd16564e37003bcb735c191e9948a1b3270953c","_id":"igem-wikibrick@0.4.9","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-6ZPFktUOnEswiR45hNvfcGZCOjqFMd1D+w4gUPmjlM0NPQO+vfTtJRgLgrRRteQSy3COrLhV5Tba0bMRQB1CZw==","shasum":"fa50177b92d876d135ce82f5584338c33c59497b","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.9.tgz","fileCount":24,"unpackedSize":272204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdE3ZCRA9TVsSAnZWagAA7hoQAI13F22P+otzsI6MWqSX\nQoCfcENbVtwnjh0VbNF/pE+aKIq47RSw7PzoG/G9HPEG/+vWnBqV4TpNlKM1\nhrRlZyM9tDz8fP1p7blNzu9p3pMOhEkqd9Vf92cZPtJ2KBbkKPOb1abUE/Rn\nsrQCE+oBZUYeo30gzPRc8OgVoYc9nGWIzVq0GBwkhX1jDds+m3A11ksV6T6a\n5IsDrPFVOtog8l1w2jlfG19zDYokbPy9ECo9R/5zDjSExFy1juYn8zdQ+3xU\nqPOHQqvKlBxrWbGVXXCjumiBG2K23gwjyp+ei3JSkFm6h2k4e+R0MXcRv5W3\n3LmqFj9z6EPp4VHp3+bznvxBVLvIUPHtDjmHKC2dranIVxjYRAJrQDrBFw5n\n/QmZDIH0q3vuf3Y2MEqSCU5bL4n0ILDSxoqRyWQ+yUA+GkVBI6jchwR7re8h\n71MSem+u4rU4QMX1H6jVodNX0Um66S+KiwT1ITCJK2ZKNlPaiUYdXEjCTc4i\nnfURWc8aAAFpwQ+CMbt/iW2hw85BW7CRlBg/TsM94txj0I+X/RSm5W4t1l8f\ni8wHlV1BHEE1uDpYMWTltg5a9gMoUn9d/zfE4VRKFLSMzDlJ7Wg9TbhorFBx\nM1V4TOSKGUqwnXDKtqzguwSipBRpOCIJLmG1q0I7rVhPo55ykJrNnQJmEB6j\nUgNk\r\n=PPp+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFxAYel+cekhF8+bVFQ+2RZ/qGytjfaKG/xaGK8OIpSSAiEA6VHOgEwcNi2EEoSTGJltQWcX/VsbIEuEd0SfyI7Nceg="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.9_1534348761743_0.5666718393468975"},"_hasShrinkwrap":false},"0.4.10":{"name":"igem-wikibrick","version":"0.4.10","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.5","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.6","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.1","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.6","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","through2":"^2.0.3","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","gitHead":"6612a0bb9b80aefa678f2a2b47e77bcd41aad376","_id":"igem-wikibrick@0.4.10","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-nWkqMpaWa4s8xnOR4t3CVFnR1jaCir58+YYL4FjatpgluFzeEEt3+kC2ngKz+Uc7Rjwq6EO7rOyk7omjObNFHg==","shasum":"38c3d5d017f9000befccf1ebcab6d2335332e719","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.10.tgz","fileCount":24,"unpackedSize":272205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdE9dCRA9TVsSAnZWagAA/rMQAKJEqovWOlmTVE1CJgbZ\nJCDGYPpBtcQ6VAY/CLtnadOLF5K3PQSWtHdLC0LHz2KMPZXmJ+3iHyb6De+V\nkvnsZAOUcm/Tgsp3PEcKQaVt1CIlc7WW31kjqfj4jFPE7zcgEZi6UWJYaQOo\nejj8ToIjGi11YbW4vr4ebGzDMLztuCKNMFeI3czu3oRI4eVH9Uaa5RjD3xDD\nXbmR75yvNKYheZNwLiXBx9mYXapz+EdaGA3X60IyNe+iADlZAQ0Y6IGrLj1d\nnWGt6hpYuVfqfRxf5KYI4Cb3pQ2TFKC5ZJIwE2Cw3G3IyVY1lunxEazzQUCt\nDINv37rSJS62vnzO2J8kmWmF6fDfbAOikSO9DWEiamN1nQeEe86Ke5YaF6Qc\nBn2JSm4yZPXvLZgItMnxKR3Zk9W6id+pI/R0ZH1DE98h407Uku7a884NMDpz\ndT93CnkPfxpv95pJY0sZzum6lqytrCe3ss7TQuzu+WSvKbjJ9GzpMBdJA58i\nR9ibgc9w/cIg/rI/gy2k0oXJJzIlC6gRSgFmdQ3IcMsSOD3/MD8NQFoXemv3\ngFOSWFeI2SDb3FoiF0RByGSzQShzybnPRzyMhO1aOnJp5v+WTPFG4TneD/kC\nEg+XH5Vk7qM8vxqy9gBoFE2dBS2W9E4BKZoaW30DUiaYe7vXxfACvV2plppT\nxXot\r\n=PgOp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTJBLJYrZk6T164Y6oVyl/oIMO3WeyD6REa42DfctNCQIgBm5n4HUCSBUUN2I/TuKSQw8znapjRzD1nNeaS35I9xQ="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.10_1534349149105_0.8186086516785869"},"_hasShrinkwrap":false},"0.4.11":{"name":"igem-wikibrick","version":"0.4.11","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.5","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.6","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-log":"0.0.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.1","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.6","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","through2":"^2.0.3","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","gitHead":"71334fd77ddbeefab5ec53f7f0b8b3bea68acd67","_id":"igem-wikibrick@0.4.11","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-VptzmTqivG86ueN0yZ1O8XBArCnWdDbQoHYZFlL+t6shmxSsuRXM3gmiWtjFQZyI8acBS/9x1FLERVqX8LCxWA==","shasum":"5c83bce99df9ce8ac1f18b97ad8a3f10494dbd62","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.11.tgz","fileCount":24,"unpackedSize":272262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdGbGCRA9TVsSAnZWagAAM9YQAIrK/iPvmQphFeZh9Nft\nR/YAJCh/0BvTo/fuCNEftccm+ir/o6SdmPgE7HQF4QL+nCCl6qT7CeaSHmao\n9hzO+CpzlbXT/50eW/5Hoq5QNhn57F6QhGH0uJowW1aR6VTF4MbwQiwL1hhm\nfu6Tjns6ifaYtyVTFf6pxYPadgiFcVDLaGNqUUUuiTf8H/pWMvydl/CtFRx9\nKHsghA0ko540fE97E9kqFIuZwMPQYuUAggiOnyaDdaqCNVqOs/RMuAzhgMak\nP0hEsEO5eb1YleRY7nnnTNMMCEwAIf/BksJK4J9tOmn/C2WFFdw+4hDT04Ga\neYZE+ongvfbltCxUmTzWSFYf19vT8OZE4Yb2Usm0dhqFhOlG6dGyhtfsRdVT\nOS8TZk2RA0LFrAAzTyLA8ijee1kNo4DuwgiQdLyD2x/R1+y4aH1/qW1jfyRA\nE95IZhYdsaylqSM3SBRUc/RJriCnb7BUiYuczcZQB4ySCCe8gdY8UCDBfi2v\nnp6/2IAGjFzHLAd70ufghg0rE3a8UWOdrhl7Lprm9cu/sFoPaMlk6vNDv+m+\nIBxfo0OCucwe9zOcczxqbt9nwEE0tWg1aqlMu+4BuU3+B6nFCbywjEFMpzjR\nm6vXgf9mmK9skDIgPjrQr6I0DTX3x+YVRfRqU6JTPA/vsqI4ggeQSyWl5Cys\nmR/o\r\n=5OQl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE38hrMYvzS9mYpSmMi31FueWdgJC8ytfk3P3bhOqcwAAiEAgS/QBBEQuBLbkWFtCZGZ/cAjXV6Zn3IfUSRGej3yaDg="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.11_1534355142233_0.7831135870394776"},"_hasShrinkwrap":false},"0.4.12":{"name":"igem-wikibrick","version":"0.4.12","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.5","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.6","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-log":"0.0.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.1","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.6","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","through2":"^2.0.3","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","gitHead":"1967e2940573449aabd5995fc2233cf056c62f56","_id":"igem-wikibrick@0.4.12","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-4fBdq+iYl4nhvwInmvFzRZCHOTLN/lFwixXd1li9GuWzxgQHIVMxKQThrMEt/OhcHNlus0Dm9imdqneRjZL30A==","shasum":"b576f5ad19218b4ee892d8b02e8812e11f8606a3","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.12.tgz","fileCount":24,"unpackedSize":272256,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdGqQCRA9TVsSAnZWagAA2PQQAJa9lgy3a5dVhPzgmsm3\nMtdagiTgdrHbj0jXmVKUzRzqYtzaE70YE8CE9sb32dSukCx4615jTQgyxtUY\nAFAtBpaK1j6sU5+J8Cf4/0tU3UuiNRV8OY3DNjzDpGjtQW+C7vHCD9b3w5I/\nvXSVT1mOu2ioQdYbE5qsFiKmX7sabMnIfTd7CNpwfxm4EbsAs+i+w8dTc0qR\nnXimI67JoOQUwa+8bJ0hwl/TcQUpP6D815DpNMiopJtkX+mvXnZ8Km9srHRr\nA5UIjiIobcgmDxdyext6FOTqx64PX0Pza0Uk1DQ68Vg87U+WIGsDsmnc+MDI\nVsBS8+BqtmWUm5k1Q7PrhN3m9lj4aVU6JV1NMVSlHdfxgMTFaeKDfiy9PwHJ\nxK9Mxa7NN1IAVVGt3CiNhWKwHb5demOKhkJRBc83kltE1BiCcf2s8GhJ+Gxa\nzPc9RmaiSuO2bGXNIIVKOcPoUgDI6aF5ifm74r8NeMcHI7yMLvtMKbmChmMg\nkALl29MhmQLGGE0FWzdrOL2JuwEljcOZRjNDl7JSsN2KZOG9mAJvl1Se/ZQJ\npqT/WQz58mUb2TryaIK61DKgmawmW1LMVDtmewA21vcrG7WwcrpDEUkFnLsF\nkEdamjFFAjfCcOHvsiBMZDO4nXOWQ8tBmRzpqFGuMQPmEcTbeuvRvlB0nos2\nILR+\r\n=9ygM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGfuB5/ilgZXKhwvrXCGzJAnxZ5Gx+bgLKxGaf91mQbIAiEAn0VJPNVK5Q4HVyjUQi0JXlod2pG7XP4Ei4YqXvbVucE="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.12_1534356112632_0.08171884339458813"},"_hasShrinkwrap":false},"0.4.13":{"name":"igem-wikibrick","version":"0.4.13","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-browserify":"^0.5.1","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","yargs":"^12.0.1"},"devDependencies":{"gulp-csso":"^3.0.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","gitHead":"4070fa382ead9c986b04fdea11da77c3763433da","_id":"igem-wikibrick@0.4.13","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-NJqYNJ6RckhBbqNLdCUnSJHmeTifE1c0AWSCDT5mArrkMLxYKJXJ/uNU7BbgGQeKV3UJaV48MmKW+eGl5X+CAg==","shasum":"33b2a1e73075b015238591493a4000629d76fe4c","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.13.tgz","fileCount":24,"unpackedSize":271652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdHBwCRA9TVsSAnZWagAA1ucP/AwhmTTpE7qjXWqD6wTj\npPhh54EAFQlGFnhDNWJ+nsK2tCNFyDXytsCk4HYSpACEFm6jNIGkYDAKPaTI\n0xQXg4D2WpvafV/tUo5oUwUNTPU7Xxy7snykETfnM4EvdGPVxt8rNhZNH4QP\nOUlhQhJ07ub7IDwDsvRPp5OYO5lXR5nwMGyQhpsKQHRwsdS0/tWBT0R28Wk+\nr81jjPstNNC/c0FJ7pg/SO0jb8/J1+hVd1N3m4ttb50N/8TrcSxiIp6uo1Bv\nckfnf/L1ivZJqCEQUzyyxytRuSVM5TNp3ECNSyywE3rN+g2wR+2cM02sEK+p\nAFwE0gvg7O/LcI+rZvKKAbeNiSJ2F+lhdw4cAxdi7xZvcsbsGogokR4jog5o\nxeB7uK1YE9vD96O6mVySypCFh7hclXQO6ledk0SmBmy5FPjFedCy2rz9rfXn\nI797gV4/DEYyjF/i0XicariFd9GjPtzndz+KYr+/QrVeYIEO7tPqn6ZV2FpE\nk5Z+6unc/eAJnqfFjjx0OZCCb3B8SS1lvYq81JWKE36/iIHazCP9MTePCvwm\n+RLqATso4iqM+JR6SjSSEDdcMHt8p6fKyipOZLg0yZZ/CUoj6JBxfggvaAWk\nYUl2FGP5svWVIdbFKLwq4cCtKAr9W+VjldKs8MQsCxI5qUt/YL9+aNN3akHC\nSdvx\r\n=hsMn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID21BEW+hnECOlyv9JsNND+GccAMnW6RoooG4uK2mrHGAiBrVsmMaBdMxR1FKltObrZsgVx4ulRWKqE0Vze+XQ9LAQ=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.13_1534357616576_0.5751616139919873"},"_hasShrinkwrap":false},"0.4.14":{"name":"igem-wikibrick","version":"0.4.14","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-browserify":"^0.5.1","gulp-csso":"^3.0.1","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","gitHead":"5d6481c06e661f099e35de798f6e1725f8fd16fa","_id":"igem-wikibrick@0.4.14","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-FZ847/sw9Y8Q4EhujnvPhK5PcVH6D4zz6IyIHYUCOh42hOfiNwYwPI4g8Au0shGvJEmBrisj8d0RAfdXOHmfLQ==","shasum":"bafb927fe1e7ffacd3205488597568a07a1ad8e0","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.14.tgz","fileCount":24,"unpackedSize":271912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdHFICRA9TVsSAnZWagAAoxcQAKUMPvnANZMGf5p+i8n6\nscwyEpqwAo9+7QayKzJTuXcSlQUIYNAPDQGfmpqehuv2bXdqNvE7bgzCP3Bv\n5I0NkSuHcZUs9E91iFtGqCoSZ2bgrd5iA+hwr7lCTanF4xDYiSWa7DhuAl6j\nY4g4UmYutAdg8t+jzbJkSeKKof7OwPTIUyeY7BSjIixCiBgUHwkloOJNDmxl\nBq+mf1b4Ru1r1SPdtSa55hsCcqhKEHfAYU7ARhZqWiijxF3+Ks/oNgPT8DAD\nUyOrT5+neckWh4VSp7gMNNugAyXrOefhkSPmVB4Pb+xRxEpgnTosjQHayeeE\nglYJb+g9Qz7dfOTbXC6QU9WctKiISNfmOxGhj3Blkxan8weezg8EK4OvWBBP\nGBbyEjr+yLnNC+yz7bMUz11q/hxQi90IdeCK6cf6NkQwqp8bkrzrRGuwr+th\nKsVfD4UMy2zx6euVpLmfeqt3pXbz+2PwZtIQlhZU9lQYZjscXJatJCaUDdky\nQbe7sMo+7pW3lwzZWrrni1/yVrEVxUdKBbtCb2a2/7l/aXT2RH/kbJX0rxfz\nJDEN0tqOKOLgAJ7NNDhMxT3kdg2mMN8LXTO2aZ3zpYgTP6X44SMge2VlM+Si\nnekbutCf1KHLeQSAvtZOkyCrl+T0C6bUt+yLDv98kfwT5zRioxTW9LbKXn7M\nPBFN\r\n=Mzd1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBfYjHqt/lq6TOcdMG0BE2xeN7MzDJrOBXolf8dM83/oAiAdgfwd+QEShFaY38EgId7vDR/cwztsQJfStOsgPzfnjw=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.14_1534357832273_0.31407339930074873"},"_hasShrinkwrap":false},"0.4.15":{"name":"igem-wikibrick","version":"0.4.15","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-browserify":"^0.5.1","gulp-csso":"^3.0.1","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","gitHead":"15eda27acd9d23f7d19b68dec6997aff6c24469a","_id":"igem-wikibrick@0.4.15","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-GubBLO0Z+N1naTAC2tBIoZi0Zws+adUYl/YkhscxhqybTabVu1AHoFkIelj1MEvBSSYyW65dSD4OtFl+me1fMg==","shasum":"38b1ced6ce8131a5f415c1b03e356566ba2bafab","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.15.tgz","fileCount":24,"unpackedSize":271946,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdHTBCRA9TVsSAnZWagAAlYAQAIkU9jbj793IPVsWnSo8\nwcTx1SmkzZwpQov3ImryVnEHC4DaMv07q8SGgpiIYa7G+Q1R9O+VvwoOUgos\nQJTJYJVl/1HRk6E0IBt2fGaiUcJRad48eRYEjq7JEyTFSjQjS2wXI1X10iox\nSDU19iuyOOv45kFP8l6z4qKqUjsjsE8SpDK9aVzHfTN8HFVbqVRTvsX9CLFJ\nvptTw3L9pSEZMRYvMfw4MxXX1HyIsUc20DfJqxx0JDtEVAcBLG294eG7X7if\n7i5Kf4VSJTAyo0LYf5p5szCnj6mokl0bw4iLr1ZKy4IrzPX4v2pqlL0U5TEu\nqQcGPd0VAPGZwZ+Qj0bHbz7w3Ojz6nmuid3z5RwC0ci0yLvK32fEJ225VTjm\nbVR/3z1OvmENbpifrLNxeXvEIgMblINfworKYwlYtJG6rWw+OaxTwl5kxOkv\njyIZaSTW0ff+79JM+W3fKS+PjmnR8ZlarithQFZO7pRFTg68OrmmPRCnW/iO\nsuQPX7QTSdYXXk1judlSK3RpyBxmu26klQR4MtvQEacmY/GD6Sziy+T6ES2q\nOTgMXw372oqL/T9c3yg/R/aU629r0+z1FQ/BavscbgFDWIQHXOh5EpoSuBpr\n71WakfUeAQfbNJ+QhnEVEoTOw3gMY8CUmo8sK0QRvFIw+RzevJEglVx+zUWB\n6jvI\r\n=gnE7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRJWe1/Hcy6VriEc2MZnT99t1jILq4gRAuKahgNiHcfwIgQ2+ZKNg6TpoYqpwGaj3pIZk8ga+mn4V/vdlGCGTy0Ro="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.15_1534358721545_0.04103659050376218"},"_hasShrinkwrap":false},"0.4.16":{"name":"igem-wikibrick","version":"0.4.16","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-browserify":"^0.5.1","gulp-csso":"^3.0.1","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.3.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"2cd685f0a9ad4e10715d26dcabe0dcf9484106f9","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.4.16","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-vgvUA9GEALti4MiD2uI6wpWqtJBvdhryBTezkoNp4wHQ1bIPFJkIXWneA/5AWdxSz0dWi1zGTSAioRTXKVRSqQ==","shasum":"379dcd1ef8e42ffacd8fdc59c126c92a4690ac32","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.16.tgz","fileCount":24,"unpackedSize":271974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdbnvCRA9TVsSAnZWagAALboP/iRZrJ0F2houwTrbgQMb\nXmhi1AKNxrNwO25v22pnI2Y1cC0xsmP/wH7Og0Qft9I//bwTHeocCTjfhJgA\nM42TqrloyeJSMens3ndrweFOl6z/BxQH8OyShVAwyNxp5/YZNr3F3iT0zLbr\n++G73WRpDz5S0zqMT723wbPiwRzft4vCA+9FF/iWG3472M5GuiNV1aAZxtrW\n2tblGvJXCqi0AIsffNaYYA+U+wdMU91Lty2h9gE+hKMkhYJQWmRPdwQCf3ea\nwDtHSo8ZCa2dztjL2AUZV+wrn2u5YT8vsc16ooxdbILGXa/T23ajaxcoQxvd\nWC/ockmujPWbnNqKheb1N3SA1XKciC/6KHK3jqSEfwLJlcOLGzqCBDxLKdQU\n4qLSMVjIE2h9+Hucp/ehKvokGL0aN9lwkyQ5jtNDAh3M4+lIBlx4Tqw+puoc\nwBdaBtQunDNNZkFO9QN9qgfOwE8MT4gsNfScRF4r3BeeM2CAck1HD/XNakHe\nCi07qT31nf7Vwb09OpBi6Su3xosOZ3nc+VBlP/+UdkEBQn3rZQo1bMGpBGu/\nTesTSig0lMpjpwSRKdZW3XOWZrSUmRxHRvkSDupbs2AjhyxCNF/cteVK/H5S\nCg9rWe/7F/a7aElu6ObV4/Ncltcgv7qeYdl2yJayAkttQpj7b3HYvEfqrhDj\nI84z\r\n=mgHb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICzxCfvdHuN1EC2/8DgGsxIeuzXQ38k8dFcClZ2Eh9Q/AiEAxnaXrf+BVaN8s2yDY8GsU1RfrGaWvrdMgDwnKXPO1MY="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.16_1534441966631_0.2660665341533661"},"_hasShrinkwrap":false},"0.4.17":{"name":"igem-wikibrick","version":"0.4.17","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-transform":"^1.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"85a2c82a044770ed3841ee2c36a483a653436b86","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.4.17","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-hQQkfhJ4ycN84RmXEcJmBzqU6LmAtraS6A0FJ/uXhBjoArwdUIG0fdvJW778+zI5YI1uArF+PmzfdLG07bvLnQ==","shasum":"ce8d3dcab71d6ec7338c75d04c9d1ea83c70b593","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.17.tgz","fileCount":24,"unpackedSize":272070,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdwWACRA9TVsSAnZWagAATA0P/igv9qZnajwC/kvVus/Y\nX+n3R1iOJJ03aHXyN6hFsqwtioKgF+gaPSvDUKDZS0IbilZpVrTCIP6Wp3lB\n0eR5meWGFMJ9DWNwmRKQhxtP5NF67CHqlL+50ew0HgGzZquGBxn+tYHbKOYr\n4iqvGJeWomYK/glkM3XovWcm7gYlDp+ETYhnaO/R/BTu6A5QeCcnQkXnBBm5\nYSrIQM6MDHy077Gjd76OGFqwSaKimWfvTOiOeHUFkDBr5eQDzuQgCzCwFmQR\nqc1VZqMlrCfUG2DJ7tyVCh3FQsH8bHZhRNv0x6rE+WVWVwaqnxCnq/7eZ4kc\nQZVRR/NuZAZtSCDRqZawdCQbEDgwsSxKi/0zkrecJcG0P0AqyAXr4Huygh7d\nR6nPMJBH5oI9jd7/yJnxOjvEoh4wM2z8Ux+IDMykQC0Guwc4Rfcf5QXun1nU\noSqGf+WTd/s0oTpPqR7xDFV79LC8i9D9Vlbbxwb1va3z3JLN/U1yJA8zApNl\nsw+IPtt2kdpjt1/f2oVOePFxmgI2GTl23WntsQCjq/5aYxBw/9O2yOtjqtVP\nGst45jRopW4uiZANwtzP9LQMOqHGiDtHiiZb+7BWt36jOowNoKf7ezo9KRPC\n09Vx2vxg2K9g7b4kWiYRcQ2vKJVtz5hyNqQQqFgP4U4akaShzsMe3fQBJcQa\neQMr\r\n=pIks\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGaHQUNMEzJ4cPxZE+IkvlQd2KgbddLw8zwvZPv4hVVuAiEApLdG2kKnviTXjoVg7ANNqCXEYB/wlz04cQu3DxaV7uE="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.17_1534526848130_0.9028277351035681"},"_hasShrinkwrap":false},"0.4.18":{"name":"igem-wikibrick","version":"0.4.18","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-transform":"^1.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"6088c017c1429e5a3eddea21b7d1d34562aad601","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.4.18","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-gJsvXzIiNY2rAYCbldJXjeIKlX+ZStgcflbcM7wM11QxiBCzpju1htSxEG+d9672yIIR0SxMR+MXXVBjtDQ5Fg==","shasum":"489f35084a8266c38b961ab6bf779a0d24e0e59c","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.18.tgz","fileCount":24,"unpackedSize":272103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdwbcCRA9TVsSAnZWagAArSEP+gPW1VHpRFa1fwujbGsJ\nyi1ng6xqB4Hh3FOKAP70H/pabyxD0kIc7MPQHJkTRIlxEAYTtWF/ZvmPlUR9\ndg9EfWNZFhjdi9jJfSSZE8mxH9Gyv0qYWBb6oy1xj9JyE8FwC4xt27c83Ag/\nJnH8cTPobhobEj7+I4HdBj1xbHVN4nwVvGuYHMRzI5BnU7BhMfQQWAIP5qQ/\npZCIU8S3lvgp+tLAOfBXtwLES+uMHt4+WstTpo75yon/wTAFA0RBtSbZ8Lap\nqf4QiBMVNkiZjTMslXi0G0Af75U+q60nM707gPoeOcUCF6JqP9VvsX6HG7bM\noidpLiraLN/+taeZfFYcJYdfEaSR+nwpUvu77+5wmA5UZpNc6ajUYAPLxbn5\nEdWDDfT9+gt9fAnexK7T/o7iWWsbQ+IpKCoObp76vvtneaf/etHm83LPBRYW\nvldlEwoAcPOxNhPvGRAuiP0t6yh81KrgkIlVrH01qEXT0jCBWz0omUwzFb2M\nk1PRiYJH4NvntRmeeOb5or7wlKlsbb9PgaARJQokhmmXFdkW1qIRoweLKh5d\neAVyFsLq43GaAGhvjTYsie2Q5euv/4kQotARov0lvcdhw78b8uAyw7gvycRl\n+mB7pYPY+DWuittM8LQB/JR1nofWGgfQ6eyYvPpYn6lzdU/dlHF6sa4Smz4H\n3Obt\r\n=sh1Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG8tNrPsGE+Uhar28me+1uqNnzgn9uyCCQ4t3+x46+cfAiABIHMNjSZ652SDTBLQYV3aGcGjd/lt7JiKYLr9/4sDuA=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.18_1534527196327_0.33323265174195393"},"_hasShrinkwrap":false},"0.4.19":{"name":"igem-wikibrick","version":"0.4.19","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-transform":"^1.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"cc105ddb81f1af2239f7e230877e7de8ccbc8dea","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.4.19","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-tYOLoWmyiXKBlFrfvG1oUINLYSez/9W7+qnD0j8wb+KyNFQJN4Gi0tlobFvTgU1nE1hGRchgYw0aN7qu/z6LGw==","shasum":"c9f385f4606e4174f03a006a8c7ac339786b0680","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.19.tgz","fileCount":24,"unpackedSize":272104,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdwe6CRA9TVsSAnZWagAAah4P/0ALkGMnjgJJV/uzQ8s4\nhsOo4llgyDP1QXPG3wtKkPstIgbqEFkmfZPMaD3MCUKmdMXwDqnMIii8DhGN\nfaKWhU2W03cJpdUBX4zmLo5NbYyJe9Gw9J6O6GBL8+Upwjx4KZZvavRQY+cb\nJLHNpgVdNKHvNCk06a1OJo9AYipfyDDi2oVSOsvdcgkyXNzYvKDBKbKCi77/\ncM+COttJEkEb89wC1zHuZvZu9I8DOOtlJ3wffAsUX1b3N4Jxk/Ft2kKye5FO\n5MlK70kYYGViK2eArv0UTi91lcirLGmdiZwOEOPuHow8UVznvreajjx9kY2+\nWll22LGBBMCoeT/GHRNGwp5PQBCesnlZYc2PU2mN1XZElqRQ/usZLg3cpzol\nO73OJvv3JRdFjFVaJ+YGRhVPMRBsEm8p7thoHh8oqWHghafhIt5EeLIZYdl0\ntE5d2hm0NaTS1cq3mGYz1oZkYWpqug2/CdbPuUyuRjmSyIONj1EUjrqQflpk\niItcdyFEpijX62/QoVyi8b85miC04FtHdzAikpRWJc/TGUdIaAFCORFjiRTW\ntHVcTUtLOD2JCpF7F7c3zlR2dbTMmEoMfMfxGvo1BX3S1hKr4KPjYOvxq2Fk\nzseMVOufIv6lqQUa1kEuAoM04v3CcOdldW+nR6DA72kZBtG+8VQDwkYQi62O\njVHe\r\n=Kd7m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBg7935A3AOJCRwbchmKd+S0TUNBNhEfT5+dL+WEhSz6AiBCdMJIF7RERbhNqLiHZqcZihdBhERX9G5EbDiTdTEB+g=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.19_1534527418235_0.0913791322321349"},"_hasShrinkwrap":false},"0.4.20":{"name":"igem-wikibrick","version":"0.4.20","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-transform":"^1.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"1e6648b59186ce5db64d1f155e7dc537642aac92","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.4.20","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-1dt6FdmnzS+5fwLDxVV1rrXkA34Q7i6gJigVwfUIRgiROkRWN68X0fD4OLmgj7m/ou86O7/lc3/5DZzl3t2IHA==","shasum":"b7403e309a61511b4bf8a9cdaf7acda3262cb662","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.20.tgz","fileCount":24,"unpackedSize":272105,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdwh9CRA9TVsSAnZWagAAXiEP/i+IprfJS/L5ORvhnsLv\nnyMzdXW67nPZ6SDzmvyWqdw+coUeNQK28e/2TPgtpTqkRajFuRxSGcGDa/uP\neIKCGwBHr00iolz5yUgx06LL2MYj9TEVwTM7mUj4nSb8J3eJ4RD0KCcwQXAa\nj3YddxbZfNrbL0slQVNYQGxbZQZ9eTtG4TwTBQMUvAuUPhl/LTdi1jHUUyny\nkOROHXqxjlxhLTPELAAKHHkfOLuD9w99Re3t8jxYiXkVT4gfHrh1mjqj4AyG\nc5Zl2EXTHGisUwBoX6h3fXq91awcDQu5bZZMLePFr4xvj6MjzR8hPG5S8j3z\nNVD3qQu4cicW872r6+diii1JBJRBGsOaT0RyM27axAuC5lCFu7Op9SgScyha\nYO26LhmM9YbTy1p8YYt93+KVAMLrhsLExGWvGoX67ccXOSzCm18lG9afbak6\n6/qUjGLeBT45PB2oNFWuDnD2k4Pr+CaX+wvR0sf1sF/LvgWuoTg/L4I5rKjm\n7sT3VEv6zcttEiCJBO1dP8su7B/Nt9c46fRxLvcVsweK0zwjvJ5lGwIwScCy\nZauzk0j1RCjpMOcjzpLsA3VeF9kdBEkvz65nzL1w+3OV7wGzPUK8LWnGDMzZ\nmlMYh/axkukGL5fznWOMBCFIuNnlZvgW9OXCS0KRmKt/XRYxMYcrxQ1/Dghi\nTqgr\r\n=HMlu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB7FO2aBRZWxoXZUvjcCxNB/x0taK68U9Vgy14S4DCtJAiAp29kDw2LQiUaZDFBtlzu9jWaSY1WSoItFDIjJ1FN05Q=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.20_1534527612948_0.18288772422310462"},"_hasShrinkwrap":false},"0.4.21":{"name":"igem-wikibrick","version":"0.4.21","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-browser":"^3.0.11","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"d049403071b846a80deed16846cf971821b1b77d","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.4.21","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-ayfoe0qZzngLdc6O/CRnXMUjaHuOFfEgSgQjrucDM1/IfAdYllaITusCaJVE6zoXBa683sNEf3WMq4eh5WynAg==","shasum":"1ef8f6554afa8c0e1b0d2f3b20d61b02382628c9","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.21.tgz","fileCount":24,"unpackedSize":271907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdwrcCRA9TVsSAnZWagAAGVkQAJtuBnLsbBiZNJwXUNqv\nrXbQ35UstEzlc+0wWrQjXlt8TEMvQfMroPtRSgMDW7HNpSskvIZS6dZpurdz\nwiTqBHPJKoiHybF8l51KUu8Zg86GwqMfMrdLp6Ir4a+Q5G63goS9cScCGOwV\nytpAYbU4jafOV5GeTjIIzX1MjIVG99HClSbuXGbMaa0UUomovZHNnQ3V2oNJ\nDwHggH3t4Nc+yqwERMJA5+Xjo623eRTxT7+LzAQC8uvG85T/RAn9MUMOxWC2\nZObsOKfjq4AlPquVUgGxZWh9Y/mwt3wa1vxoSTRsOI6zK9/CjjFkmrbZWM3E\nyuw6au2xzvzQAyT5zPsiuzLFOMUE0K4XGI0bIzUoMMpn4kYyk3aEnufrtNDt\n3IhV93HYPbZ+XcJo7bOexnKD+DhWrXvLAnz2HxpQuOOer7n5EEP0+e1TGTBJ\nVyN45IVwxDvTiu/VoZjHXy7SiyFHrjjTYpUS++m9oFe6Gbrte64yOaZQnNnx\nTWiaAIUg7av9ryEasX8oT/QugBfuDSXDKGsAJ7x3md4vB2BaHiLIv6Q4X521\nF4ZbWfN4PpiXV4x2m1ne5BpoC/+Pqg8Cqf/+iQt9DMPaV2NBgTBXezTAoLUg\naX585ZWbr0/63QIa81MMKVH4GYvQOUkPURdw1/AZeUZLr358u8I4UqLIWL3X\npG0w\r\n=Tynv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIANVXO72/PnTl8wU7Flm52lMLGlfa5BcTArCnA7nCQLeAiEAoh0Ywtt51iXungnMdbghqatNBbnSyv4/lhq2mX5n7ag="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.21_1534528219200_0.9400601349046693"},"_hasShrinkwrap":false},"0.4.22":{"name":"igem-wikibrick","version":"0.4.22","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"547d47650bcb780e25f9c932bbe79c5889e2b35d","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.4.22","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-tLD1oJ/vPo7uzT47YS1Wh8fzp+X+s2Uupdr3z/6stCyU2VDoNHkX4nI+bYDT2orbzJk+erSb+oHkIRNHAGVueQ==","shasum":"b5ae6eda5ea610e3e383fb41e0d5f5d97a6573d6","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.22.tgz","fileCount":24,"unpackedSize":272403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdxEuCRA9TVsSAnZWagAAUoUP/1bSa/RXMDD4bJLdQJ4u\ngGa3YSieSVJgEL5TSlT9uYoocjH4MRMmvRnSM28HsQdRuC6Fckrsf+lEliU1\nrlSkC//8ogqdjeHZVz8mhiDjCuHy8YOIkdnPI7m/128Zwo1GE+U18YmUVdyf\nZtlYKB47mkgAWHoiqYR2oOKFPKf1YqlWA82Jz6wLMUo1vEd1LiPlYJF/WFsG\nK5YUoTE+vOQZSG9gJMtS8S1+ef1rAodclJbLu78AUnvngeMD68/1lf8Tj8d3\nk1jp2OD6/RFhKWAsRwmyfJCLzDMxhUGdPQQMXaOzFFx2UtrLGXsgCYmxe2bu\nxHW19VADQ2YLGqGU7M7lG6iNhbRSVvD5smxjMn3dIFYCx878e+L4wagGdIs7\nvF0noH5higefRRZ5FvptUjrMxLIfE+GOIbomTYTeShWgbzR50oF+6+jo3Cnp\npemIVS2vD8/tL5TmJYOiTXPscMJtFNeGtntsXLFS1L3dgn622dOpyoUuPKmm\nbMmrVbc8FZifLdLY+BY1vl93iYGOyd4uNu67iItg1mDjZOV6v8cgc9JhRrhe\n9LOG8538RU2bvVMYAi/7iiVZ+L+5O1uvZHts5wPdunJ1xTKPINNzVLyuKuo4\ndnvyWKIPHxtqByX92TJL2BJjfmm5eoI0Ih+B/L/lRh6tbKulXPfvhCK00PHa\nj/rp\r\n=Bhhh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDm6kKZi60PEY4/r/synfWYwavmZ0h1iJWvu0Cvnd6VkQIhALoeXz49q0INn0srzeY5VNP5rMVrIY3mmHbqiNyuQKx2"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.22_1534529837803_0.2049148603926223"},"_hasShrinkwrap":false},"0.4.23":{"name":"igem-wikibrick","version":"0.4.23","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"35c3943aefdedf23ac7c298ac1e31a495bb051d2","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.4.23","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-a6ynfEHtFkkBwXSlffxOXycFvVfZKmG/fDXsBDr60WF6E0lkxcUrYevHpL4hZnJR/l0qQmKqLZxr8bKHbPfRsQ==","shasum":"e30c625793fefcc2ed1f81effd41cb282c11222e","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.23.tgz","fileCount":24,"unpackedSize":272441,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdxPwCRA9TVsSAnZWagAAVtgP/iH0SWY4fQKPOccrrZvD\n1gzqGOx4/jKOQ/eXWitPr0Qx41+i/6aAzZPnrs1PYK/dGvby18TnW/qXxTFC\nqD0Fwv4Umf+4dMhd1UgUDj6gAb9unwS3uS0AGDjjnzjrH/t7wN9LjWtJwPWR\n1WXbQLfQ+hOGMaXrWCkrEWC2GdhF4gwZqQCGczv/xcSeeY0GKa71AfWTBVBB\nQlfXChox3SHF5KNMc4fCJXBOjCSZiQokwGTaU9h+a3XCaKXlMMsjiglHacr1\nu3eascrVILEZ8qTjk/tGuL/XDeuoQlTD4SFFfB4Vscbyz/3hNVTyKHZM58S2\nw1fG+Rg3p9S1AC6iMnfVvkFBgD2ZhpLgLBwy1jAowwoO0xLjFQcZVeLi7cJq\n/N0kpo30pA/2a/F/Z347BCzeR8/ZpRlwouyQqSfDNlJvuoseWOcHCDQ1pegs\n/ptEHkPe8jTYx5dFWRAMQMMvwlgDA1Ioe7ztIKukNqGfxid6cTTo1w3y6W8o\niiekZqDqNM48U3Vq4q83aPYeMGr3W1SvMbBQTkLbeczulyZ2Tn0sGy5VIc0a\n7gG7d+38Cw6at5Ohx6kY6DsVygNWJ/cNWaSz81FLBWHFKp3ZP5obb2L3yFWl\nkbvtZcrk7cOBlpWdEX9gKAsrMMrASS8CvU4V2T6tCoedI+lRKh/FANsuBeO8\ns2Dl\r\n=P4WJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwevFHQ1tU+Y6rL3qQMyjrkIUK4bElaFROqvR89JS/nQIgJ1/qkVkNtBSiQpeXZFkymZ6U4mLDZf5fGmglLlf97h0="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.23_1534530543810_0.4914472505542582"},"_hasShrinkwrap":false},"0.4.24":{"name":"igem-wikibrick","version":"0.4.24","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"814e67639838cc99c3f11d2fddffd9d17b04037d","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.4.24","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-STgYYGjzuMciR2nu6UEfyyNCCsdMyOLUxz27BPakDTE8XUkdI6RdUEwCWN5QSiUBGqtePYNFmk+S+nd7aoru/g==","shasum":"763eceffb70239cb62055e364440129229df5859","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.24.tgz","fileCount":24,"unpackedSize":272311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdxecCRA9TVsSAnZWagAA0C4P/0YiaxG/w/mLJ+4V6fZG\nkDNGIdm3kp7u3q6utuLEOF/jyqbUBoLLuNm77ZKCRTStvQGIRCRIwYfs9XIT\nGVS4Oh+ouMon17PRIbzoWBfPbIMDKCkO4P9EIuHig/zonHD0BYSkV1X/JKJM\nFg5k3P0Z05Ty7tayRqN7n/wiUThezsBBZ/7MwnGAWTMjrqADsMbE5jiWYQWK\nDFljjCqtH5NsP8K7xtL4gmkW7shw4Oxb+fhhRNjHjpMnZCA/KW37aIynAghW\n5L+xOE9qaud/9e50FDQHHc13M881+hUMmyoiq3HpzV92/n4sWwoTSpKiiCx2\nRxzQPAgJtr5aGqOG0yTzZDtRopDGB12z0YDzC7Bpi3fUc+TG7hWmnZQXH52i\nluL/fXuSBst30lG0TwCN9SLM0i69mYUOrcN0iR+5A4xsabdSgbEb6/hYHLOd\nLfxQTaEOhpDRBbHv8tIMg/dB98otwuCDCqPXEy4dMsdQRiKiyPhU134AniqL\nNsHVqTK5/Nyvf/WqWRJ+yPEd2OzkYHNicl+nvAOSMstw4fjH7kHbJb5yrz+B\nxb0orevWxXZWEd70dw0MKB5k5ZN7St5euyKxobbQtuuRaD2ALX/e4mX3waPv\n0Zfvp3jPrmg2HKzTnmC98UBPyaPMRSayCIOZFF+ZbJMuElAdVl0+edbvL6Kq\n0P8i\r\n=alA1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSc7xDFBX4lnvjYNmrk1wxwy+o5W0MDKpQ+QJE2eaETAIhAIfdDKOyiz5EZef55JC5obgFPdH7MESX7jQN9s19pmwc"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.24_1534531483315_0.7517584609071772"},"_hasShrinkwrap":false},"0.4.25":{"name":"igem-wikibrick","version":"0.4.25","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"3c8e183371b3f437e73be36f8e6a200ad9eeb9e5","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.4.25","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-UsAhPV06+H9JbPn6LgmbGxCKI7IVcQPX6YbKxB9k4uGKKHJWdGulWHKf/Ez/6i8MuS2e6AIFc0W81qp5XzRB0w==","shasum":"88ecd192008f6ce0a3c15472aad57a65dbc5a88a","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.25.tgz","fileCount":24,"unpackedSize":272380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdxgECRA9TVsSAnZWagAAgSYP/jyBZDeIwfJjybCBxqjm\nIzCH4D8HaSWGOry8DDNX6s1U8OO9GXz0nscoLz9USojxUroSpwRdhmSUdNem\n5Ojp58G7/HxTibaHIfwbrUmV7w87JAMwZ/Na5EEpIoi1Dz71Kxugu18IIHOm\n0GhBKPfuqaCEBbqPJMe1HZpkXumE6/6gHpeHn8f31rwO+CxJoYi80BFqLzbp\n0YyLqt2DWBc6IY47nIVmw8aQ1yzWgZ64soox3dY2Z82EFe/jsTzpF3Kg1yQq\nhcYwHvJiyLv0m0B+7f2LJM4P14KhZajYBea66Oudpk+y3pcovqYBoJ3lBnFO\ny260xi9ZG6wkKTnQdf1PcgafV2dJ3tyhtNLQtDEJHN27r7J171zBID0+5dDH\n7TLiW7eM+67IzAxedFvZ3Pf2RAXMJWXvJIukGOk15pvrtshU4eOuODD4Yaam\nk5Zm+08HrJpGR6tmnvC/UvmhNRHrZNcTsXHuAtigMJHKsbKP4adWWIGeNEYq\njgFlGxlXN8Qm7pJiyPEzkoSHAGaFHPdsSIP+9g9D+7yS0767VN1/41myvgPa\nw7JrY6o7qaYdHjIJWJW5ZxBEbsius1iNO6pk3V+uPGznzFFFKkc0ckex6279\ntpemxQ1hrxZI/pOmJgdICsiabGhAesyuslY4FJlLhLO81JVIOtgkz19txQGc\nWhkR\r\n=sfG6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIARDdr0f2iDQXK1z+9CqQ4TABqJzDirfxJQ9rZ7665g9AiBp0iGK57wQp0+/dj7emfYnlrtkTL8OzdhYv7Quc+F/wA=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.25_1534531588162_0.310579521461791"},"_hasShrinkwrap":false},"0.4.26":{"name":"igem-wikibrick","version":"0.4.26","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"7cb191d9155716f13cbba81e185c80267a994f47","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.4.26","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-RkvWE3qjqjRUdUTxMbLsvol76Yi7AuoiWsL1UjARPYo9R1BRjMdZ+7EZMoRMdd7u5kYyy5R8K0BeI9TId9wiHA==","shasum":"84e707f49f0bf4214923c9a07a0f0c1bf076bd97","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.26.tgz","fileCount":24,"unpackedSize":272486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbesfpCRA9TVsSAnZWagAA9NAP/ijvGKq81WAdDgmOcN9h\nGCPhlEbgfz16jyKRtuFVsuXrtwsZin2N2uq7EmrLaBQTMZdbZ4XMhtZkJJye\nEzVv/eIDGe4LYvf/5cwg+Ax+1obeGnJ6HcpRF4CzVty5CS9NKym7qixOtGhD\n9PjgonHcuABYqLEz0RkOLZvb84PjuxoghE/qXDNfHbsGcjLUjGX3ykS71f8S\ni8jsCwagB7BTzJ+a7IZXgr4kbHoABHf78kW9TDtt2blQ5AJ+sLxs27bdtCuD\niQFGavPlfZVa8mPaKe+OlGJdwZHfkjm1VmgigS/8EKYOtgtrIPnxyq8mhIId\nAZwA3gIBHyPnETfu3Mnlx9UTHgMzxLFBEerS5i5yi/XbH9kFCSdv5CLQZ90f\nMFlNb0C91TnUOEwYrq4gYt2K3fKtuoBxNa4M11j14iQm8irr3Es67YDuZRIG\nUZEwFvOOID0H7OgGHo7Gg8Ubl56p0O1G24RcJ/L3fdGT1hdSDAxxJl3zkzSm\nJtoe4ef3A/WqHBztCTCfmyaJjmTZTJSnWpVFdfgMNKwAiB0IC0ngQig6vBTL\niD2VSGHA7P7EweLvHDnIab7aJqIWn2jTH28oHdf1QCS8nTj41pTDdffpltDh\nL3n3gGtc1LD13kDzND8x5MxUhVAYnvGX6ZWa4Ta7aCLhsKPQQ6DpHNCHVVyP\nbafM\r\n=aTqO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICqWETRfQPGDZ97+qIhcWz7zWVm1zSiv0DQnvWxiLj+sAiAVqd8anTUlFtolFbssAfHKvzevhfXg4ZTiOJ8bo4tNmw=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.26_1534773224386_0.9426362143386151"},"_hasShrinkwrap":false},"0.4.28":{"name":"igem-wikibrick","version":"0.4.28","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jquery":"^3.3.1","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"9b30c3fc0291d39fa21ea99a9b713fd36f348960","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n*Warning: igem-wikibrick is still under fairly active development and may not behave as expected at all times. If you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.*\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\nThis is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.\r\n\r\nA current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### The `gulp serve` task cannot be found.\r\n\r\nTry running `npm install -D igem-wikibrick` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.4.28","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-ZKBJwARi0aI8VMJ9aqSebFU7m2y/YId72gTMhdtCnQ684VLHvRQH9mod/sp5Ab/uq4bi0HSuTNZ+cnLF39qvpw==","shasum":"063d7021ee061f29f6354059b99e5eaca9372574","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.4.28.tgz","fileCount":24,"unpackedSize":273664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbetW/CRA9TVsSAnZWagAAl0IP/1DvgDvoQldY9Z9muu0q\nfJzUNsAWiyBV55cqPLPjFwdA0c1DZ3OascKXiKokkfMQyMI4UmtciO0zlCvb\nAV8RsonQ8IXyzkXcHS7fOJVsDK+OU2oFqojzfFmJ2JiZ9mlF1Y7WtiWKqP+O\npOFNM/fQTtUA3S8BRl9LrwqiNebXmsSAZq8kHIIE5hsZcd3e1ht3WAha5oza\n6PQWwoXkhAESn76PmL84GsbdosTljv0jRxurWEoyiz6QC+0SDZzlUT2p7JyC\nl72xf0LNU+Xp8KUTgKbWBBjCSo6TLg/c1VId5Etr6nxjkDhQTHJrozLDy9rM\nZGDLCYZivp+zR3RP0I9ELMfcd7AkU+oE2puE8dLVc80u0qUcZUYw7PAutxqi\n6VW4ASy70Jo0u366x3OKs0vzhqV1wTy5KvokGNmUflcAODmtEUSZHwRwPzfM\nJBbgEx5qvLAdtApdBZEhxM7ziBT0kwg/TGNbspB+Nd71gIr19Dt3nfcyh3vc\nCGkHCmOOFof/WOY+J9bVI+3LY/X6YCWUcOuMI1R3QTUy3nhuRWpXYs4gUBEl\ne79rlSERnJ6mPGHvjFJdHAlVHVHP86pdPxDSCVzYP5Tx/dMtb101OUKA8cHr\n5gxFjuwRtMPOF9DOqSLdksafb4q9bDlyRHM6tjmDT0Wvb9OivxAVkOorfuim\n3zDH\r\n=T6WC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvtd49G0/Kv/kS5R7PMB+NKLTomzESF/yJ/sPmLds3DwIgYWUY87nEBr8pr6dnORRI9t8JEityyD2tN1u4AE7LuLk="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.4.28_1534776766591_0.16414286743725093"},"_hasShrinkwrap":false},"0.5.1":{"name":"igem-wikibrick","version":"0.5.1","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"2196674fb42c5e1f749582749fccaafc1f464a6b","_id":"igem-wikibrick@0.5.1","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-rDUb7wl9LelDSD4zOCw2wUfGXVngzgutVU7llMgE9J0FEs/oizj6CuF0y7ZBg7xgHb5/y/Lib6aShk0i9yfkQw==","shasum":"9f17f3aba2e170b283c32f22bbda2cf5dd337655","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.5.1.tgz","fileCount":24,"unpackedSize":273663,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbet2oCRA9TVsSAnZWagAAuU8P/jqfVIe+p6RHMrt5SWpr\n5bAiIPOAAUCzIhSLtjbhmR8U4TiQPlZCPCD5i/ngVImfzNdF1Fp47vpy92uz\nDWxgj8v9WC3YmipfDkVJlu6T68wzd780b+D+2GhA8TAHws2jElBGRUmvUsSx\nSAX1LqSs++Xh73c0O9JMU7ShK2VzYpUMP2/QHQyDkgz+kD9duR0QXixxhEuC\n+ZZNVKXjnKoppYx6HGLVCvGnbxBAGUhCRoExesVObThtt7UvZ3IaT0CRc2wF\n8Q1hrcQJ8HqvzjfaBKJEddDCA3a9brsEuGKIOEviHq0c3tA7DMGY+/t6oaCz\ng2JHwYRmDGBM/8Q6u6gu2TcHhRwgMrWfked1sO6oOKrBAGLQn8TCvVeTSQg2\nllg7Cl6HsO7w79C6yc0RjlDPOWDQeVp6Yaf6moTJ+Ku+GkpV4qQ0rXWgnp0L\nnuOcde4Tj5gyi11WBrF8OI3kkbXdFbKsJARPEbP6TJvdhWMYB/dccbjIRJgT\nC8L76XzVdvcVAy3AtuXjZ9UBxPbYaUALMCFuf8ZDN03TdDzuYsmhdyGYLAtV\nyrUs2QuWOAnIj3Se15yuU3kda2YoR7TXmfTQqI9gy3oy4etqSKdglhfFZZk3\nxJ9nVtWr+9AYDkdsh2AeQg3i85rXD6ScTx2Cezd+8pZ84zX10YJ9FzKH7X+t\nm8Or\r\n=uz/9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjfF8VCuQ11+eSsuSUN6SDrAv0doAgp7mazLZF01x1AwIhAJAtEcLFKyWbiabnxTKqzH3HHsUG1FS7Uu7KznTWTqQd"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.5.1_1534778792025_0.3856754251908494"},"_hasShrinkwrap":false},"0.5.2":{"name":"igem-wikibrick","version":"0.5.2","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"0694d8a3d1f6a4a3f2cc38e814bf968529b23e9d","_id":"igem-wikibrick@0.5.2","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-jsRjQuE4mMbVkoJfvEmsUmSvySR9HKB4rtRSzQ0bdePyhQNTZPC5kv1/DjKl4xpfGVPi5LORYudc89Pt3Cayag==","shasum":"e31f190eaf79acab2193f3b897cf6ad6e5da9c79","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.5.2.tgz","fileCount":24,"unpackedSize":273858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbev8QCRA9TVsSAnZWagAAgEoP/AvksYgaGI/cKSKYkaur\n2gqPOhCXTYRzDo6oxEGRyH/jbGXzX6LDynYEfAFLFMCKEjqGseTLKjDojOWC\nFyueoMTT9HNDaFtyApeWidOAZ97Mksyrvy/KrcMcfdSbxpQQOy2j1vVd1xjX\ngDbvryFoIWYkV2ruEkeAa3SAm81+y88Up5k5k9suDSJPA97+yjo4gF0tXBL3\n5ChXgH76HNLLVImAd2vozmzt6wQROsFs9xtvj3qx5LW5woA0rEER8L/DNm3D\nSAbGCk5s0HWIAQqSwLMPmyKI5NWeAgRJNpzXNWntB1cGXpPkGpQaKCFDOutH\nARsdwEwQvhp2H9+T1F3MzqjKK1o+Y3tuq3+3MMHoG/oAZ36I+fyaPfw9qhHD\nuWL8Oq0v2Z4SDGastfRNabf+m4UfNRsW6Jq7bcFvHeo2hF92+GO6cVHqEzRm\nSI1m/ZZUyZdpg+SFpmbtiAuZJGAdAC0kiTPQrZJ5mVHEpjNXmN0yEiq7N3aq\nVQEGS4r5wPWqToHa0NxowUIUZAid46lHX1Mf76yDAYpveywPEcKKRQL0RLP7\nSBoHc7gLAUUMe3QkpUvTXO1aXjH65sYJriVHeI/2ZkyX2SHenkd2ghKmRR90\nZMIHuVvASGLzcgD5AxLlz9ooJ7p1RVYLjMSF9x+INNG7SucOUbvjOMDzGQ5w\nVRLa\r\n=hQ2s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDy7vg4sreo7yjrn+VSgI4NSymIKuEqUSSnQribz4uIjgIhANYs/kHHZ999B9K19H3GV6PlUPBOQF0ZPHYIEmiJNxcs"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.5.2_1534787343824_0.04823995198505848"},"_hasShrinkwrap":false},"0.6.0":{"name":"igem-wikibrick","version":"0.6.0","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"b67f19aa68cdbc77e9eabc4e09f5317695e3dcca","_id":"igem-wikibrick@0.6.0","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-4zF2aC9/BKO4Uy50REokZJ/T8EXwPPXfsaPmvhQwd2Ml4q8pc0qFHiP0VorbedRIUZTyk1rwHhqU0CHGq8+TzQ==","shasum":"96831cbbb27a576d827c33e6a089e80f04626242","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.6.0.tgz","fileCount":24,"unpackedSize":274220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbewK9CRA9TVsSAnZWagAAXNkP/3OxmWjmJFqGhloqow91\nuQ4A2k9s0EcUu1ZxYOzQwN7fEI+hlx0bx/oRHpscvCkpYq8/7podoVJPMfM4\ncAfzk7ODPMRIP7iWIu7qo9dqC45jsbuJAHNr1lMuFGrRxrJmBHwjlEfIsfPL\nq4YXaIUcpC7z4ELE8/XbfAN0Qce08spzkkxqAwF67lLMeAwwv/Cfta3IlU7E\nwnNViz+udntk6/gSQHtdHZLVvj7AZt5oTdPC5I7q1Lhq33eqq6VdAPPHROqq\n/kdxSk5hkSwyZ5Iv0zyrBs25x47GUzh90p7oGRtDWuqDlWc5JMivTKWz8e18\nDO9oJcFtps34m92AawWGGPTWZRZi8OLGdQGDAsJUY2F9IZYXOg1y295UEpHz\n7caypJPqIItkGypOq1cEiv2Z1oTD8hC/CUCnXbuxVSih1rnWlj8IxMFXmBom\nJ5DfhfXhvrs6U8AadMlKB2M3Q9avCrFd5mC9Gs2mFHdpKeSqdVzeFnHR2mG4\nyK9+ys2hWi+UPCx21dETwsC1MkQV75f5WdRt1yQje1bSNVHr6hN0pBWPIJoC\n2QPgkMHnyqrMfkRegmHdTdSBPtbe3/UOKkoQKuOMc8ebJw2NoZRqQV01SkHf\ngnCGmh9seqEwfaWIQ9v1J/79bRRZ6rjl8AfcxCTnckRpPwQQB1ZQYK/lmNUy\nGfxy\r\n=+Ivi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxqhP/yCV+4WTgthtwgI9BaCq8LXnRbhdKgVO3hBBKLAIgPaSwqnsJ7hPZgwP8dJaqDRzRqnG/MNbN027i4dHraRM="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.6.0_1534788284521_0.311889002638009"},"_hasShrinkwrap":false},"0.6.1":{"name":"igem-wikibrick","version":"0.6.1","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"33483575133849b0b2ae396a0d20cd8f2d2c9062","_id":"igem-wikibrick@0.6.1","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-rLvQDY3LWk2SSOUccft6ApV7WI/nb0c+lLNtyR0+4do/FJvV9Mw6zGA4sjEimJmih4litJkVJsc6LQIda8+QIg==","shasum":"f6a0a9187185cd4a4fbffcc167a8560fce565f3d","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.6.1.tgz","fileCount":24,"unpackedSize":276581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbftqjCRA9TVsSAnZWagAAXrsQAJywBoihU8YSDkBfwLF3\nqnVQi8ijKQYCiQchNvJDPcRc/3aikZKov1SeXvyRsCta8B7tOWn6kZokuzvo\ndSG7t++AKQ4ghx/b6KJkJregfm8mFG/tdaaFnyjylK0WQkZ1pmOIFPY7FC/0\nDsAJtl3aWuQgl/6+LEPn0XzpevgciFcs8cl0EWo94AZ0ryFcqgrNVCqPCUEZ\n13boPZSd9O/7OlPu333i12NWl/zm96SksOFm8PH8FVr9tYswDnUPwo21+H4A\n0hpvpH4DDoQBtrPwNNCRfLoxejloiByc7/czCbCxzdtMsDd+Praf8OwErGAI\nG32ok9bdDnpyfp83vNRYcf1gxd/avI3eGHesLzclSWqiBydn8/Hr8BhuquwO\ngFcFUHHerkigaIxYJUWb3k7oDUtn6VhUOdCXm/krPs/GadULSmP4tyIq+73j\n6iHl1eS1DxWuyNDUbeUJMX/FD+Geg0CfFJS+ja1dcPu+bA36RxDVrPCAxnNL\nl4uRzleGhbaSj5+gS3S/xoC0964zLaiwc0caFE0OsKf/klYz6jZ0q2SYzsha\ndsEQiqK9l7X9vpBKPbr1GO/wevJ2B2MS7g0Xf3sOVWBlRA8f11p/y6a411lK\nJFKNqrmU5Pl42Dex6WtIpCiw80Ft08rvjJm39WTnFymI7bgtgHlxJWigUrNS\nz8Ga\r\n=Y8jQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGNeI+rrolgjOvHlHYTSOeSqxHGmYfbSKsAs1oMS/chEAiEA9vzdZIZjNCFthvxh3yYf+B4hUpewUoeIgwk3XQXzEog="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.6.1_1535040162887_0.7170969709505823"},"_hasShrinkwrap":false},"0.6.2":{"name":"igem-wikibrick","version":"0.6.2","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"85288842d6ef81a7975a5c3128f520b8f74e99e5","_id":"igem-wikibrick@0.6.2","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-ZGK6u529IqprFKfAk+8PWQVy6HBtrywDzUqSe2g2peJAMkew7qD0deoSH+/qaH0cb04oXLu14nUnL/TvwA8grw==","shasum":"fdae27de8d665af6b64c516ae512ded54f17390b","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.6.2.tgz","fileCount":24,"unpackedSize":276579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbgBPPCRA9TVsSAnZWagAApScP/iE8bbxO8NHMAc4fe/Ug\nGGYo9++CoZTdKq43v4RoQ1Gy3fKlbfQRdpizyjfQSB135fpKcFoq9kRT2av7\njID1HEjTKZLtitHaDbmifrLfICvNNumfIQ5w7NmmwdsD+faICFaeygU6qSGc\nlOylU/n87HqtMaOn4bZ+laMOy9+4lq6Ou5Vw+VQXMT3rcW4RfenJSyf3phzI\nEhw6l38nFeeWeBLIO1srFIrvxWt+tGM4I3d8UbPo+KrQFUiZXa0rzbXx0ks1\nMflzKGZ1tJkwVSRPW6+7I1TwfmcvV0cIpHQyjgqfyBqY13vgUqlnPSiWIUJs\ngTgaEYNoRuotlHOCg6RbH1taueChl9PXV4StVZDjRN2hgh+xCzyw/qKAL1uy\nJM0k5Q7sgQlCYVMG337BA+1BWpP/NQba47DDnnaI2JVbj94pKeYq85zqcUXR\nA/mgSFqVEKmZY8ahRNBpPHNHyyoTn4XqJAleuRxy/U3oDfUQ9uIMRHJ1HgR2\n0Cw9mAc0nII0NLEE5DDpcUHOE9RfjzS8FSLNK0Rd2Di1DN9mfJKjZkLOnVbd\nCgLTsUGd0DyMLQRZuH/mdgocah8ybEs2XHnIlSn1iHP2SLUbUL2iZBfi65JP\natWgy5M7O5Mq3Qt3PE5kZl3cjBUUzfAQLwniJn4E7pzT8A9Jrc6U5BmvKB+Q\nfKvk\r\n=UWOG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCY8YJtc4MadfTdnve6ZOgfLst4KkTTKgD/Peo/mj+0ZQIhAJqiYGlHIC9KxexijCPLaoJooMpT3uZePwmqdsTGn9dk"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.6.2_1535120334402_0.822319210502293"},"_hasShrinkwrap":false},"0.6.3":{"name":"igem-wikibrick","version":"0.6.3","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"94de852e14e86e2c6b677c812eeba487602be99b","_id":"igem-wikibrick@0.6.3","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-LWOG8ybJkiHyJqLUBDr/devoFK7WSsa39cofRN3DPCZEuzOTvqC0j0FrjnVmo/WtEhL7SWfnRbr3VFSoHTyw6w==","shasum":"e44ebecde2ef48f5bc192cf9df7ab7702b42e3bc","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.6.3.tgz","fileCount":24,"unpackedSize":278435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbgC2gCRA9TVsSAnZWagAAeckP/2umXJnAtL4xNYur3J69\neM5dxOMUp535Rp8xxRjRwxAoDhHaQYWLVH20yvzzoGFrJOeNL73Xhqy1pX82\nCUtllU4hT1yHfGOx6UNawZQLCsLQwcb4OWAn9vKqIeNiDtmWzM6Gsc/xr42X\n/PbylyNHzbd7Xt4pf3/BilhEdgesJTvRIZUHsD+TR6O0300k1PiPSzEhUKk8\nhWOM40EolFpivCGtXa6RwND+NpKlQi2TMAvaKNDSn+iBcWB1qy/XsQO4TQP0\ncAb46pB2+gTbyF5mm9E6LQFpX+Wuz93NUQ2ji6+sUIfjYOh0qqgTRxSN/hL3\n5PxU/oSJH2VkRxAd/AfqA091lmeZxhhQ7Jv0iPEabhX7q0FgAXlHlJ54bVNb\nC15S372meT3K6UFbuKgvRoSP4yBqZQ7zMT52aRVqrPViyUi1eaiwEDCi8R4+\nVySiuvK9iO+OynyTiaKGfsN6kCuO+Z1ldozrNQix3hUSYXuDhl/NSAxFrMDc\nlGxq0C95ESGONcafQz5dgZaWiMvPl8wsFvUEvou3UTYGuhm35cylZOVEb+Sk\nMcy6QUmLeky6xS7flWEasKZoNzZz9OnB7XSpwY6o0gfextAdO/UBI2WKUbFt\nwU6Gw74ODYhluqy5P1IExwDFFXWlxi9nWTmXa3sGNxV8FC8kj7/V3bqT8DRg\ndUs/\r\n=6XcK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAqdVBwFI8eTJzvn//VDHKAXP4aDcseFYAt/TrxN4yzoAiAYQFcbP/B+XuVPWps/BaFFapWQoNc2Otj1TmqdTwjMjA=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.6.3_1535126943457_0.8648300737293626"},"_hasShrinkwrap":false},"0.6.4":{"name":"igem-wikibrick","version":"0.6.4","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"b28949daebb564367d1414f939fcbe3aeeb88c0d","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\nIf you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.\r\n\r\n_Note: As of version 0.6.0 igem-wikibrick has largely stabilized. Some small changes to the CLI will be made in the future, but the tool should not radically change henceforth save for patches, bugfixes and optional off-by-default features. **Please see the [FAQ](#5-faq) before using, as there are some persistent issues that you must be aware of while using the tool.**_\r\n\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Liberally use and abuse the !important flag.** As much as it bad practice, this is the easiest way to override stylesheets enforced by `igem.org`. Does something appear different on the `igem.org` website than on your local server? Find the style that makes it appear different, and add `!important` to the end of it, just before the semicolon. This will fix 95% of these issues.\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a div tag and style that tag. Example: `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\n~~This is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.~~\r\n\r\n~~A current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.~~\r\n\r\nFixed! Both templates served by `generator-igemwiki` now use Browserify to package the newest version of JQuery, 3.3.1, with your JavaScript. This allows you to use the newest version of JavaScript while `igem.org`'s AJAX loads will still function perfectly with JQuery 1.11.1.\r\n\r\nIf you aren't using the generator, update to the latest version of `igem-wikibrick` with `npm install -D igem-wikibrick@latest`, install Node.js JQuery with `npm install jquery` and then add `jq = require('jquery')` to the top of all your JavaScript files. Use `jq` in place of `$` if you wish to use JavaScript 3.3.1. If for whatever reason you want to use JavaScript 1.11.1, use the `$` instead. _Do not mix and match._\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### `gulp serve` task cannot be found. Or any other tasks.\r\n\r\nTry running `npm install -D igem-wikibrick@latest` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\nThis issue seems to sometimes occur when you clone down a new copy of your project and then run `npm install`. Try running `npm update` instead of `npm install`; this seems to correctly duplicate `igem-wikibrick`'s necessary dependencies.'\r\n\r\nThis appears to be an issue with `npm install`'s dependency resolution code, and so fixing this problem is largley out of our power. `yarn` may prove superior; if you are interested in helping us migrate `igem-wikibrick` to `yarn` instead of `npm`, we'd love to talk to you.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n  - Decently complicated change as it requires prompting the user to log in to Google Drive and dealing with Google Drive APIs.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.6.4","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-7KuVLvZF1HHJTy3xD32qTVFdV2DtYRU1IMh63ZUZu8DuPYq51krUq9BKx5L9dpcEX1uvwOE3dwwv8QKvSsrL3Q==","shasum":"c212d1b3b8626dbc32659f2098e9a04ba3b93ae5","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.6.4.tgz","fileCount":24,"unpackedSize":278425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbgxZXCRA9TVsSAnZWagAAn6oQAJllo2/yo5lbD7LIi+2j\nZLLTMwxRYrZrN+PFG2HTTqbao9rdJqaAmQQQaEi6+OoHlPA3SpbD75S6mpm9\n4zX47Zxlv+unJWmf91rFiw2kfZBt8jWrwoB03NNo6JQwWABL8yumUITp+cU7\n1ikdPT3ru4wbldIJKzZO4001uA9BQeGBAdy0Zp4N5NQ7y9HvEL3iCiCYvKpG\nOqELCgTWAti7+XVecUTJOPfdiTYE/udFv3+vhhUub6/CwaUwoo8hseYBdOnT\nD5gVf6GVQER0Um8oea5PAvwymctCaKYmaZoBGA417u/UaDkoxbcaDwN1mam9\nS2/GA/PZZKZ9ssMUc0zrGu3yiAP1+Iu6/h3U63PRjRIktbT7kFDrDEOyru4i\nf0Lb519Vovq/I2J5UMtbt2c0SWPDWQ7I3TOaQs8C/xALgUtXUJJxJ9tuBMbB\npQBObiQC7xPr1BzuD5Yn2vOZlNs6WxbNzIktTEftOKcqxqd4Premli+EldrT\nOxlWMBbFOXspj/WvP61iYLdhLCOoi3oSidbWdLmAqwRX+U7TYC31hQlzEoeY\nSE+PZJvj4JAo9SFx0kW62Qtv2rF0PV1YO+2n1KuUL5LRs4H/u10iJ2fiX3l+\nFCy9psMuCk9IzNnRwbRcn7yC3LWGPtwEJKWOtrsgnIsWMFep9KBfIZOrTJrQ\nohuh\r\n=oiFm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVGpAzahkRWJi1LdTAbkXthaiNKHdTZ+apJRtv+HFmCQIhAOjf+FJUKWlx4BgvDiT8AWOzuP6v/485wZ367N5bYOhH"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.6.4_1535317591026_0.25940973445801974"},"_hasShrinkwrap":false},"0.6.5":{"name":"igem-wikibrick","version":"0.6.5","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"20531820be825ea2275a61a9ac96736d25ccce3f","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\nIf you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.\r\n\r\n_Note: As of version 0.6.0 igem-wikibrick has largely stabilized. Some small changes to the CLI will be made in the future, but the tool should not radically change henceforth save for patches, bugfixes and optional off-by-default features. **Please see the [FAQ](#5-faq) before using, as there are some persistent issues that you must be aware of while using the tool.**_\r\n\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Liberally use and abuse the !important flag.** As much as it bad practice, this is the easiest way to override stylesheets enforced by `igem.org`. Does something appear different on the `igem.org` website than on your local server? Find the style that makes it appear different, and add `!important` to the end of it, just before the semicolon. This will fix 95% of these issues.\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a div tag and style that tag. Example: `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\n~~This is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.~~\r\n\r\n~~A current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.~~\r\n\r\nFixed! Both templates served by `generator-igemwiki` now use Browserify to package the newest version of JQuery, 3.3.1, with your JavaScript. This allows you to use the newest version of JavaScript while `igem.org`'s AJAX loads will still function perfectly with JQuery 1.11.1.\r\n\r\nIf you aren't using the generator, update to the latest version of `igem-wikibrick` with `npm install -D igem-wikibrick@latest`, install Node.js JQuery with `npm install jquery` and then add `jq = require('jquery')` to the top of all your JavaScript files. Use `jq` in place of `$` if you wish to use JavaScript 3.3.1. If for whatever reason you want to use JavaScript 1.11.1, use the `$` instead. _Do not mix and match._\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### `gulp serve` task cannot be found. Or any other tasks.\r\n\r\nTry running `npm install -D igem-wikibrick@latest` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\nThis issue seems to sometimes occur when you clone down a new copy of your project and then run `npm install`. Try running `npm update` instead of `npm install`; this seems to correctly duplicate `igem-wikibrick`'s necessary dependencies.'\r\n\r\nThis appears to be an issue with `npm install`'s dependency resolution code, and so fixing this problem is largley out of our power. `yarn` may prove superior; if you are interested in helping us migrate `igem-wikibrick` to `yarn` instead of `npm`, we'd love to talk to you.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n  - Decently complicated change as it requires prompting the user to log in to Google Drive and dealing with Google Drive APIs.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.6.5","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-ZrY/G32NIL3KbYw4c0LPCAJOdIMN9m0PRAdCi1rniFcX9K7IQ+PDrwb/o879bigYZTyvw9pYd/0COpo14ZLwQg==","shasum":"04797787a9c8397e50ccc9309f1015582c7c11a8","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.6.5.tgz","fileCount":24,"unpackedSize":278553,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbgx7aCRA9TVsSAnZWagAAxmoQAJJjzFJnlXlxKzriL3bH\nUCdQEcoSCPKN1sbQvO4pNOjmktgLVmT/0iSwaerd39upfvMue3M58J6NX8ba\nZMLJ424fJiPdrMzoGTN6y7wOe4pWYQRotq8NFwpmZjdhI9l5ek223qLpmCbP\n9g7fCK4CKaRXN1uqP1URLVZNbfR5UUJShBtga7rV6MLnPW6KmBDybMbY/uVO\nZe7pa7KyroGAdD0XsF5P7AehSthlx8ZxoUQNV0BmuBAJcYvljTLOXmpfCnw6\nIj3OFdo6sxGvKSR1nGL6S4yU9YB1sEkymtSIO0qEjbmM/Lw0Lvf03Fyj1lyG\nC9tJ0MPauKoeOzQNCDzA1T/WhmZ5N3reusXwEhiY4uMjVWkVOT5w9/wi/SlT\nA1zxl6ugwjyHeoG8RX41qCp3nzlEvkSEnhftsJxBmT80UplZ0ARAZcnGVdoo\n3RRas6e3IlmoQBMJNz7bX8vkpITTCqt1lHN2QZkxHPln60r8n2n8Yjhr6br1\nn531Y+m7dHUjEsDAoRAqJYjKVNjg84DJatWSl5Xyyu/7QCQCXSY8dwxjrdnD\nrQ+lK8Obn78oENm54V8f5tvLSCpjUbRLCqBZucSY/3VS0fKlx0Wae4YdyoHF\nMVDFvl+aoFH8UNw6TeAHpkLaWUXUZfeGTQNAMO4/1OTCy4wiGuSo0qH6XdwS\nCxJE\r\n=epUu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICov4YbtjhcdjIyMDscsHkO2UBPPjP3jfCjxDDTaWLOGAiBSg41e9iBFwASO6hpnIuFEDyvAjZI2aasxA117Lru79w=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.6.5_1535319770174_0.6972658910582421"},"_hasShrinkwrap":false},"0.6.6":{"name":"igem-wikibrick","version":"0.6.6","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"309c77b9f0a960e5e93596db397cc171f985f201","_id":"igem-wikibrick@0.6.6","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-K/atnHqii7z2qjb7j7LrS76Ga3Ss2eEpumr8jXAH9KW8YErzRtIFtZsjfczep0OhgNJLH5fyiQV7aIJ1AXBFVw==","shasum":"681bd55bc64f085abb4416abdf05a49707aa3103","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.6.6.tgz","fileCount":24,"unpackedSize":278699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbhBt3CRA9TVsSAnZWagAAPloP/3y2GSzYVBoCthxJ/K4A\nVfZ5PbXVVuoLyo618gAXnbh9rptyQURSe54utAQZdAjR46AduFErrhCn2ZGX\nG10cOE4FhvsqBSVCw/kKtj/mfRaBo6xEOacZp2zlTjEHr/eCMgGR9xyzV2Os\nWjb9E6ykAYgXTLMgiiSe+o826/EC3/4oW0r3KMTub28SJZJfCioju5QhuFgr\nC5Qlz6YydVrkb/EdiLjckszKiJpobLwyWVI/N8A9tqNRCt2WD/6YprgM+amk\nv9EGOwVAtBvslrNQrCBHpcFYzbctjU8hczQRU8GXL6AIMSXuAHwTDW5JUzB4\nJABP9DcRF4/8IfSXsPn3S8328HNo3JTQTqM41afNSVD2HUvm7tLil6PyTsYn\nkshPQggqpVba/cgDCgEri4VaNV8Ru9UFa6yhgzC6p5khi+nXgiKIToOdJvFq\nnovDebw5G6lR1wAztSXKKXTCShs9f+cZZ82VynyEPUvj29dbZi5JHdekC1/5\nA1+LbfqEpSWpR7+OYSY9kCo/111A3lVGbAm3AIL8tn8m9b0hMHf3f19d/Nyr\nu4Cler8NAMgKT6BuWRMBkHLeNuMyMX7bmOkIKFlgBBgl5MhkVQe97qQ2cd1u\ne3GiAHBcWcwyegh3kh8r7/MM98g5Hs4zHE2IbXSD2PHXpAdFfPVsJe9AV+g2\nI9UE\r\n=GENJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBvDpafKm6N31UJf5NHu1e++iXed1Nzhyiz/8DXThiG9AiEAyCcOjRlF4nxoCjMQOU13ghZIPziDDrQQqs8mwKOvuu4="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.6.6_1535384438753_0.06349570258459569"},"_hasShrinkwrap":false},"0.6.7":{"name":"igem-wikibrick","version":"0.6.7","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"a263f3862e718efb7e5f598993f12a2e784f7b24","_id":"igem-wikibrick@0.6.7","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-wpPVC6XcS3hHpCq6lN+/b3uW4BnH2OoB7egmPj/iRrH4344uNpNwPokpLDcuVaG4NDMhjCEqarZHCrInHT/FVA==","shasum":"eef61566a4ea210558d872c3418ea11abcab386f","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.6.7.tgz","fileCount":24,"unpackedSize":278716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbhB7CCRA9TVsSAnZWagAAPsMP/21oJ8Ngms9Qx+EzhIPB\nIjNL0VSpRO8PibPXO5gpiHHC1RsDeZ2+hhUTEVyDpyJSYwKtkcrkyrqQF9dH\nfbciImeYL3zONiac2LEkn7Fupqsdhu0IPgzRze6wBkXfyTvq6zRzYiDtF0+5\nmvbmaTMkw4wmZt4RX7iDeSvOdXx4kHJtc4Y7cb2MpKOMcenYGqkUvkbat5zR\n/fHsnAFNospR7dxOnfZ9yeh5KHOWeyD6P9vJG2xDJbAXd37Qiap1e4FCMDcZ\nShETiy6dXoGYZPSVauue7DyD7/xsX+q0SE1XxwlrowyPHQwfiFdT6fnNHnAb\no0yBOdwfgNV3d/lOdjeDVe6SdXp9JHdD040b10DVuFdu0XMl7iiJtStKSTOO\nZGDtIkhYQgJgeo5SXHUokKalHpy0FpADcyGozaiA7MK75EnIWxf559eoMGMD\ny1zWdgBsJT+eFIrZKQ37D/MisrdEsCa3SXqYNksOvVIe53JhZI5vdYiSYPlQ\nX0XDNFnCeybHk8fIj7yfNJhYDy1DBzzmIsXg3bcJlArA+IOsmg44yimdIg1F\nsQHH0iGwrlGKqznCyHRXm+BU+RNANnl+o+YiJjZMoZ5AieGuNNcxkveBE2iP\njRHO8WMzdHxQQgSR+AHwR7hA7Uaej8K3MY+5aAdOs6bN9FjDjuaoKCJGM9LU\n++rg\r\n=cBqU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG/pm3EOj7yTyDaiVx9se5MgE7vQRoC4cQt9UEglF4iJAiAQ6vGqd3S1KxF50kA6Gfncfn6aBwBwrlY1Qn2rks92Rw=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.6.7_1535385281393_0.5275535844789803"},"_hasShrinkwrap":false},"0.6.8":{"name":"igem-wikibrick","version":"0.6.8","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"d968c0f94161e5f8d3edd867c43aed7ea248252f","_id":"igem-wikibrick@0.6.8","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-doXqVv+YfntHl8XZxayHUnSroP3IN7ezwrMy+dlCcVyWWhydCbB3R5ghEcGZkt4n+73SFs11/T0ZEkMTPYLvTw==","shasum":"ebdb470bc8ae4aa42cb7195be6b2a22561cc186e","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.6.8.tgz","fileCount":24,"unpackedSize":278928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbhCNACRA9TVsSAnZWagAALCAQAKCmGM6Hy3NZnnDg31Qt\npVQXTEMqS9+JotE8XNM1uWkw9h1PuAZLFEtADjzlC5IaUNtTDyA5L9v63+oX\nenk6eYq8T4nPzdL+iqYwTb9xbz1pijHiRLmmjijna4ZEEmoelpxMfFTlPHh4\nwCc876S8RJDl4Lgqhe1Jb3aD8wrQNVDFmHKs0zmGMzbIpblv3fq1vvOk0cVZ\nbMdVmQKyocPg6ow/HAzq6SMLv68PePrnPZGmfHKGYHO4XLGaShsoEsXgtYGg\nWbpCPs8wpNgRvXFLh16aw01ciWV8CtiS8aFG1H8AR4npk/hPL1js2H0rorxw\npyMoeBnXHqVp17AWul8nK0MeCkQl6/JFcJ3K69pXkjL/egQcY4pUCFQGaZ6m\n/bUGWuhLorUNb7XIimG33wbaYSxaazIBqhA/1Rwyp0WMtzmBiUbKi55DiFfg\npUOefmzpsIaUo2819+jGWodbMZRKcf2/2Q1aWlmahaZ4PMvV6RkCDAw9zyJK\nsSjrnpkpYQaiU++KyYkfaDqFfayEBeDtQb47U+kqIHHJAxGwyz00Ouu8hmtQ\nTV1k7T4ITtxuhwa4/m+ZSK2U4CPobHDnegmDqfsxmIejD2jiq1eHY/YAWBS/\nV5s3dx9sAcaNH1JbY298BQJ7XmM20ss3+j+u3ynkC8zZsP7o5DmXphoncMIX\nYNcE\r\n=Xyns\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPWTFoDi+QDzIcal+hutZL9BxK3RVW75jSk20tzj3+0AIhAODipYbPNKO4THcPpcdmhrwdUwOTMwhLesRd5fS6TiRP"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.6.8_1535386432059_0.34140141827225534"},"_hasShrinkwrap":false},"0.6.9":{"name":"igem-wikibrick","version":"0.6.9","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"759b28959be583a7113f8914c48eebb71bb8a065","_id":"igem-wikibrick@0.6.9","_npmVersion":"6.3.0","_nodeVersion":"10.4.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-zexJVecG1eXDpnerJAEKZ8wxQcCSANak9dK7s1hTyiKP5TksHjvihnb9HTUvxBwZsUc95WBAt/NLK5UqroKKcA==","shasum":"941fc76d75eed47ea28aa6bf0ea8ba5c3b86c21c","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.6.9.tgz","fileCount":24,"unpackedSize":278932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbhCyVCRA9TVsSAnZWagAAvnoP/1to+ihERlDqLW+V83XG\nkxZkhfJH150yzKSNPiPcNfMUiAJ58yTyZkoZ0V2b1ghqscFQEPYFZ+Vin0cx\nWSOH07slmn3ZwaCAFG55QpQvYP0z/PWD4YHSA3Ag2kGk6fb6F6o4vVEWDgfm\nf6e46c/e7eziOMijqTkDraPxztZ4AsXT2udyobAkXc2V9ylj7YtH+KlcS35v\nSx4dXLjAxLQRNscZIZO/frNbOt/J6L9K0tEoIiJdHA6e0ZqNrzrQJeADuVWt\n4fwymkacCp8VRLO93+TD3XmzR1uw/iNPJ/3I4Nah2I4A09laT+UAL68BHV9y\n+vksHRqwshfjJRIlBgkfdnxy9mhALYPz6LHPVE0lGVrks2VDUE7xZbxvKPh4\nPtXmFf3Ik098iXu/aOcaaK5lLV+5XU2e3aQCwcDxTETFCiVzLrINjXtNy4B4\nYBrzRaDE82q2L4vxAhIwxbja4quA13v/wGMdRQkxDoeZPUuhsR4bonmDM6oD\nzk8UYf6vgSkYcobAKIacNBmfYZdttVQgkvbtY2KSplzxZQ38/icLiwq4cUuw\nygA7uvtfyd/PQGfKbXyb88cQBAutyMS0yzBEoEQd7cUZK4aZxhXvzLO8dm9q\nQE+FKXwOA2wWXGuO780SD3yJKgQubsDq+sdRyG/7w2QgZWlUyvsVtPAieIOm\nsGcO\r\n=xR6X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFfLx03bMML2pCzX1BhHr9sCE2NRoW6lbjXna06v4iMkAiEAo8iwV3PBcG5HOHTg71HCRnoRoK4RedEq/3cI7YjnzlI="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.6.9_1535388819014_0.39829095722934493"},"_hasShrinkwrap":false},"0.7.0":{"name":"igem-wikibrick","version":"0.7.0","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"8a9d8bd6b418d375941cbf7dd06e1803ac04f8f2","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\nIf you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.\r\n\r\n_Note: As of version 0.6.0 igem-wikibrick has largely stabilized. Some small changes to the CLI will be made in the future, but the tool should not radically change henceforth save for patches, bugfixes and optional off-by-default features. **Please see the [FAQ](#5-faq) before using, as there are some persistent issues that you must be aware of while using the tool.**_\r\n\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Liberally use and abuse the !important flag.** As much as it bad practice, this is the easiest way to override stylesheets enforced by `igem.org`. Does something appear different on the `igem.org` website than on your local server? Find the style that makes it appear different, and add `!important` to the end of it, just before the semicolon. This will fix 95% of these issues.\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a div tag and style that tag. Example: `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\n~~This is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.~~\r\n\r\n~~A current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.~~\r\n\r\nFixed! Both templates served by `generator-igemwiki` now use Browserify to package the newest version of JQuery, 3.3.1, with your JavaScript. This allows you to use the newest version of JavaScript while `igem.org`'s AJAX loads will still function perfectly with JQuery 1.11.1.\r\n\r\nIf you aren't using the generator, update to the latest version of `igem-wikibrick` with `npm install -D igem-wikibrick@latest`, install Node.js JQuery with `npm install jquery` and then add `jq = require('jquery')` to the top of all your JavaScript files. Use `jq` in place of `$` if you wish to use JavaScript 3.3.1. If for whatever reason you want to use JavaScript 1.11.1, use the `$` instead. _Do not mix and match._\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### `gulp serve` task cannot be found. Or any other tasks.\r\n\r\nTry running `npm install -D igem-wikibrick@latest` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\nThis issue seems to sometimes occur when you clone down a new copy of your project and then run `npm install`. Try running `npm update` instead of `npm install`; this seems to correctly duplicate `igem-wikibrick`'s necessary dependencies.'\r\n\r\nThis appears to be an issue with `npm install`'s dependency resolution code, and so fixing this problem is largley out of our power. `yarn` may prove superior; if you are interested in helping us migrate `igem-wikibrick` to `yarn` instead of `npm`, we'd love to talk to you.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n  - Decently complicated change as it requires prompting the user to log in to Google Drive and dealing with Google Drive APIs.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.7.0","_npmVersion":"6.3.0","_nodeVersion":"10.10.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-7ID0C+wyEvl72O7dNJalhS42Q7lXHKRS19HEypAzXkjyvfge5YLnxVK6O6hipiWT+FPmSHuFEmdGQMxhMpWXdQ==","shasum":"15e6e199f0283723feaf604071f47270869c60fd","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.7.0.tgz","fileCount":25,"unpackedSize":282892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmzOdCRA9TVsSAnZWagAA3UoQAKQUGTB0/nMz3lhXtgWv\nwj5MS6+buXxUDK8n+FcBg/OkALT5PnrXIMh4XLqF+ffajwYJc571R+p+YZiR\newBwi25ul2TbuwNr85+zjpt1TK6nXU+8OGLxlB4Zh3uYnCH7cC6wyk6/556D\nHbBq6HbqWcPNu1PI6LikquMyEvEvS7arrkv7O8VqjnwYIxl0uBBLUBMpdyMi\nfhPJM4muNYu7CVF34TInqKpoyq85z8+wjFDBstrYrp9ZLI9GH3v70ft7Y8T9\n6MbA2UXgfiKEzsKWud6r0shQvWTGfGunP8kWqngqdTziHKnQoBltchAKZjF+\nRFZ/pnHSR1/kXesTmkMLUujZbm29DUirmfjpr+YQbrnDn2tBy0RmSX+bkCRy\nF03jC1e+2rgq0r+b9wvZKh5ppvgEDi590OiIwCb6XNswEVAw0QgDsOCG8d0F\n8K/MUbFRqRuJze7L9bLAg8Yc7/X0q5SaNLHTuWqEylOQUvxfqN+fXxxlkMAd\nOgzf1XaBOZzjzN3j5INXLbi98ZUT378ONcAh3NkWcPwk9+J34wuznRSUlsvv\n5Mdi+NCOGrW/YqLy09xdOyHdRUjB23hwhceu6KGWe1hSdv7EqkhLU0+AsxfA\nRIPTdGh1JywAphIyHa+7Av2KDRFv/w5AT+GwzD9vKjHcIV1cLIRKmxDzn/9U\nNs5m\r\n=xnnc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1WUbkIKhw1/0C4jqoWvSoeHb7g5tH0arzbMJDJaqauwIgMgTJ3t2RFJ+ME2B1r6R9gOHJbquRiaXRd3g7y5NKwdw="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.7.0_1536897948524_0.3569966284866968"},"_hasShrinkwrap":false},"0.7.1":{"name":"igem-wikibrick","version":"0.7.1","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"c48a5961350522805e3b659ce99376e45539e42b","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\nIf you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.\r\n\r\n_Note: As of version 0.6.0 igem-wikibrick has largely stabilized. Some small changes to the CLI will be made in the future, but the tool should not radically change henceforth save for patches, bugfixes and optional off-by-default features. **Please see the [FAQ](#5-faq) before using, as there are some persistent issues that you must be aware of while using the tool.**_\r\n\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Liberally use and abuse the !important flag.** As much as it bad practice, this is the easiest way to override stylesheets enforced by `igem.org`. Does something appear different on the `igem.org` website than on your local server? Find the style that makes it appear different, and add `!important` to the end of it, just before the semicolon. This will fix 95% of these issues.\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a div tag and style that tag. Example: `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\n~~This is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.~~\r\n\r\n~~A current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.~~\r\n\r\nFixed! Both templates served by `generator-igemwiki` now use Browserify to package the newest version of JQuery, 3.3.1, with your JavaScript. This allows you to use the newest version of JavaScript while `igem.org`'s AJAX loads will still function perfectly with JQuery 1.11.1.\r\n\r\nIf you aren't using the generator, update to the latest version of `igem-wikibrick` with `npm install -D igem-wikibrick@latest`, install Node.js JQuery with `npm install jquery` and then add `jq = require('jquery')` to the top of all your JavaScript files. Use `jq` in place of `$` if you wish to use JavaScript 3.3.1. If for whatever reason you want to use JavaScript 1.11.1, use the `$` instead. _Do not mix and match._\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### `gulp serve` task cannot be found. Or any other tasks.\r\n\r\nTry running `npm install -D igem-wikibrick@latest` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\nThis issue seems to sometimes occur when you clone down a new copy of your project and then run `npm install`. Try running `npm update` instead of `npm install`; this seems to correctly duplicate `igem-wikibrick`'s necessary dependencies.'\r\n\r\nThis appears to be an issue with `npm install`'s dependency resolution code, and so fixing this problem is largley out of our power. `yarn` may prove superior; if you are interested in helping us migrate `igem-wikibrick` to `yarn` instead of `npm`, we'd love to talk to you.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- [FEATURE] Have `gulp push:` tasks log any uploaded files along with their hashes in a Git-tracked `uploadlog.json` file. Only upload files whose hashes have changed since the last upload. This is important to reduce upload times AND load on the iGEM server. Currently `igemwiki-api` attempts to do this by first attempting to _download_ the file from the wiki that is being uploaded, hashing it, and skipping it if the hashes are identical. However, either due to a bug in `igemwiki-api` or just igem.org being inconsistent, it sometimes skips items that should be uploaded and uploads items that should be skipped.\r\n  - If this is implemented in `wikibrick`, a `force` flag should be added to `igemwiki-api` so that it doesn't bother downloading and checking the file. A similar `force` flag may already exist; I don't recall.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n  - Decently complicated change as it requires prompting the user to log in to Google Drive and dealing with Google Drive APIs.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md","_id":"igem-wikibrick@0.7.1","_npmVersion":"6.3.0","_nodeVersion":"10.10.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-muJR/Jawrz6wPOtmvrEQ8C7A4jptD4AihzM9ZOUDFBjJjK+ot90l/yeUVjVrYde10VmHcmI9Rua2/n5Zj2yrlQ==","shasum":"ff10cbb69e65dde287a643ce9f57b604232f65b2","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.7.1.tgz","fileCount":25,"unpackedSize":282704,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmzZoCRA9TVsSAnZWagAAdioQAJYcekJRHjpM1eh3vSxg\nuZI9dJYOC4rBrBOtQEHJJubpSek0E3l5VlVTfbsPSxH2wP2KWWccKkvqwQmd\nePlj+iCGUmOHXly6ZDqbXG5l5VGop9tvP1sAKzhM8VpQuexOQE9VvOKYkwOJ\n2AIs0AqsWJaXKycbx1ACdRX89cPpESRry+ag0lnvn7L2YbPbVIH+UCLx6V0f\n50WZdj9t6sFG0noWf2NUjQxVP3sxxeJflF52xIsHipc6fhmR79GImSUWVZJu\nNopvkJiRAOMdF/EnIhXkqt09YCVXOSWhrPC4YkJHTxMNVq98yz/XgFlXUNJz\nthZWzld3bd1ozbWRgvSVG1FlpWIvVf/Ji53xkb55GmdcpusI82thhwHJRhy0\nw39eg8Q8KHfgnk6DVo0Au4Yt19AMhJkmQibxQxeTvCIk20biyJwE7yXt8i1O\nxPfxdRMMJQCPc6mTPBm8Hf+V6dH9rPCPWMh0uXRf3dJsm2q8coZ6F09Ie8iS\nSCMnYrKlcM1mkqJhG2n8/5xSztusc/DGTHKaQOJn0aD6Mlr1m6WYy3v0gsPF\nw7MpLlV1T+qQNR+SYVkfXS8r6a9dFJVacioQnbcAdBy/i6ygEYU3ZqfW27tF\nk71t+wr3xGzdSknGdzUhVAcyQBwzRrQNJvvv6+WQhjn3cCRUn1zt+Kn13LyC\nt71Q\r\n=14SP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3otyTxUfnwFRG/0bgENSKso3EUKCH65gC1qzYKHQm6gIhAIFVQFsNv57Tt1kpHjl5AHgsVQQN0d9+Lj+p/BC2DxLt"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.7.1_1536898663477_0.6976707922103702"},"_hasShrinkwrap":false},"0.7.2":{"name":"igem-wikibrick","version":"0.7.2","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"163b54d47d27228a47ceda55b0caba2aba0d94f4","_id":"igem-wikibrick@0.7.2","_npmVersion":"6.3.0","_nodeVersion":"10.10.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-H3LwK5T0sRYcFme8NEZdTcVQQNdrvwPwl8tO9645COdDoPHrpb8WI8n9uERDl5mQoKSO/OR56uAyog53b2vgng==","shasum":"b389fd669fe6e09a07bfaa70e72ac141bf466e4d","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.7.2.tgz","fileCount":26,"unpackedSize":304439,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnZFRCRA9TVsSAnZWagAAytgP/j9ZAZZY5/luioqF3ijn\nTcOtfc0c6iCIJOy95wtlg6GvEcn9dG3A3hKuNsyPddTTNt6GmGi30IPjtTzQ\n2AjmSkQje9EVtbzw6/EIjeEMVXluQvkmb1SQ4aMeuqXK0Pz4rP91ZzwCN2aO\nNxklDVaxa4aAG7fhIv5RwlTTuDdDcVgHUN1WFnVdheffnG5bBBVlAyZgmkfu\n4qXr4MgcqfORZB0xc9SnURM+eizPqyR7ryRne8eVSgGxYKfKxn3hIgkH8hQW\n5btw5QevI63eNbQFACS031mfiiQbwfHiBz1YEofERXmwcyKGazvmIFMfl56Z\nnigHHiFMwHE+pYAYuDcoRw0o1R3IEgfiDcPMFobUUl11qr+zOF5swW8dZkeQ\n3q8pvwW35x9aIF399Z/JIxqBc65uNEzzwbMMG+BDC6rY+SEDEB/dI8ufToYB\nrkYfeyu5dsGSaIjiD2usWSI2MHCfSs2k4wlQYeL7R7mWn76PYA4nZnHVRudj\nsmaOhqb5laVKjtbdIRzO10pOEVeH4w9jofHql44oBulfh1lZ18GmXnEnPict\nwx+mC4pWxPv5EcEkWcOsFU0g3ZJBAT4GbEFAyHcHAyUrBsthzZBlP7aIjT87\nIB0zrCTvSzynEpwGtkJ6yHm3BI2ATistbxHOio3ztqYyilA4Vd/yTltdD9C0\n7lX/\r\n=/gWO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA9WDy26Gt13ebkFrch2l6Jy2Vo+IWBTSoomhi/hg6zoAiBasUY4ovoovDbXUKMJUpxNGgmJgg+9PVMCegm3skplhg=="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.7.2_1537053008154_0.786060032453594"},"_hasShrinkwrap":false},"0.7.3":{"name":"igem-wikibrick","version":"0.7.3","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"github:gulpjs/gulp#4.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"67b6cad7bf4b6991e9b72da20557382c79001ea5","_id":"igem-wikibrick@0.7.3","_npmVersion":"6.3.0","_nodeVersion":"10.10.0","_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"dist":{"integrity":"sha512-jIdf+ctBecfbMjAXjQ7tb90TGYe2qfmhiu3KuKUy/Pz2R4NXx+1z/veF6ct8eHamBZP9cupYyT0OaWnYyRTUXQ==","shasum":"60a0c31b538d71f9660f0c555ea663e507e840e0","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.7.3.tgz","fileCount":26,"unpackedSize":303812,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnahDCRA9TVsSAnZWagAAfwsP/jgrRNfQI0KBE2fOBioF\nsQ+H4kaok7xQ6bfYheeBe8TY0tpOpqiSzDgyiAIY4l/Gnx7IDJOl7CBql//A\nJjGAAMXHP54NoMbABNpwD6NOybdoPE/pnZi3Zx9u04oj99JPS4CYN9BSsVnm\ngrM7Beei12udjhxNnZcb09qv5JCsjcYh6WrmlN1B1RszpnVbfU86mvdBdqVk\nwtWiAR45XQLt5drySXHPtZQAYOt876TNVbf8d8wKxsL3mlZuOteSHRDZsE4w\nHnjP97gYCu3O7OHLnykpZg9Wj+VB1WkxPu7nTM1c1ho6nl5AqI3M0gxaATfH\nVY/hMUidhJSNwOLQbziOAjdw+6t2pUBC1G6/G2wpcZjIiCFpQvDaePChq662\nEFUA8YDNcboc6IbO4TOkB6mzntjgZ/3PnJW030vjgSGuetICmvEI/tqQPMsk\nxu7AfOz4wIhl84i0W6o0cWcu1JEEUHMG8+ghkiMZg7JDredjM4dLftgDWUF9\nnFhAN9mLcHtrhhozblA2Bpj5AScaDK30JNCjLXJD0kOsVlZ7yEn5oUT8BVFw\nmSqZgEUq+8CRSBC6U+BwLZu/DJyT/44jTEvbWOa6i2DQM1bkitvTDnbrvW7k\nAhacF2/ckr0q6sTMSSEv198LegaLhhCdnDCuXDKWiweFJagabE9/EmMdDFgo\nArVF\r\n=0xxa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDUIeH5agpL9+l/p2cxAJvro6bXPmArdAXemX9Mnjo/QIhAKiYc+nuEeDFb23Fd8PnAGJxlxt8rYMz48IG1pmVzvJS"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.7.3_1537058882067_0.9457531392781908"},"_hasShrinkwrap":false},"0.7.4":{"name":"igem-wikibrick","version":"0.7.4","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"^4.0.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"bc424bae3ba547c85ae232cb006049b21e117c56","_id":"igem-wikibrick@0.7.4","_nodeVersion":"11.9.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-UhbD10IeA7sp0zovFPtG3UUp1H8Pi35nAUQLqS/pGHhfb9GZnoeXZdEtKoC/uSI6puQupzS+CSKRd0ahOFfmkQ==","shasum":"e4660421f7f0089d6c16dd11c3b4633ca9b5d0f0","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.7.4.tgz","fileCount":26,"unpackedSize":304416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJjziCRA9TVsSAnZWagAAxjUP/0f7XiG68d/Wuw0lAEhi\nudpikN5zMUjZ58N5QCPSE8FKB9alyi4BAJb+FwLuRa7KU2vZhlGsIN43YyAM\nIT61TBpWel0xCHaVwhe1YMW4OPS/0Qj1Xt5SS4Hwckl3O95ZHoqlgEtKiaPS\nKK6/aiIQroxPtksgU2RDNAB3SOJX/jOtomifqNc/xwaFS4ahIgO/lL1dyVsz\nlzvyvrkWE24DQvsDfBL1x2gj6RsVwpEZD49tX+zG7LlfDNgjhnEMJgaCH/q6\nN/XXpkL/q+gVyeKLlBacszOfS4jEJAUHoQ8/a66/uI7byQZ9Bgmyw3wfGTVn\ncW1ry7BhTe9u3Lfbo98E45VssXsr1pDzgHe7gw2RI9C8LV4lCytDXkRuiQyD\nIfDxrZz1BqQXWJeJzhq5AIaf4sFrJgXgeqsjZOJCW6V0sAa6WscrjoC04sVQ\njfN/OvIw5fVfXzwW+sgwg9GwFocVREFFP2c9CzXwqp7D2vrzDhiuWEWtGMei\nxxoidwXir+9r8FpKdHRmAQGDHo/+1brud+tLVtU/CRCn1uQJ7GopjjuzQujD\n+W6UPrwbf5JVoEOWVWPKwCMqPXeN7wx6C+gLqOmh6pTgtAbxu5lBkGDJJg0k\nHxTDR5xaXrXpNBmg1RDT8bMJ6Ve4ATaCTsRtHxVHfK6LvAmkcnMLotM8xan7\nvOUD\r\n=n1ZJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA7//Mlj/VIWHhCaSFp1hqsSCcnzBjgXRqwKY5yxmskWAiEAxR+JhnvNKm3wkKWma+ORxfUKP5WpnblKMSW47TK5UZ4="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.7.4_1562787039680_0.32863712776906717"},"_hasShrinkwrap":false},"0.7.5":{"name":"igem-wikibrick","version":"0.7.5","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"^4.0.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"b0e46345b78ad652aab39490582c35a8236aba1e","_id":"igem-wikibrick@0.7.5","_nodeVersion":"11.9.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-iChKlkUAwMoL+WsvpsDGknrly4V4u0mwPwvxBTychuHb0Jr7Rvg8IOZpmLdJqVJ7Pi4mtofSesik7j45R8K0Rg==","shasum":"dedd38397ec22472330f655f07c248b40e653441","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.7.5.tgz","fileCount":26,"unpackedSize":304803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLysQCRA9TVsSAnZWagAAWIUP/ikKn3poSK9CKTMAf3Pu\n6UZOV/Dhd2DvXDt+c7OOEDYM6TKE9DJDn3W0pS5psipcZ4l4ONzhAbJyT8wt\nW1HCAdtRiZnpko2PO41v93/ric62TerABmYO/yQvIbfzlKtyrvcr4+r8i2CN\nXCEdYNmECOPqSXF7HKADVaZwMhtDuQdySCEo90pN0/57LZ3D9ROrZdqQL7W4\nwJEle0qFD1IjB0Qx7B/10kH9y3PIncK4paE5PDe3FuKT5tzaEJ8zfoRoczSL\nKJEYljKuoc27j2eKkcnK6Gxjm7WUWd+0cIS1DAVs+brmKZIH7RiVn9jf26OL\n5+iWOAse+4pAc5xtRnzW+fsFLZFyR5U8HMe8QQU82yIqAkHzZ9O5Fotc99tk\n5+OlQ4FoflPhx1+VtvybVzrLVT0zFfZ4L6HGleCIarTeBsspPGeqvoXvpXCz\ns8oJ0opofvkRzblX+iV/7nLClqbyj3tMObscvAAvFCMSpxeh5Y7xBbp3ldZp\nYkLOEQ/M30b8oJRBCwVwxHHGw2X+5F14iCf6vu/hkjk5Iw7I/ZUVD34opP2I\nRm7Uxb7XBtZ6D7LcoKi3kRn6pE6z8PkUug/Zbvbca73QPJ6f0u1SY72igVrp\nVOn04sehPI2ym81X1zufxH82izf+SN2TnZjpGzlw18AfCBYwI9Q+xQCx6TKA\njvSO\r\n=mmm+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDq/40DaE9Bj78gKn9l9uDnr30/gApWrr0ZuHiQNnkNmQIgCSRMAwUy70oFtfw7GT233p4os9qzcRNU1W8/JF7zzDU="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.7.5_1563372303634_0.8604979122482397"},"_hasShrinkwrap":false},"0.7.7":{"name":"igem-wikibrick","version":"0.7.7","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"^4.0.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"2323c0b5377c06125606d86d779e8a7bb042e9a0","_id":"igem-wikibrick@0.7.7","_nodeVersion":"11.9.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-eFuimOJ39JLzrARFu8sRyj9YtuyRwbFuvH0j9lcugK5yB6ybqnh/JGjV/7Say94DSRIHPAwqotZHnHS2dN9/bA==","shasum":"6faac21e6e22fcaea817e32e5c3bdc7a7fbdda45","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.7.7.tgz","fileCount":26,"unpackedSize":304810,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLy25CRA9TVsSAnZWagAAnYYP/0V60RdHiTA75vhRDXhG\nA04JO6+r544ivq0ANC3FF8aY5eARrF6nxBkOpaJ19gVTgPWvILeGJJaZcizG\nGjkGgkOo8MeLiP+BDYiB2b5SC85YpBTV3qIMMF78+RsnEO98j2YrDR5TvZpV\nlCYEj+gbecUWrbTOxobMG2iaqX2uVgh7xz3B4nfpVfUw1awEvup+ro7EoNjM\nRu8FSKAWBPym9YlkPul6CIZ42TbeiTCPPdlzh68ZhkdOLm3kEfr6xfzCWeUA\n0T6HBjsU3iAkJFZgUq+uj1IcI4Zr6sCMgLnh0gMtTI69PKGLBh/9Jc58j6uk\nAanmK+oqhjosvS155ucyNFJaGYKDJjB7BW/XNqHUR5D1Qw+yCNyWrt4z9BxX\no3P5NJL68DONZ0SREqIL9B2Ot0yBEG2/CDdh/0dYVQKcCKSXniExqp/UZUZI\ng8rcLVO8/2+0hIIbGgmdq2poIu0eephhRaoQSezmZ/eanMOjqnCMPGGLat6x\nAKY8jgBCPkUcCJTP7Jxj0B/JAZzZmwqI2oh/Nxejz5N3wgwH6Ml6uRPHDJ1R\neqDdFWtcWAIl7A3eBjbJ+xs7naJ/dfdLqzOMETBaT2PNml1OjvAX5ZmTMTbZ\n/GmxmDnqM5BoJOEnV80pTU/DiIN6WQjWw3MvkqyLDehkLQ3OnQy9zzEsaXPa\nDxHE\r\n=O37Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGewSQdQLvW4E0BvzUbpqblG/j69JOjqjf1CPCbUrW7zAiEAqimPZnmPQNXeiwzQ4jDUddVUyO9SNYdk7QN/SGfCw+U="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.7.7_1563372984600_0.5404368303405647"},"_hasShrinkwrap":false},"0.7.9":{"name":"igem-wikibrick","version":"0.7.9","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"^4.0.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"698a9d27e0afee2c3972209c0ccd51bb44fe74e2","_id":"igem-wikibrick@0.7.9","_nodeVersion":"11.9.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-mdzijhPbNkQbV29OEI8Bg2jExO+26G2Pp2hGeImnTgBsQuLfLrHeCP3tjiy9/yld0ZgrnoDDHrmXbVXHy5ew+w==","shasum":"36bd51e90d4209994e44d87e2cee8e2dd1042c3d","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.7.9.tgz","fileCount":27,"unpackedSize":304861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMJFdCRA9TVsSAnZWagAAeB8P/jZJ9sM6VNBMIr/1MB4E\n56w1AKwNPF1fZpK9ZypyoVDXBxM8r7ab4gKkmfLYs6TFc6Q8jLmHmFnzP/xW\nAry6V8xix4hp5I9D+uKwX0BaDzDhJKQng61ugwDzvA4yH4YGnh9wjwjydZ81\nncj8i4Ha2zE8mABUbCXayzPN1+aGyZqVRkxnp8frOQfI6hWTI80lTBr9lyDY\nT3r4dnzQVgAK4d9D0WuDkvTdNazJIzBspQ52pToU7aiO8tKcVCqIBRnFlWyQ\nDOBHWYFt33eaIQevk6WxAmV3RAvU3NTSyXe+lTW7zmrRLwxwt8c4uCUh2JHp\nTowLXn/cxp7yXCTDGIDDwGMxh/YNwtyf4hMy/0p+qQVGS84FwT+XKGrH7nYc\n3xG1sTxM70/z6F9ncVEA+ruwbmp15N3fbMpcj4Y6vzIK+0PaBzxvZ7Y/lP5+\nyIMRuI2tcDDfuES+1q3poB37u+W9465CFUTle8hzKl+fI3oHG6R7eWVaOlFp\nvSnzphgnBA1sz+Hn85LRJhFsCELr7Ki4cQZxCNIk0Yw8r8+vKa5OCgF6K8C4\n3uUxYp7GKa60h3RzqUOfqmX0VCHcQVD1bGUS85f/X7NTkXRjZ8rkOH0hvwLS\n4oAPIh9CXXJ1p20zd4AVrI/IshnJ1fjD13J//8/fk6tVIUZePtU91u5dzB49\nMjOg\r\n=luH5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChtp4ws6vKcijq2ryu6oh7BGNRFYucKP2TTENE2D/fSgIhAKF1LHNQAvjrcXlL04d/zZqJAVKMHBspoDQDKsM2lkF0"}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.7.9_1563464028989_0.9618706255892588"},"_hasShrinkwrap":false},"0.7.10":{"name":"igem-wikibrick","version":"0.7.10","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","compare-versions":"^3.5.0","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"^4.0.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"e6733b8da362931b945f25d935049ddcf2067b91","_id":"igem-wikibrick@0.7.10","_nodeVersion":"11.9.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-TaBiGt8c9itLthQ0FtuSz2LHdJqJIcNojGlrKZpkhDs7jDkxpoHY1vUpHW7eA9UJcynu+Nr7MtIKgq/DpuwCXA==","shasum":"f2cb04d4c240341fde9205a9901027b987f5da67","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.7.10.tgz","fileCount":27,"unpackedSize":305808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOI8LCRA9TVsSAnZWagAAwbkP/3Y7obwI8NlmC38qYaaD\nJGvkDiqbwWyI48UgNgA43lyOtZG9nnFDsaX7vmKbbYIEW/IpwXVXd7SZeOHP\n6UbQTcA6+84miVv8UEsUZlom+VfEyh9KvnNV8yCs3M1GQDg+WbhD4Y9DWyI7\nhEAoBfr4Gh8wRNJfA6bGl2lBrKRc4YIN7+69HLv20Q65NtmjiETuZW97bTCN\nmVUVTxi4aN7d8X6tDen9TL1xEVCc1niI+SvYQk/p+m7sv6Zu9Jxva4MO8iPq\nd8KQbwO1q13M040AP4yyZLY5zU6AlkBP2Ee59qn6X1fX2wimH7xIOS6x+3cN\ndbxgeBlJsktJEccdtfBtR3vBgn3wcewauA8TaHlPF4OOKO8Iqy0RJl7Zg00r\nkjoR4ROU/sHtWR5NOnKI7VejHcPvgTM8Li975JlOXz0BUwAZJ8kQ+r6tDslG\nQfkfe0ef5rlpCbTOgXHV86bW1TpL2cvYNy1yG4tIFLt9hLDotEXjUZkVJejn\nCuPvRCeLgSh/5wmZgQ5ngp1GjUHAafG5qp1R5J8ljHm4Z4xwgJVk973jNp0Z\nEZaqz5pmZ7THvcbwVtBuo0ZZZqMlZENJl3UbKtVaq3RGrfRxDVpuLK1JJnOl\nKJNDrljb07iFuyc6QeL7n5Pexr870u16uYNDjMGbmimzwXNjwkrKzKsV6wj4\n4AAS\r\n=Ekwu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAsdHPVJ82scyXnAMak0ZJLuiB9QdodeVuaI0A6E2nwBAiEAve9WoejxBXj/txMrTbWMAwApOpNyqVhU7D5oaTz0CU8="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.7.10_1563987722794_0.8898839545576855"},"_hasShrinkwrap":false},"0.8.0":{"name":"igem-wikibrick","version":"0.8.0","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","compare-versions":"^3.5.0","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"^4.0.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.0.1","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"7d5172cf35205e7ca839bc26ea81577fc7993344","_id":"igem-wikibrick@0.8.0","_nodeVersion":"11.9.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-Kt7/59q7zJ4BszwHLLm5W6CUUzPlOr970fgRJXGsarH0tHP1ZHxG0xmUqjx08dZCI5gsXVbEKJl0Zsho8QLiXA==","shasum":"648749e484c2aadfb0d0217b156f0caa16fdec99","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.8.0.tgz","fileCount":27,"unpackedSize":306825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQeKTCRA9TVsSAnZWagAAI/wP/3NzwZpsavRPdzYY+ijh\nveYwLg9OhYTjV4QBf55X+kGiBSUYnir3kRyZoCbBeI6Kk7L/vaaAlPqFMDBd\no2LxHDaB0qp9F2+RNoItUd8WVEGcFAXlamDSDE9wOt+4Nfq+nZx8QfbY/UML\nAT8fqqglO47t0bd1EXkuqDUxpN/2Nz7HRZltlNoInHw9k0TQ74lUd13MNaXo\nhlhxNoXXLKdrhlkbFMKPjDFIx+QRLEJWnM/LWtwpN3DIAjbv1aNlA+HkhZ23\nTodr2YYSiNqq2pVbsgmbZalBwAiJgBNtJJEq2w/2oyW8PpQlwUBYrdF41ZEQ\nDbULZQL4LfJqdZdpH/KGR2WP5QX8DtXLcBkoksz8ENuMJxpHDP1tZRFk6fmd\nFePggSd9BT4Za36dMsqT6L/ZA1toTJfuroTPD+WZnulIpCDsE1OfIAai+B4j\nOhudYm6N5/h86S3PgO8uHCovFWDtCXs/1yRVnwDqnMZERHdb54XNmiFi6GB0\nRm0sPprfWftdoUG+NvZX4iUWLPdm8b7sANbyPHXDczDOk0WOFA25Acq6jxK0\n5M7Go5reXdZokCsfJ8va6BglcG4fyA42PSus5zd0fwDN01oNRJ3Tk6bxUVtY\ng8v41LLe9vEkM+cPAdGc1o4GaorJYASG3zHHR5OAgIuUSDJuR/w1IkxI6YQd\nwTLS\r\n=VL+U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJxaJlOn1ve5NACUJSJbuURnkyk9cZyJRU0+yIkvyUtAIgVEchE9w9NcHy9vouxlNqSJHGSjaxLsDxuuQHlrsVELE="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.8.0_1564598930866_0.5102420285938369"},"_hasShrinkwrap":false},"0.8.2":{"name":"igem-wikibrick","version":"0.8.2","description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"author":{"name":"Dylan Culfogienis"},"contributors":[{"name":"Grace Wu"}],"license":"MIT","dependencies":{"autoprefixer":"^8.6.3","bluebird":"^3.5.1","bower":"^1.8.4","browser-sync":"^2.24.4","browserify":"^16.2.2","compare-versions":"^3.5.0","del":"^3.0.0","delay":"^3.0.0","event-stream":"^3.3.4","fancy-log":"^1.3.2","glob":"^7.1.2","globby":"^8.0.1","gulp":"^4.0.0","gulp-cheerio":"^0.6.3","gulp-compile-handlebars":"^0.6.1","gulp-concat":"^2.6.1","gulp-csso":"^3.0.1","gulp-declare":"^0.3.0","gulp-google-drive":"^1.4.2","gulp-header":"^2.0.5","gulp-hub":"github:frankwallis/gulp-hub#4.2.0","gulp-if":"^2.0.2","gulp-imagemin":"^4.1.0","gulp-markdown":"^2.0.1","gulp-pandoc":"^0.2.2","gulp-postcss":"^7.0.1","gulp-rename":"^1.4.0","gulp-replace":"^1.0.0","gulp-sass":"^4.1.0","gulp-sourcemaps":"^2.6.4","gulp-tap":"^1.0.1","gulp-uglify":"^3.0.0","gulp-wrap":"^0.14.0","igemwiki-api":"git+https://github.com/Virginia-iGEM/igemwiki-api.git","jshint":"^2.9.5","lazypipe":"^1.0.1","lodash":"^4.17.10","lodash.clonedeep":"^4.5.0","main-bower-files":"^2.13.1","node-bourbon":"^4.2.8","node-neat":"^2.0.0-beta.0","require-dir":"^1.0.0","string-format":"^2.0.0","url-join":"^4.0.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0","yargs":"^12.0.1"},"devDependencies":{"css-reset-and-normalize":"^1.0.1","jquery":"^3.3.1"},"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","banner":"This page and wiki was built with the help of igem-wikibrick, a tool created by Virginia iGEM 2018","gitHead":"ae486f02892541d58387c5e2ec9343a59f4d8b12","_id":"igem-wikibrick@0.8.2","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-OpUQLCOKIhTUfe0taZlXHpRcQIgCosZQQRT2Smiqcq1dYnoE3naAG1xI/7VKBJz1gy15ZRG/mtwGfcs+4MtzvQ==","shasum":"9aaca117b9334edd91725b526b91eed9997b77fb","tarball":"https://registry.npmjs.org/igem-wikibrick/-/igem-wikibrick-0.8.2.tgz","fileCount":27,"unpackedSize":224464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4ExECRA9TVsSAnZWagAAQe8QAJ3IKHroY/aXKREbBZKH\nThdQFbZNC0rmwi+gwLcYhRrv9H9A7yRiJtfTLNHwsgXnZ7Nf55whL00GErL8\n9BxbLaIoUGotpVldrICxy7nZ2vbyLa2hJiekEfKpSEWjHkZ31FyWDL6znQGt\n1jM5lHN247ZrhfWvyFcCzsJFDMdNZMJjg2v34nZJja4D6n/zctF8u90iYh5k\n+tF4QtGsfU3oEeNNEkVWFOinhWHBOe3U21Kuw6udx4cDu631WkbqoRi4mTs9\nNtupwfotpdwMD72P9tDjJxYcREx0Mylk0Odq9GkRZUWAswdDIyzQHmHEhqk4\nUhf0Ft0WlDcpuaH0gWSrelrDvyBx8xXRDeWJmLTBwUB56Hw8ahcIEUO0OodO\n39raY2zZKakRJEFcM71wHb/U0aNxk8HgscVKrL2ytUj2MXFgbeDAwD5eouYf\n4+o89x4kkoyXqNsyzyyNhji00dzAwWXRbXgGy8roTwqy6qzeP1vYQ9tn9IEI\n5I4QhzHALe7UX5poOe1RZAA1bTGM71Q605svRHwlGMlthKQddyYYvydO6dJ/\nwSHOt+7UrRRWZ1pScetngpn7P3IW5YhXpe543EQ2av/SW+awSqhN71rfXbNY\nHc7bfnRwGZMD/puWP3ZOa7b6P3V02/daPBAyUtOzZ6n6eZlcnHF93JDNPolI\nqk36\r\n=G/1Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFmSnImd8QcPdMONEXUMLgq79CqjjENF+xaUQLsDlsOAIgH2WLXCzONMrNh1Iz7FdTnFqDjCd5y0rlLT3iAXPSW2I="}]},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"_npmUser":{"name":"mantissa","email":"dylanculfogienis@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/igem-wikibrick_0.8.2_1591757891434_0.9924173874705373"},"_hasShrinkwrap":false}},"time":{"created":"2018-07-20T14:55:03.685Z","0.3.1":"2018-07-20T14:55:03.797Z","modified":"2022-05-05T16:34:15.445Z","0.3.2":"2018-07-20T15:03:23.921Z","0.3.3":"2018-07-20T18:17:33.474Z","0.3.4":"2018-07-23T16:24:09.515Z","0.3.5":"2018-07-23T19:12:06.733Z","0.3.6":"2018-07-23T19:24:26.777Z","0.3.7":"2018-07-24T14:54:41.844Z","0.3.8":"2018-07-24T15:15:41.353Z","0.3.9":"2018-07-24T16:29:06.033Z","0.3.10":"2018-07-25T15:13:36.517Z","0.3.11":"2018-07-25T15:26:33.951Z","0.3.12":"2018-07-25T15:33:28.680Z","0.3.13":"2018-07-26T01:05:04.939Z","0.3.14":"2018-07-26T01:48:56.694Z","0.3.15":"2018-07-26T06:18:08.010Z","0.3.17":"2018-07-26T14:54:02.440Z","0.3.18":"2018-07-26T15:49:10.358Z","0.3.19":"2018-07-27T00:27:05.751Z","0.3.20":"2018-07-27T16:28:27.766Z","0.3.21":"2018-07-27T16:53:47.926Z","0.3.22":"2018-07-27T16:59:02.394Z","0.4.0":"2018-07-27T17:13:15.706Z","0.4.1":"2018-07-31T14:11:09.490Z","0.4.3":"2018-08-03T02:32:19.497Z","0.4.4":"2018-08-03T16:39:57.635Z","0.4.5":"2018-08-15T14:13:21.320Z","0.4.6":"2018-08-15T15:27:20.240Z","0.4.7":"2018-08-15T15:37:30.234Z","0.4.8":"2018-08-15T15:54:16.261Z","0.4.9":"2018-08-15T15:59:21.892Z","0.4.10":"2018-08-15T16:05:49.195Z","0.4.11":"2018-08-15T17:45:42.336Z","0.4.12":"2018-08-15T18:01:52.783Z","0.4.13":"2018-08-15T18:26:56.702Z","0.4.14":"2018-08-15T18:30:32.519Z","0.4.15":"2018-08-15T18:45:21.633Z","0.4.16":"2018-08-16T17:52:46.750Z","0.4.17":"2018-08-17T17:27:28.243Z","0.4.18":"2018-08-17T17:33:16.433Z","0.4.19":"2018-08-17T17:36:58.393Z","0.4.20":"2018-08-17T17:40:13.076Z","0.4.21":"2018-08-17T17:50:19.398Z","0.4.22":"2018-08-17T18:17:17.898Z","0.4.23":"2018-08-17T18:29:03.881Z","0.4.24":"2018-08-17T18:44:43.724Z","0.4.25":"2018-08-17T18:46:28.358Z","0.4.26":"2018-08-20T13:53:44.669Z","0.4.28":"2018-08-20T14:52:46.763Z","0.5.1":"2018-08-20T15:26:32.204Z","0.5.2":"2018-08-20T17:49:04.021Z","0.6.0":"2018-08-20T18:04:44.661Z","0.6.1":"2018-08-23T16:02:43.101Z","0.6.2":"2018-08-24T14:18:54.528Z","0.6.3":"2018-08-24T16:09:03.571Z","0.6.4":"2018-08-26T21:06:31.210Z","0.6.5":"2018-08-26T21:42:50.291Z","0.6.6":"2018-08-27T15:40:38.910Z","0.6.7":"2018-08-27T15:54:41.533Z","0.6.8":"2018-08-27T16:13:52.226Z","0.6.9":"2018-08-27T16:53:39.176Z","0.7.0":"2018-09-14T04:05:48.782Z","0.7.1":"2018-09-14T04:17:43.632Z","0.7.2":"2018-09-15T23:10:08.467Z","0.7.3":"2018-09-16T00:48:02.218Z","0.7.4":"2019-07-10T19:30:39.860Z","0.7.5":"2019-07-17T14:05:03.818Z","0.7.7":"2019-07-17T14:16:24.798Z","0.7.9":"2019-07-18T15:33:49.146Z","0.7.10":"2019-07-24T17:02:02.925Z","0.8.0":"2019-07-31T18:48:51.092Z","0.8.2":"2020-06-10T02:58:11.620Z"},"maintainers":[{"name":"mantissa","email":"dylanculfogienis@gmail.com"}],"description":"Build tool capable of automatically building and publish iGEM Wiki sites. Created by Virginia iGEM 2018's Wiki Team.","homepage":"https://github.com/Virginia-iGEM/igem-wikibrick","keywords":["iGEM","wiki","build","gulp","api","tool","automatic","upload"],"repository":{"type":"git","url":"git+https://github.com/Virginia-iGEM/igem-wikibrick.git"},"contributors":[{"name":"Grace Wu"}],"author":{"name":"Dylan Culfogienis"},"bugs":{"url":"https://github.com/Virginia-iGEM/igem-wikibrick/issues"},"license":"MIT","readme":"# igem-wikibrick\r\n\r\nA user-friendly tool that makes developing wikis and webpages for the iGEM wiki behave as much like normal web development as possible. Automates building, image, HTML, CSS, Javascript and Package uploads.\r\n\r\n**Public Service Announcement: Because of iGEM's adpotion of HTTPS and simultaneous non-adoption of TLS v1.2+, this tool will only work with Node.js >= 11.4.0, or significantly older versions of Node. Please ensure that your Node is up to date, and that your project contains the gulp.json file within this repository's root directoy that whitelists TLS v1.0 compatibility.**\r\n\r\nIf you encounter an error, problem or issue, please report it via our [issue tracker](https://github.com/Virginia-iGEM/igem-wikibrick/issues). If you would like to contribute, feel free to fork and submit a pull request. See [contributing](#8-contributing) for more information.\r\n\r\n**Please see the [FAQ](#5-faq) before using, as there are some persistent issues that you must be aware of while using the tool.**\r\n\r\n**If you are interested in updating and maintaining this package, please message me at dtc9bb@virginia.edu.** I am no longer on an iGEM team, and this tool still has a number of intermittent bugs that need to be fixed, and to be honest, it needs a v1.0 that doesn't use bower, and probably shouldn't use gulp.\r\n\r\n## Changelog\r\n\r\n```\r\nv0.8.0: Added 'data-nosub' attribute, which can be added to any HTML tag that would normally have its URLs substituted to prevent URL substitution.\r\nv0.7.10: igem-wikibrick will now ensure Node.js version >= 11.4.0 before publish, or fail\r\nv0.7.9: Updated certain out-of-date packages to fix TLS compatibility issues\r\nv0.7.8: config.js updated to reflect HTTPS standards adopted by iGEM in 2019; \r\nv0.7.5-0.7.7: 'noconcat' config setting added to prevent tool from merging javascript files if unwanted\r\nv0.7.4: Fixed corner-case compatibility-breaking issue with gulp4 installation\r\n```\r\n\r\n## 1 Table of Contents\r\n\r\n1. [**Table of Contents**](#1-table-of-contents)\r\n2. [**Installation**](#2-installation)\r\n3. [**Tutorial**](#3-tutorial)\r\n4. [**Description**](#4-description)\r\n5. [**FAQ**](#5-faq)\r\n6. [**Todo**](#6-todo)\r\n7. [**Dependencies**](#7-dependencies)\r\n8. [**Attributions, Dependencies and Works Cited**](#8-attributions-and-works-cited)\r\n9. [**Contribution**](#9-contribution)\r\n\r\n## 2 Installation\r\n\r\nFor new projects, see our Yeoman generator, [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki). **This option is strongly recommended for users new to web development.** This will give you an entire template for your wiki in addition to installing the tool for you.\r\n\r\nIf you have an existing project, either an existing wiki you've been writing on igem.org, or content you have saved locally that you'd like to get on the iGEM server, and would like help moving to our tool, see the [migration guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/migration-guide).\r\n\r\nIf you already have a project and already know what you're doing: `npm install -D igem-wikibrick`. Gulp commands and project structures can be found in the Programmer's Guide.\r\n\r\n## 3 Tutorial\r\n\r\nSee the [tutorial](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/tutorial) page. You *must* have already installed the tool, either with `generator-igemwiki`, or standalone by following the migration guide.\r\n\r\n## 4 Programmer's Guide\r\n\r\nSee [programmer's guide](https://github.com/Virginia-iGEM/igem-wikibrick/tree/master/docs/programmers-guide). This is a more technical document containing information on the architecture of igem-wikibrick, and is valuable both for new users trying to get a deeper understanding of how the tool works and how to modify it, as well as for well-versed developers who have no need of an introduction, and are looking to modify the tool for their own use as quickly as possible.\r\n\r\n## 5 Description\r\n\r\n`igem-wikibrick` is a commandline build tool that automates uploading of content (HTML, CSS, JS, images and fonts) to the iGEM Wiki, provides preprocessing, postprocessing, templating and other build conveniences, and can run a local webserver hosting a copy of the in-development wiki, enabling faster iteration times than are possible with the builtin Edit functionality of the igem wiki, and making it easier for team members to use their favorite development tools, I.E. Sublime, Vim, BASH, and making it easier to version control wikis for more robust development and for use by future teams.\r\n\r\nOur goal in building this tool was to enable us to create an iGEM website that would tell our team's story, and we'd like to share this tool with other teams who have the same goal.\r\n\r\n### 5.1 Feature List\r\n\r\n- **Command line-based, no-hassle build tool.** Write and test all of your HTML, CSS and JS on your own machine. Once installed, the command `gulp serve` runs a local webserver that will update when any changes are made to your project. Change your stylesheets or page layout, save your changes, and see the changes instantly. No messing around with a _save page_ button or working in a text editor without syntax highlighting or autocompletion.\r\n- **URL Substitution, automated uploads.** What happens when you want to see your changes on your iGEM Wiki page? Once correctly configured, the command `gulp publish` will intelligently modify any relative URLs in your HTML files to be absolute, pointing to the correct locations on the iGEM wiki, before sending all your files to those locations using an API developed by Toronto's iGEM team, `igemwiki-api`. In under a minute, all of your content, images, stylesheets and scripts will be available, live, on your iGEM Wiki. The tool will keep track of which files have changed between uploads, and will only upload files that have changed to increase upload speeds.\r\n- **Flexible Build and Package support.** Becuase we're using `gulp`, a Node.js based task automation tool, you can add thousands of gulp plugins and Node.js modules to your wiki to do all the things you ever wished you could. Want to use more advanced templating to reuse as much code as you can? `npm install -D gulp-handlebars`. Want an interactive experience that teaches your users how your project works? `npm install -D impactjs`. Want fluid, scriptable animations that react to the user? `npm install -D createjs-tweenjs`. You have access to literally the largest repository of open source packages in existence, `npm`, with over 350,000 packages.\r\n- **Markdown, Google Docs and Word Document Conversion [UNDER CONSTRUCTION].** Are you the only programmer on your team? Worse yet, are you _not a programmer at all,_ but you bit the bullet and volunteered to spearhead your team's wiki? Either way, `igem-wikibrick`'s got your back. (Future) integration of Markdown and word processor document compiling will make incorporating your teammates' work into the wiki seamless and easy.\r\n\r\n## 5 FAQ\r\n\r\n### `gulp publish -l` doesn't upload assets, sometimes.\r\n\r\nThis is a known issue, workaround is to issue a `gulp push:all` directly after the `gulp publish -l`. If you have `gulp serve`d in the meantime, you must `gulp build -l` then `gulp push:all`.\r\n\r\nWe are not aware of what causes this, it appears to be an intermittent issue. We believe it has something to do with the local hash check skip.\r\n\r\n### Why does my wiki look different on igem.org than it does locally?\r\n\r\nAs much as we've tried to streamline this, we've encountered this same issue. Every team runs into it in one way or another. This issue occurs for a number of reasons, including igem.org's `load.php` styles taking precedence over any stylesheets we load in, as well as preloaded stylesheets associated with the wiki template that is automatically loaded into every team's page.\r\n\r\nYou can avoid this by doing the following:\r\n\r\n- **Liberally use and abuse the !important flag.** As much as it bad practice, this is the easiest way to override stylesheets enforced by `igem.org`. Does something appear different on the `igem.org` website than on your local server? Find the style that makes it appear different, and add `!important` to the end of it, just before the semicolon. This will fix 95% of these issues.\r\n- **Do not leave your publish for last minute.** Publish semi-regularly to ensure that your styling, content and JS works on both the wiki and on your local webserver.\r\n- Do not style `<body>` tags. At all. To do global styling for your whole page, instead wrap all the content in your body in a div tag and style that tag. Example: `<div id=\"teamname_content\"></div>` and style the `#teamname_content` id.\r\n- Inspect an iGEM wiki page and take note of the names of HTML tags they use. For example, they have a `<div>` with the id `#content`, so you will not be able to use a `<div>` with the `content` id without clashing with iGEM Wiki styling\r\n\r\n### Why does my JQuery code behave strangely?\r\n\r\n~~This is a known issue and likely relates to the fact that we package JQuery 3.3 using Bower by default, while iGEM provides JQuery 1.1 forcibly to all wikis. We are currently attempting to resolve the issue ourselves.~~\r\n\r\n~~A current known workaround is to write inline JavaScript in `<script>` tags instead of writing them under the js folder. If you need to use your JavaScript in multiple documents, you can place your script tag in the `app/partials/_head.hbs` partial. This will cause JQuery code to behave as it should.~~\r\n\r\nFixed! Both templates served by `generator-igemwiki` now use Browserify to package the newest version of JQuery, 3.3.1, with your JavaScript. This allows you to use the newest version of JavaScript while `igem.org`'s AJAX loads will still function perfectly with JQuery 1.11.1.\r\n\r\nIf you aren't using the generator, update to the latest version of `igem-wikibrick` with `npm install -D igem-wikibrick@latest`, install Node.js JQuery with `npm install jquery` and then add `jq = require('jquery')` to the top of all your JavaScript files. Use `jq` in place of `$` if you wish to use JavaScript 3.3.1. If for whatever reason you want to use JavaScript 1.11.1, use the `$` instead. _Do not mix and match._\r\n\r\n### I keep making modifications but whenever I build, they're overwritten!\r\n\r\n**Make sure you are editing files in `app` and not in `build`. Any edits to any files in `build` will be overwritten when the next build is run. Never edit any files in `build` as the edits will always be trampled.**\r\n\r\n### `gulp serve` task cannot be found. Or any other tasks.\r\n\r\nTry running `npm install -D igem-wikibrick@latest` in your project folder. This is another known issue, and a rare one at that; we've only encountered it twice and it hasn't showed up since. If it persists, push any changes you've made, delete your project folder and reclone your project from GitHub.\r\n\r\nIf you have any insights as to why this issue may be occurring, we'd love to get it fixed. See [Contributing](#9-contributing) for contact information.\r\n\r\nThis issue seems to sometimes occur when you clone down a new copy of your project and then run `npm install`. Try running `npm update` instead of `npm install`; this seems to correctly duplicate `igem-wikibrick`'s necessary dependencies.'\r\n\r\nThis appears to be an issue with `npm install`'s dependency resolution code, and so fixing this problem is largley out of our power. `yarn` may prove superior; if you are interested in helping us migrate `igem-wikibrick` to `yarn` instead of `npm`, we'd love to talk to you.\r\n\r\n### Some of my URLs aren't substituted?\r\n\r\n99% of the time this is because you've misspelled the image's filename. It's case-sensitive and you have to get the path exactly right, otherwise the substituter will not find it. If you are using `gulp build -l`, ensure that you have _recently_ performed a `gulp push:files`.\r\n\r\n### NONE of my URLs are substituted!\r\n\r\nRemember that `gulp publish -l`, not `gulp publish` is the correct way to publish. This is due to a limitation with the way our build system is set up, and will be corrected in the future so that `gulp publish` correctly performs a live build.\r\n\r\nIf your URLs _still_ aren't substituted, please contact us for further assistance. This is another known, rare issue that we have encountered in the past but no longer do despite it never being officially fixed.\r\n\r\n### I can't push:files\r\n\r\nRun `gulp prebuild` first. `push:files` works out of the build directory, which is populated by prebuild. You should notice a lot of large red errors if this is happening.\r\n\r\n## 6 Todo\r\n\r\n### 6.1 Known Issues\r\n\r\n- `npm install` will consistently incorrectly install this package on an `npm install` due to problems with npm's dependency resolution. Workaround is to either `npm install -D igem-wikibrick` or run `npm update` directly following an `npm install`. The install script will automatically do this.\r\n- [UNCOMMON] `gulp publish -l` sometimes doesn't perform the URL replace. Reason is unknown; workaround is to enter `gulp build -l` then `gulp push:content -l` following a `gulp publish -l` that fails to rewrite relative URLs.\r\n- Upload timeouts will _sometimes_ throw large, verbose errors that aren't caught by our error handling code.\r\n  - Same for login timeouts\r\n  - May have been resolved by modifying `igemwiki-api`\r\n  - Modified `igemwiki-api`'s CLI needs to be tested to make sure our changes aren't breaking, as they change the way the library handles errors. May be necessary to ensure that `igemwiki-api` does not catch errors when used as a library and catches them when used as a CLI.\r\n- Attempting to `gulp build -l` without first `gulp push:images -l` will result in a big series of repeated file read errors and broken URL substitutions. Instead error out and tell user to `push:images` or `publish` before `live build`ing in error message instead of just vomiting exceptions.\r\n- `gulp publish` can be performed without the `-l` flag, which makes no sense. An error should be thrown which tells the user that the `-l` flag is necessary for publishing, or the `-l` flag is automatically and always set on publish for the user. See item #1 in High Priority.\r\n\r\n### 6.2 High Priority\r\n\r\n- [API CHANGE] Make it so that `gulp publish` automatically sets the environment to `live`, while `gulp serve`, at least in its current state, automatically sets the environment to development.\r\n- Add a `--force` flag that makes it so that uploads do not pay attention to hashes deltas and everything is just uploaded.\r\n- [FEATURE] Add a Handlebars helper function that accepts Google Drive links and can pull down Google Docs and use them as HTML content.\r\n  - Decently complicated change as it requires prompting the user to log in to Google Drive and dealing with Google Drive APIs.\r\n- Add error-checker that asks the user if they want to upload `dev` build files to the iGEM wiki, instead of just blindly uploading them. Should probably use a `lock` file of some kind under the `build` directory that indicates what the last build environment was.\r\n- Modify handlebars substitution so that a malformed handlebars template will cause an error to be thrown, and the handlebars file to not be processed, as opposed to the entire build to crash out.\r\n- Same goes for browserify\r\n\r\n### 6.3 Medium Priority\r\n\r\n- [API CHANGE] Replace bower with npm development dependencies. Bower is being phased out, not just in our project but across the web.\r\n  - Perhaps there's also room for webpack/browserify to take Bower's place?\r\n  - Yarn may also be an appropriate replacement\r\n  - npm can also manage frontend dependencies, though this would require browserify and may result in confusion between vulnerabilities in live and dev.\r\n\r\n### 6.4 Low Priority\r\n\r\n- Pick a JavaScript styleguide, fix the awful inconsistencies in style to adhere to it.\r\n  - Standardize variable and function naming schemes.\r\n  - Should probably 'use strict'.\r\n  - 'use strict' seems to have gone out of style though?\r\n\r\n### 6.5 Questionable Value (discuss before implementing)\r\n\r\n- Create shell scripts (`.sh`, `.bat` files) that automatically install Node.js and all required npm and bower dependencies for team members and future teams.\r\n  - Add git hook that causes an npm install and bower install on package.json or bower.json change.\r\n  - Must be added on a repository-by-repository basis\r\n  - The Yeoman generator already kinda does all of this.\r\n- Wrap the whole tool in a custom commandline tool?\r\n  - Honestly a gulp --help command would be enough.\r\n- Modify `gulpfile.js` so that separate directories, `build-dev` and `build-live` are created for each respective build.\r\n  - I feel like this would just further clutter the project folder\r\n- Eliminate synchronous file read in gulp task live/push.js\r\n  - JSON.parse is synchronous anyways, so will need a different JSON library?\r\n  - Also it happens really quickly so async is probably not needed\r\n- Update build-tool so that it scans for existing files and whether or not their srcs have changed under `./build` before building. Would need some kind of hash of each file, or a look at the date-last-changed.\r\n  - Probably not that necessary, just more work for little gain considering how fast builds are\r\n\r\n## 7 Dependencies\r\n\r\nSee [packages.json](https://github.com/Virginia-iGEM/igem-wikibrick/blob/master/package.json)\r\n\r\n## 8 Attributions and Works Cited\r\n\r\nThis list is not up-to-date, and will be updated once the tool enters a stable state.\r\n\r\n- University of Toronto: igemwiki-api, used to automate uploads to iGEM wiki\r\n  - Particularly, Julian Mazitelli for both creating the igemwiki-api and the original generator-igemwiki that ours is based on.\r\n- iGEM Peshawar 2016: General information regarding wiki development\r\n\r\n## 9 Contributing\r\n\r\nIf you're interested in JavaScript, Handlebars, Markdown, Webpack, templating libraries like Handlebars, view libraries like React.js or Angular, and the future of frameworks support the iGEM wiki, and would like to contribute to the tools used to make the `igemwiki` stack run, we welcome pull requests, issue submissiosn and emails at [virginia.igem@gmail.com](mailto:virginia.igem@gmail.com).\r\n\r\nIf you are on an iGEM team, helping us by submitting issues, or forking and pull requesting can count towards a collaboration for your team.\r\n\r\nLinks to repositories that make this tool work:\r\n\r\n- The original [igemwiki-api](https://github.com/igemuoftATG/igemwiki-api), written by Toronto 2016's Julian Mazzitelli\r\n  - Our fork of [igemwiki-api](https://github.com/Virginia-iGEM/igemwiki-api), which fixes a few bugs with Julian's code and may be pulled in the future. `igem-wikibrick` runs off of this library.\r\n- [generator-igemwiki](https://github.com/Virginia-iGEM/generator-igemwiki), a Yeoman generator which depends on this tool.\r\n","readmeFilename":"README.md"}