{"_id":"whackage","_rev":"82-bdd99e767981717e0d393edfebd98ead","name":"whackage","dist-tags":{"alpha":"0.1.0","latest":"1.3.0"},"versions":{"0.1.0":{"name":"whackage","version":"0.1.0","keywords":["todo"],"author":{"name":"Jani Eväkallio"},"license":"MIT","_id":"whackage@0.1.0","maintainers":[{"name":"jevakallio","email":"jani.evakallio@gmail.com"}],"homepage":"https://github.com/FormidableLabs/whackage#readme","bugs":{"url":"https://github.com/FormidableLabs/whackage/issues"},"bin":{"whack":"./index.js"},"dist":{"shasum":"9e2e43e5a148a88788fd0006fe0809c87644f94b","tarball":"https://registry.npmjs.org/whackage/-/whackage-0.1.0.tgz","integrity":"sha512-X6YHBdQVa1Pu9LT2CCv0xpkMATO6MnREnVM+vvuCPNL+dCVr+m+G2Nk2sqvC8a5rDGnecbRfm/3B7Gci6LionA==","signatures":[{"sig":"MEUCIQDmLokjXajCGgEp5X+5IvI32ke9M23Jh3T5NXbWNR16nQIgIBIem0NeLWCSOgZcto3AA84C4vB9PaMcjoDBaDF9Wu8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"9e2e43e5a148a88788fd0006fe0809c87644f94b","gitHead":"3e23ac31f0a8312ec6c9526b93d038c2deaececa","scripts":{"test":"eslint index.js src"},"_npmUser":{"name":"jevakallio","email":"jani.evakallio@gmail.com"},"repository":{"url":"git+https://github.com/FormidableLabs/whackage.git","type":"git"},"_npmVersion":"3.10.3","description":"Multi-repo development tooling for React Native","directories":{},"_nodeVersion":"6.6.0","dependencies":{"yargs":"^6.4.0","chokidar":"^1.6.1","fs-extra":"^1.0.0","rsyncwrapper":"^2.0.1"},"devDependencies":{"eslint":"^2.13.1","babel-eslint":"^7.1.1","eslint-plugin-babel":"^3.2.0","eslint-plugin-import":"^2.2.0","eslint-plugin-filenames":"^1.1.0","eslint-config-formidable":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/whackage-0.1.0.tgz_1480440931854_0.15102482307702303","host":"packages-12-west.internal.npmjs.com"}},"0.1.1":{"name":"whackage","version":"0.1.1","keywords":["todo"],"author":{"name":"Jani Eväkallio"},"license":"MIT","_id":"whackage@0.1.1","maintainers":[{"name":"jevakallio","email":"jani.evakallio@gmail.com"}],"homepage":"https://github.com/FormidableLabs/whackage#readme","bugs":{"url":"https://github.com/FormidableLabs/whackage/issues"},"bin":{"whack":"./index.js"},"dist":{"shasum":"6f8b980dce3658b045deb0d6f92e8f11af621cd6","tarball":"https://registry.npmjs.org/whackage/-/whackage-0.1.1.tgz","integrity":"sha512-ssJi/PvgpVjApaGyF2cpLo+b29BTroVFnhkQbMaQVnCPm4PzOD0oIN29kHB35wuILDSbYewedMKhWaXTc+x5Sg==","signatures":[{"sig":"MEUCIQCmAl+/c85SbeyKU1ZwuWAfa1Wm1w6Z8qTQozzaS4s+fwIgQAU1tLQGJ/XZfByPluNCxCgtdNEsfFHi+kmGnanfnpk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"6f8b980dce3658b045deb0d6f92e8f11af621cd6","gitHead":"9d9decdb8b45ccc9e1ba89f72c6e314217f2677c","scripts":{"test":"eslint index.js src"},"_npmUser":{"name":"jevakallio","email":"jani.evakallio@gmail.com"},"repository":{"url":"git+https://github.com/FormidableLabs/whackage.git","type":"git"},"_npmVersion":"3.10.3","description":"Multi-repo development tooling for React Native","directories":{},"_nodeVersion":"6.6.0","dependencies":{"yargs":"^6.4.0","chokidar":"^1.6.1","fs-extra":"^1.0.0","rsyncwrapper":"^2.0.1"},"devDependencies":{"eslint":"^2.13.1","babel-eslint":"^7.1.1","eslint-plugin-babel":"^3.2.0","eslint-plugin-import":"^2.2.0","eslint-plugin-filenames":"^1.1.0","eslint-config-formidable":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/whackage-0.1.1.tgz_1480447431364_0.27064508851617575","host":"packages-12-west.internal.npmjs.com"}},"0.2.0":{"name":"whackage","version":"0.2.0","keywords":["todo"],"author":{"name":"Jani Eväkallio"},"license":"MIT","_id":"whackage@0.2.0","maintainers":[{"name":"jevakallio","email":"jani.evakallio@gmail.com"}],"homepage":"https://github.com/FormidableLabs/whackage#readme","bugs":{"url":"https://github.com/FormidableLabs/whackage/issues"},"bin":{"whack":"./index.js"},"dist":{"shasum":"d18a76459a6f7d2b740def1789b97545a370652d","tarball":"https://registry.npmjs.org/whackage/-/whackage-0.2.0.tgz","integrity":"sha512-FZsF7zR5THgYNjKuFZYM8W0k0Hzunk4us5ujTuB58bbE8BuDpvivbp0UwobokA4IkVmcaNAdRtslZlhX6JxwJQ==","signatures":[{"sig":"MEYCIQDzRIFslrCnSQJsA2mWTmdlfNYvzCeMoGnuC+Ac2P4f/wIhAJowKbhZcfUwUhVmhKoP7+J5KlS/v4i5RBhtU0V3RwiM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"d18a76459a6f7d2b740def1789b97545a370652d","gitHead":"ddcd9bc28d6b155a57fd114e14f63b0a5c4f8aa2","scripts":{"test":"eslint index.js src"},"_npmUser":{"name":"jevakallio","email":"jani.evakallio@gmail.com"},"repository":{"url":"git+https://github.com/FormidableLabs/whackage.git","type":"git"},"_npmVersion":"3.10.3","description":"Multi-repo development tooling for React Native","directories":{},"_nodeVersion":"6.6.0","dependencies":{"chalk":"^1.1.3","yargs":"^6.4.0","chokidar":"^1.6.1","fs-extra":"^1.0.0","is-symlink":"^0.1.1","rsyncwrapper":"^2.0.1","command-exists":"^1.0.2"},"devDependencies":{"eslint":"^2.13.1","babel-eslint":"^7.1.1","eslint-plugin-babel":"^3.2.0","eslint-plugin-import":"^2.2.0","eslint-plugin-filenames":"^1.1.0","eslint-config-formidable":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/whackage-0.2.0.tgz_1480503570366_0.36631939583458006","host":"packages-18-east.internal.npmjs.com"}},"1.0.0":{"name":"whackage","version":"1.0.0","keywords":["react-native","packager","providesModule","symlink","npm link"],"author":{"name":"Jani Eväkallio","email":"jani.evakallio@formidable.com"},"license":"MIT","_id":"whackage@1.0.0","maintainers":[{"name":"jevakallio","email":"jani.evakallio@gmail.com"}],"homepage":"https://github.com/FormidableLabs/whackage#readme","bugs":{"url":"https://github.com/FormidableLabs/whackage/issues"},"bin":{"whack":"./index.js"},"dist":{"shasum":"5db62d58f162b6608c802ddbf878ae87e0027a59","tarball":"https://registry.npmjs.org/whackage/-/whackage-1.0.0.tgz","integrity":"sha512-zn/IbBk4mFMm/Nnx1lQfe60Y8CjRHU9jKJAhKgbGpEuwO3KBRIPi9WbibNLShi31fJhc3UiO05TxltJbzTmT3A==","signatures":[{"sig":"MEQCIHKO/fjjOpLivwPW8DvjKxHmjXxPex8DiQzs7Ecp0/q8AiBEAKQHtYPeroVSTuxphv3tbjIg835GaZ3XKSMMpgkEaw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"5db62d58f162b6608c802ddbf878ae87e0027a59","gitHead":"8021ba8ba7334de3d5e163e94a0e16b15b6b8464","scripts":{"test":"eslint index.js src"},"_npmUser":{"name":"jevakallio","email":"jani.evakallio@gmail.com"},"repository":{"url":"git+https://github.com/FormidableLabs/whackage.git","type":"git"},"_npmVersion":"3.10.3","description":"Multi-repo development tool for React Native","directories":{},"_nodeVersion":"6.6.0","dependencies":{"chalk":"^1.1.3","yargs":"^6.4.0","chokidar":"^1.6.1","fs-extra":"^1.0.0","is-symlink":"^0.1.1","rsyncwrapper":"^2.0.1","command-exists":"^1.0.2"},"devDependencies":{"eslint":"^2.13.1","babel-eslint":"^7.1.1","eslint-plugin-babel":"^3.2.0","eslint-plugin-import":"^2.2.0","eslint-plugin-filenames":"^1.1.0","eslint-config-formidable":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/whackage-1.0.0.tgz_1480587415049_0.29681191011331975","host":"packages-18-east.internal.npmjs.com"}},"1.0.1":{"name":"whackage","version":"1.0.1","keywords":["react-native","packager","providesModule","symlink","npm link"],"author":{"name":"Jani Eväkallio","email":"jani.evakallio@formidable.com"},"license":"MIT","_id":"whackage@1.0.1","maintainers":[{"name":"jevakallio","email":"jani.evakallio@gmail.com"}],"homepage":"https://github.com/FormidableLabs/whackage#readme","bugs":{"url":"https://github.com/FormidableLabs/whackage/issues"},"bin":{"whack":"./index.js"},"dist":{"shasum":"b849a66fda070b7631e0ca60c15b610c7f123eb4","tarball":"https://registry.npmjs.org/whackage/-/whackage-1.0.1.tgz","integrity":"sha512-7/Khr1gLwBb/LS5XdFE+lm4dAkVvAS0G4wzD+q64HcVbz7N6Lq7j+wLN9l+bQ06xF3df/sglUaR3lgLkgWnXiw==","signatures":[{"sig":"MEUCIDVKt1VJelCa/epznA5PWgHZr6e7natzms6kA/76supcAiEAoNdd2tTUycMzYHX9EEjr26KymOk4h2X2f57Dcs5YroI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"b849a66fda070b7631e0ca60c15b610c7f123eb4","engines":{"npm":">= 3","node":">= 4"},"gitHead":"11289e9ba3a68bdae9709aeb4583046dfe14afc6","scripts":{"test":"eslint index.js src"},"_npmUser":{"name":"jevakallio","email":"jani.evakallio@gmail.com"},"repository":{"url":"git+https://github.com/FormidableLabs/whackage.git","type":"git"},"_npmVersion":"3.10.3","description":"Multi-repo development tool for React Native","directories":{},"_nodeVersion":"6.6.0","dependencies":{"chalk":"^1.1.3","yargs":"^6.4.0","chokidar":"^1.6.1","fs-extra":"^1.0.0","is-symlink":"^0.1.1","rsyncwrapper":"^2.0.1","command-exists":"^1.0.2"},"devDependencies":{"eslint":"^2.13.1","babel-eslint":"^7.1.1","eslint-plugin-babel":"^3.2.0","eslint-plugin-import":"^2.2.0","eslint-plugin-filenames":"^1.1.0","eslint-config-formidable":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/whackage-1.0.1.tgz_1481302462185_0.08163620065897703","host":"packages-18-east.internal.npmjs.com"}},"1.1.0":{"name":"whackage","version":"1.1.0","keywords":["react-native","packager","providesModule","symlink","npm link"],"author":{"name":"Jani Eväkallio","email":"jani.evakallio@formidable.com"},"license":"MIT","_id":"whackage@1.1.0","maintainers":[{"name":"jevakallio","email":"jani.evakallio@gmail.com"}],"homepage":"https://github.com/FormidableLabs/whackage#readme","bugs":{"url":"https://github.com/FormidableLabs/whackage/issues"},"bin":{"whack":"./index.js"},"dist":{"shasum":"0ccdc71ff92dbede8ed132e7521820b159c6632b","tarball":"https://registry.npmjs.org/whackage/-/whackage-1.1.0.tgz","integrity":"sha512-m/X8EfJqb8K0gC/3erSvXGS6OCm4wlC6UuNL2NZi7947FQbfWD9SPsw1bzP/hOGTyPE9mvElkOZwyuBl6N45lw==","signatures":[{"sig":"MEUCIQDs66ca5R5gpcQuw/bQFn1gJmhIaWbEsIDBhuCWP8z1fgIgOOx83ORA0OfZOMp/l+eeTEFwS2bA/N/5Onq0o+jO18o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"0ccdc71ff92dbede8ed132e7521820b159c6632b","engines":{"npm":">= 3","node":">= 4"},"gitHead":"a81f42a0bba4242e384806a503c5a116c4dd13df","scripts":{"test":"eslint index.js src"},"_npmUser":{"name":"jevakallio","email":"jani.evakallio@gmail.com"},"repository":{"url":"git+https://github.com/FormidableLabs/whackage.git","type":"git"},"_npmVersion":"4.0.5","description":"Multi-repo development tool for React Native","directories":{},"_nodeVersion":"7.4.0","dependencies":{"chalk":"^1.1.3","yargs":"^6.4.0","chokidar":"^1.6.1","fs-extra":"^1.0.0","is-symlink":"^0.1.1","rsyncwrapper":"^2.0.1","command-exists":"^1.0.2"},"devDependencies":{"eslint":"^2.13.1","babel-eslint":"^7.1.1","eslint-plugin-babel":"^3.2.0","eslint-plugin-import":"^2.2.0","eslint-plugin-filenames":"^1.1.0","eslint-config-formidable":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/whackage-1.1.0.tgz_1493194240833_0.4581281642895192","host":"packages-18-east.internal.npmjs.com"}},"1.2.0":{"name":"whackage","version":"1.2.0","keywords":["react-native","packager","providesModule","symlink","npm link"],"author":{"name":"Jani Eväkallio","email":"jani.evakallio@formidable.com"},"license":"MIT","_id":"whackage@1.2.0","maintainers":[{"name":"jevakallio","email":"jani.evakallio@gmail.com"},{"name":"imranolas","email":"imranolas@gmail.com"},{"name":"baer","email":"me@ericbaer.com"},{"name":"coopy","email":"per@sproutlab.com"},{"name":"exogen","email":"exogen@gmail.com"},{"name":"chrisbolin","email":"bolin.chris@gmail.com"},{"name":"david-davidson","email":"david.davidson@formidablelabs.com"},{"name":"eastridge","email":"ryan@eastridge.me"},{"name":"boygirl","email":"lauren.eastridge@formidablelabs.com"},{"name":"stefvhuynh","email":"huynh.stefan@gmail.com"},{"name":"mhink","email":"mhink1103@gmail.com"},{"name":"jason.wilson","email":"jrwilson@gmail.com"},{"name":"tptee","email":"tyler@tylerpaulthompson.com"},{"name":"derekmaffett","email":"derekgmaffett@gmail.com"},{"name":"ebrillhart","email":"emma.brillhart@gmail.com"},{"name":"redfieldstefan","email":"redfield.stefan@gmail.com"},{"name":"thekenwheeler","email":"ken_wheeler@me.com"},{"name":"bmathews","email":"spoonart@gmail.com"},{"name":"kylecesmat","email":"kyle@kylecesmat.com"},{"name":"paulathevalley","email":"lavalle.paula@gmail.com"},{"name":"ryan.roemer","email":"ryan@loose-bits.com"},{"name":"formidable-owner","email":"admin@formidablelabs.com"}],"homepage":"https://github.com/FormidableLabs/whackage#readme","bugs":{"url":"https://github.com/FormidableLabs/whackage/issues"},"bin":{"whack":"./index.js"},"dist":{"shasum":"4f8deeb88c7f895a421f8402af2473fef2a79175","tarball":"https://registry.npmjs.org/whackage/-/whackage-1.2.0.tgz","integrity":"sha512-jTDQE9VAHc8bkL4Rv2wnpHNetyDTbcUzqQINrSK39YVOEWzlcexdt5vviskInXI+WRGWY4fyNRULpwXGdsX6ZA==","signatures":[{"sig":"MEYCIQC3HGKSpe2wKy0q91IQihMK/pFlZgnSwFB8jKI5q9Ue/QIhAOlEXnCGN/LHk1nah2JIheSQ24iwXUHTtUwIAddzWf+d","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"4f8deeb88c7f895a421f8402af2473fef2a79175","engines":{"npm":">= 3","node":">= 4"},"gitHead":"a0c7de3b9978c575366932b9ebcca54cf4a7a76f","scripts":{"test":"eslint index.js src"},"_npmUser":{"name":"jevakallio","email":"jani.evakallio@gmail.com"},"repository":{"url":"git+https://github.com/FormidableLabs/whackage.git","type":"git"},"_npmVersion":"3.10.10","description":"Multi-repo development tool for React Native","directories":{},"_nodeVersion":"6.11.3","dependencies":{"chalk":"^1.1.3","yargs":"^6.4.0","chokidar":"^1.6.1","fs-extra":"^1.0.0","is-symlink":"^0.1.1","rsyncwrapper":"^2.0.1","command-exists":"^1.0.2"},"devDependencies":{"eslint":"^2.13.1","babel-eslint":"^7.1.1","eslint-plugin-babel":"^3.2.0","eslint-plugin-import":"^2.2.0","eslint-plugin-filenames":"^1.1.0","eslint-config-formidable":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/whackage-1.2.0.tgz_1508415903531_0.722336349543184","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"whackage","version":"1.3.0","keywords":["react-native","packager","providesModule","symlink","npm link"],"author":{"name":"Jani Eväkallio","email":"jani.evakallio@formidable.com"},"license":"MIT","_id":"whackage@1.3.0","maintainers":[{"name":"jevakallio","email":"jani.evakallio@gmail.com"},{"name":"kale-stew","email":"kylieastewart@gmail.com"},{"name":"divmain","email":"dale@divmain.com"},{"name":"aweary","email":"Kierkegaurd@gmail.com"},{"name":"imranolas","email":"imranolas@gmail.com"},{"name":"baer","email":"me@ericbaer.com"},{"name":"coopy","email":"per@sproutlab.com"},{"name":"exogen","email":"exogen@gmail.com"},{"name":"chrisbolin","email":"bolin.chris@gmail.com"},{"name":"david-davidson","email":"david.davidson@formidablelabs.com"},{"name":"eastridge","email":"ryan@eastridge.me"},{"name":"boygirl","email":"lauren.eastridge@formidablelabs.com"},{"name":"stefvhuynh","email":"huynh.stefan@gmail.com"},{"name":"mhink","email":"mhink1103@gmail.com"},{"name":"jason.wilson","email":"jrwilson@gmail.com"},{"name":"tptee","email":"tyler@tylerpaulthompson.com"},{"name":"derekmaffett","email":"derekgmaffett@gmail.com"},{"name":"ebrillhart","email":"emma.brillhart@gmail.com"},{"name":"redfieldstefan","email":"redfield.stefan@gmail.com"},{"name":"thekenwheeler","email":"ken_wheeler@me.com"},{"name":"bmathews","email":"spoonart@gmail.com"},{"name":"kylecesmat","email":"kyle@kylecesmat.com"},{"name":"paulathevalley","email":"lavalle.paula@gmail.com"},{"name":"ryan.roemer","email":"ryan@loose-bits.com"},{"name":"formidable-owner","email":"admin@formidablelabs.com"}],"homepage":"https://github.com/FormidableLabs/whackage#readme","bugs":{"url":"https://github.com/FormidableLabs/whackage/issues"},"bin":{"whack":"./index.js"},"dist":{"shasum":"b8f5e0ef04a74f0a001b5ae101cc7c56c05a751b","tarball":"https://registry.npmjs.org/whackage/-/whackage-1.3.0.tgz","integrity":"sha512-dtaryVHuQP20bEABWdYP5oD+YE12ktXG+j1izi5UdZIzMQbKNuafQBA9mVKcY/8bjuAQmmo45SqT6CsKXDMj3w==","signatures":[{"sig":"MEUCIQCX+XPbQ4WeVge6HE82ORLy5WjqB3BiBcd7gKBFttlaQgIgMWtRMPyD0sQkq4EnKtotsipP0qUcfhxwsYy8wJpNI20=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","engines":{"npm":">= 3","node":">= 4"},"gitHead":"5550fe3a871e3bcecc272e19694382ace2bac342","scripts":{"test":"eslint index.js src"},"_npmUser":{"name":"jevakallio","email":"jani.evakallio@gmail.com"},"repository":{"url":"git+https://github.com/FormidableLabs/whackage.git","type":"git"},"_npmVersion":"5.3.0","description":"Multi-repo development tool for React Native","directories":{},"_nodeVersion":"8.4.0","dependencies":{"chalk":"^1.1.3","yargs":"^6.4.0","chokidar":"^1.6.1","fs-extra":"^1.0.0","is-symlink":"^0.1.1","rsyncwrapper":"^2.0.1","command-exists":"^1.0.2"},"devDependencies":{"eslint":"^2.13.1","babel-eslint":"^7.1.1","eslint-plugin-babel":"^3.2.0","eslint-plugin-import":"^2.2.0","eslint-plugin-filenames":"^1.1.0","eslint-config-formidable":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/whackage-1.3.0.tgz_1517949726462_0.8249144933652133","host":"s3://npm-registry-packages"}}},"time":{"created":"2016-11-29T17:35:33.961Z","modified":"2026-07-20T21:17:21.814Z","0.1.0":"2016-11-29T17:35:33.961Z","0.1.1":"2016-11-29T19:23:53.516Z","0.2.0":"2016-11-30T10:59:30.996Z","1.0.0":"2016-12-01T10:16:55.689Z","1.0.1":"2016-12-09T16:54:22.945Z","1.1.0":"2017-04-26T08:10:41.738Z","1.2.0":"2017-10-19T12:25:04.650Z","1.3.0":"2018-02-06T20:42:07.570Z"},"bugs":{"url":"https://github.com/FormidableLabs/whackage/issues"},"author":{"name":"Jani Eväkallio","email":"jani.evakallio@formidable.com"},"license":"MIT","homepage":"https://github.com/FormidableLabs/whackage#readme","keywords":["react-native","packager","providesModule","symlink","npm link"],"repository":{"url":"git+https://github.com/FormidableLabs/whackage.git","type":"git"},"description":"Multi-repo development tool for React Native","maintainers":[{"email":"sarahmichelleegan@gmail.com","name":"sarmeyer"},{"email":"mariano.martinez@formidable.com","name":"mariano-formidable"},{"email":"ryan@loose-bits.com","name":"ryan.roemer"},{"email":"admin@formidablelabs.com","name":"formidable-owner"},{"email":"npm@formidablelabs.com","name":"formidablelabs"},{"email":"sarah.wright@formidable.com","name":"sarahformidable"},{"email":"senesealessandro@gmail.com","name":"ceceppa"},{"email":"jani.evakallio@gmail.com","name":"jevakallio"}],"readme":"<h1 align=\"center\">whackage</h1>\n\n<p align=\"center\">\n  <a title='License' href=\"https://raw.githubusercontent.com/FormidableLabs/whackage/master/LICENSE\">\n    <img src='https://img.shields.io/badge/license-MIT-blue.svg' />\n  </a>\n  <a href=\"https://badge.fury.io/js/whackage\">\n    <img src=\"https://badge.fury.io/js/whackage.svg\" alt=\"npm version\" height=\"18\">\n  </a>\n</p>\n\n<h4 align=\"center\">\n  Multi-repo development tooling for React Native\n</h4>\n\n***\n\n### What is this?\n\n**`whackage` provides a hot-reload-friendly workflow for developing across multiple React Native packages**\n\nReact Native packager, the development server that bundles your app's JavaScript sources, has a few rough\nedges when it comes to developing apps and libraries that span across multiple repositories. It doesn't\n[handle symlinks](https://productpains.com/post/react-native/symlink-support-for-packager) reliably, and the\n[Haste module system](https://github.com/facebookarchive/node-haste/tree/master) gets easily confused by\n`@providesModule` declarations in subdependencies.\n\nWhackage is an `npm link` replacement that works with React Native. It synchronizes changes in your local workspace to your project's `node_modules` without using symlinks, and automatically generates a packager blacklist for linked modules to avoid Haste naming collisions.\n\nWe wrote whackage to scratch our own itch when working on [Victory Native](https://github.com/formidablelabs/victory-native). It's a blunt instrument, but it works well. Hope you find it useful!\n\n### How-to\n\n#### Quick start\n\n```sh\n# install whackage globally\nnpm i -g whackage\n\n# rest of the steps happen in your project root directory\ncd ~/your-project-directory\n\n# create new whackage.json\nwhack init\n\n# create a link to a package you want to make changes to\nwhack link ../path/to/other/package\n\n# start react native packager and the whackage server (equivalent to npm start)\nwhack run start\n```\n\nMore detailed instructions of each step below:\n\n#### Prerequisites\n* node `>=4`\n* npm `>=3`\n* OSX/Linux. Windows currently not supported, but PRs welcome.\n* `rsync` (most likely pre-installed on your system)\n\n#### Install\n\nInstall `whackage` globally: \n```sh\nnpm i -g whackage\n```\n\n#### Initialize whackage in your project\nYou'll now have access to the `whack` command on your command line. To get started, generate an empty\n`whackage.json` in your project's root directory:\n```sh\nwhack init\n```\n\n#### Link modules\n\nYou can then link local copies of React Native libraries to your project with `whack link <path>`, e.g.:\n```\nwhack link ../victory-core-native\nwhack link ../victory-chart-native\n```\n\nYou'll now have a `whackage.json` file that looks as follows:\n```json\n{\n  \"include\": \"/**/*.js\",\n  \"exclude\": [\"/node_modules/*\", \".babelrc\", \".git\"],\n  \"dependencies\": {\n    \"victory-chart-native\": \"../victory-chart-native\",\n    \"victory-core-native\": \"../victory-core-native\"\n  }\n}\n```\n\nThe `dependencies` map specifies which modules to synchronize, and paths to directories where to\nlook for the sources.\n\nBy default whackage watches changes to `.js` files, and ignores your sources' `node_modules` and git metadata. We also skip copying Babel configurations, because the React Native packager does not support per-module configurations, and project-specific presets [often causes the Babel transpilation step to fail](https://github.com/facebook/react-native/issues/10882).\n\nYou can configure the `include` and `exclude` glob patterns as needed.\n\n#### Start packager\n\nStart the packager server with `whack run <command>`, where `command` is the npm script you normally use\nto start your development server.\n\nIf you usually start the server with `npm start`, the corresponding `whackage` command is:\n```sh\nwhack run start\n```\n\n(Alternatively, if your start task is `npm run server:dev`, you'd use `whack run server:dev`!)\n\nWhen started, the `whackage` server will overwrite the specified `dependencies` in your `node_modules`\nwith the sources you linked with `whack link`, and start a file watcher that synchronizes changes made\nin the source directories into your `node_modules` as they happen.\n\nIt will also specify a [CLI config](https://github.com/facebook/react-native/blob/master/packager/rn-cli.config.js)\nwhich adds the `node_modules` within linked source directories to the Haste blacklist to avoid `@providesModules`\nnaming collisions.\n\n#### Update transitive dependencies\n\nWhen you `whack link` a package, whackage automatically installs and flattens transitive dependencies into your project. If you change the dependencies of your linked packages, you'll need to run `whack install` to add them to your project:\n```sh\nwhack install victory-chart-native\n```\n\nOr sync all transitive depedencies or all linked packages:\n```sh\nwhack install\n```\n\n#### Stop whacking\n\nWhen you're done making changes to your local packages, you can remove the `whackage.json` entry and reset the module to its original state:\n```\nwhack unlink victory-chart-native\n```\n\nTo reset your your original dependencies, but keep the `whackage.json` around for the next time you want to work with that package, simply nuke your `node_modules`:\n```\nrm -rf node_modules && npm i\n```\n\n#### API\n\nRun `whack --help` for a list of all available commands and options.\n\n### Misc\n\n#### Why the name?\n\nIt's wacky, it's hacky, and it rhymes with package. Also it whacks your `node_modules`.\n\n#### Contributing \n\nFound an issue or a missing feature? Congratulations! :tada: That is the prize you win as an early adopter! GitHub issues and pull requests are more than welcome.\n\n#### Please note\n\nThis project is in a pre-release state. The API may be considered relatively stable, but changes may still occur.\n\n[MIT licensed](LICENSE)\n","readmeFilename":"README.md"}