{"_id":"formidable-playbook","_rev":"112-e0660f0b7456951e9208b480fbfaf290","name":"formidable-playbook","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.1":{"name":"formidable-playbook","version":"0.0.1","keywords":["best practices","frontend","backend","webpack"],"author":{"name":"Ryan Roemer","email":"ryan.roemer@formidable.com"},"license":"MIT","_id":"formidable-playbook@0.0.1","maintainers":[{"name":"formidable","email":"admin@formidablelabs.com"}],"homepage":"https://github.com/FormidableLabs/formidable-playbook#readme","bugs":{"url":"https://github.com/FormidableLabs/formidable-playbook/issues"},"dist":{"shasum":"fbb870af0cfd4b054c83338e1e5d6b3bcf4b3600","tarball":"https://registry.npmjs.org/formidable-playbook/-/formidable-playbook-0.0.1.tgz","integrity":"sha512-nDwtUpJcIII4eo0IZMxFcsPgimvFpqJYF3L7gFA6OWHriT8nXIsjtE26nGOgJqJZ3qny632AZQxokhmweFiT4Q==","signatures":[{"sig":"MEUCIQDmcM5M+HqxOUHeZe1a8K+27m2AMc+6FnMfIb3d2UbXPgIgf5kiTJrTGKGsK9DJT0K0cGyQO4djTREtqz/2TBhytGk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"","_from":".","_shasum":"fbb870af0cfd4b054c83338e1e5d6b3bcf4b3600","gitHead":"da4f60bab0e031b7395e5b3c806244b0e2857fd6","scripts":{"dev":"webpack-dev-server --port 3000 --config node_modules/builder-docs-archetype/config/webpack/webpack.config.dev.js --history-api-fallback","lint":"builder concurrent lint-react lint-config lint-test lint-examples","test":"builder run lint","start":"builder run dev","build-docs":"npm run build-md-toc && npm run build-examples","build-md-toc":"doctoc --notitle docs/README.md docs","lint-examples":"eslint --ext .js,.jsx examples --ignore-pattern **/dist/","build-examples":"npm run build-webpack-code-splitting && npm run build-webpack-code-splitting-ensure && npm run build-webpack-shared-libs","server-examples":"http-server examples -p 3000 .","build-webpack-shared-libs":"npm run build-webpack-shared-libs-clean && npm run build-webpack-shared-libs-lib && npm run build-webpack-shared-libs-app","build-webpack-code-splitting":"npm run build-webpack-code-splitting-clean && npm run build-webpack-code-splitting-app","build-webpack-shared-libs-app":"webpack --config examples/frontend/webpack-shared-libs/webpack.config.js","build-webpack-shared-libs-lib":"webpack --config examples/frontend/webpack-shared-libs/webpack.config.lib.js","build-webpack-shared-libs-clean":"rimraf examples/frontend/webpack-shared-libs/dist","build-webpack-code-splitting-app":"webpack --config examples/frontend/webpack-code-splitting/webpack.config.js","build-webpack-code-splitting-clean":"rimraf examples/frontend/webpack-code-splitting/dist","build-webpack-code-splitting-ensure":"npm run build-webpack-code-splitting-ensure-clean && npm run build-webpack-code-splitting-ensure-app","build-webpack-code-splitting-ensure-app":"webpack --config examples/frontend/webpack-code-splitting-ensure/webpack.config.js","build-webpack-code-splitting-ensure-clean":"rimraf examples/frontend/webpack-code-splitting-ensure/dist"},"_npmUser":{"name":"formidable","email":"admin@formidablelabs.com"},"repository":{"url":"git+https://github.com/FormidableLabs/formidable-playbook.git","type":"git"},"_npmVersion":"2.15.8","description":"The Formidable Playbook","directories":{},"_nodeVersion":"4.4.7","dependencies":{"color":"^0.11.3","react":"15.2.1","lodash":"^4.14.0","radium":"^0.18.1","builder":"^2.9.1","history":"^2.1.0","react-ga":"^2.1.1","react-dom":"15.2.1","markdown-it":"^7.0.0","react-router":"^2.6.0","formidable-landers":"^3.3.2","babel-preset-stage-1":"^6.5.0","builder-docs-archetype":"^3.0.1","markdown-it-named-headers":"0.0.4"},"devDependencies":{"doctoc":"^1.2.0","rimraf":"^2.5.2","http-server":"^0.9.0","builder-docs-archetype-dev":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/formidable-playbook-0.0.1.tgz_1473198360982_0.5488274686504155","host":"packages-16-east.internal.npmjs.com"}},"0.0.2":{"name":"formidable-playbook","version":"0.0.2","keywords":["best practices","frontend","backend","webpack"],"author":{"name":"Ryan Roemer","email":"ryan.roemer@formidable.com"},"license":"MIT","_id":"formidable-playbook@0.0.2","maintainers":[{"name":"ebrillhart","email":"emma.brillhart@gmail.com"},{"name":"formidable","email":"admin@formidablelabs.com"}],"homepage":"https://github.com/FormidableLabs/formidable-playbook#readme","bugs":{"url":"https://github.com/FormidableLabs/formidable-playbook/issues"},"dist":{"shasum":"bdeedb05beb523f0dd55771fddb080a0500be605","tarball":"https://registry.npmjs.org/formidable-playbook/-/formidable-playbook-0.0.2.tgz","integrity":"sha512-Z4Jpt4F7JBgSdaNLURQKzx6nyXSNhPziYbfi3LNTOVc//4n47BXPM2UMbqaY5YGHYvgsSpBWFF5zie5CxhvnzQ==","signatures":[{"sig":"MEUCIQCthbnW9pWW9AUOParrKxD6Mq3hUGRZvdIIlMyxEy/bYQIge06wmc1gkcOHDIMFrdtLSUXL1FEGCGojSvTZoTnNCrg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"","_from":".","_shasum":"bdeedb05beb523f0dd55771fddb080a0500be605","gitHead":"70d1e661f23b2845d04ee36228e0c2d1710428ce","scripts":{"build":"npm run build-md-toc && npm run build-webpack-code-splitting && npm run build-webpack-code-splitting-ensure && npm run build-webpack-shared-libs","server":"http-server -p 3000 .","build-md-toc":"doctoc --notitle README.md docs","build-webpack-shared-libs":"npm run build-webpack-shared-libs-clean && npm run build-webpack-shared-libs-lib && npm run build-webpack-shared-libs-app","build-webpack-code-splitting":"npm run build-webpack-code-splitting-clean && npm run build-webpack-code-splitting-app","build-webpack-shared-libs-app":"webpack --config examples/frontend/webpack-shared-libs/webpack.config.js","build-webpack-shared-libs-lib":"webpack --config examples/frontend/webpack-shared-libs/webpack.config.lib.js","build-webpack-shared-libs-clean":"rimraf examples/frontend/webpack-shared-libs/dist","build-webpack-code-splitting-app":"webpack --config examples/frontend/webpack-code-splitting/webpack.config.js","build-webpack-code-splitting-clean":"rimraf examples/frontend/webpack-code-splitting/dist","build-webpack-code-splitting-ensure":"npm run build-webpack-code-splitting-ensure-clean && npm run build-webpack-code-splitting-ensure-app","build-webpack-code-splitting-ensure-app":"webpack --config examples/frontend/webpack-code-splitting-ensure/webpack.config.js","build-webpack-code-splitting-ensure-clean":"rimraf examples/frontend/webpack-code-splitting-ensure/dist"},"_npmUser":{"name":"ebrillhart","email":"emma.brillhart@gmail.com"},"repository":{"url":"git+https://github.com/FormidableLabs/formidable-playbook.git","type":"git"},"_npmVersion":"3.10.5","description":"The Formidable Playbook","directories":{},"_nodeVersion":"4.4.7","devDependencies":{"doctoc":"^1.2.0","rimraf":"^2.5.2","webpack":"^1.13.1","http-server":"^0.9.0"},"_npmOperationalInternal":{"tmp":"tmp/formidable-playbook-0.0.2.tgz_1473203448658_0.15733890607953072","host":"packages-12-west.internal.npmjs.com"}},"0.0.3":{"name":"formidable-playbook","version":"0.0.3","keywords":["best practices","frontend","backend","webpack"],"author":{"name":"Ryan Roemer","email":"ryan.roemer@formidable.com"},"license":"MIT","_id":"formidable-playbook@0.0.3","maintainers":[{"name":"ebrillhart","email":"emma.brillhart@gmail.com"},{"name":"formidable","email":"admin@formidablelabs.com"}],"homepage":"https://github.com/FormidableLabs/formidable-playbook#readme","bugs":{"url":"https://github.com/FormidableLabs/formidable-playbook/issues"},"dist":{"shasum":"cd28cfd0528535f01eb309fb98113d1cd583d69f","tarball":"https://registry.npmjs.org/formidable-playbook/-/formidable-playbook-0.0.3.tgz","integrity":"sha512-Vs1M35wVjEESfREany1oNVyIg9KZ+n8fBAGGVGmvSylrglQ0HVoEYtec3RgG43UI7ddLPD4RZLZvVZkaIu0exQ==","signatures":[{"sig":"MEUCIQD5EsNAXxt3s+H74b5JHlXuLjlYIYWk545wtKroN9ymKAIgI8DOCJi4wtrUmVI17Rb2Nu+CHbXsyln+/fJFsALKS8k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"","_from":".","_shasum":"cd28cfd0528535f01eb309fb98113d1cd583d69f","gitHead":"0a2ad30eefa7c3afa38a426aaedf2eb980510e43","scripts":{"build":"npm run build-md-toc && npm run build-webpack-code-splitting && npm run build-webpack-code-splitting-ensure && npm run build-webpack-shared-libs","server":"http-server -p 3000 .","build-md-toc":"doctoc --notitle README.md docs","build-webpack-shared-libs":"npm run build-webpack-shared-libs-clean && npm run build-webpack-shared-libs-lib && npm run build-webpack-shared-libs-app","build-webpack-code-splitting":"npm run build-webpack-code-splitting-clean && npm run build-webpack-code-splitting-app","build-webpack-shared-libs-app":"webpack --config examples/frontend/webpack-shared-libs/webpack.config.js","build-webpack-shared-libs-lib":"webpack --config examples/frontend/webpack-shared-libs/webpack.config.lib.js","build-webpack-shared-libs-clean":"rimraf examples/frontend/webpack-shared-libs/dist","build-webpack-code-splitting-app":"webpack --config examples/frontend/webpack-code-splitting/webpack.config.js","build-webpack-code-splitting-clean":"rimraf examples/frontend/webpack-code-splitting/dist","build-webpack-code-splitting-ensure":"npm run build-webpack-code-splitting-ensure-clean && npm run build-webpack-code-splitting-ensure-app","build-webpack-code-splitting-ensure-app":"webpack --config examples/frontend/webpack-code-splitting-ensure/webpack.config.js","build-webpack-code-splitting-ensure-clean":"rimraf examples/frontend/webpack-code-splitting-ensure/dist"},"_npmUser":{"name":"ebrillhart","email":"emma.brillhart@gmail.com"},"repository":{"url":"git+https://github.com/FormidableLabs/formidable-playbook.git","type":"git"},"_npmVersion":"3.10.5","description":"The Formidable Playbook","directories":{},"_nodeVersion":"4.4.7","devDependencies":{"doctoc":"^1.2.0","rimraf":"^2.5.2","webpack":"^1.13.1","http-server":"^0.9.0"},"_npmOperationalInternal":{"tmp":"tmp/formidable-playbook-0.0.3.tgz_1473204812493_0.032324285013601184","host":"packages-16-east.internal.npmjs.com"}},"0.1.0":{"name":"formidable-playbook","version":"0.1.0","keywords":["best practices","frontend","backend","webpack"],"author":{"name":"Ryan Roemer","email":"ryan.roemer@formidable.com"},"license":"MIT","_id":"formidable-playbook@0.1.0","maintainers":[{"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/formidable-playbook#readme","bugs":{"url":"https://github.com/FormidableLabs/formidable-playbook/issues"},"dist":{"shasum":"e231031b69e34e4960b38fe7ed5c105961c047ca","tarball":"https://registry.npmjs.org/formidable-playbook/-/formidable-playbook-0.1.0.tgz","integrity":"sha512-ECU6H49eSda4K9z/6e5r/o8In6blacHIszuYlv/UNw9IWNZP2zjp20htOkoyHwcL9DdHmiOmhJaULdCshApNZw==","signatures":[{"sig":"MEUCIF0i9wvTVF70Fez70RAaE2WJc8XUpSMPSV6Nd4Mvmv/jAiEA279x1QPqhRvOYAJLsb9oOLCQlOBJc6OqbQI5qcPN0Rg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"","_from":".","_shasum":"e231031b69e34e4960b38fe7ed5c105961c047ca","gitHead":"708ade5ffe0284c91d8a6cde91ffcdb2f2b26d07","scripts":{"lint":"eslint examples","build":"npm run build-md-toc && npm run build-wp","check":"npm run lint","server":"http-server -p 3000 .","build-wp":"npm run build-wp-clean && npm run build-wp-lib && npm run build-wp-app","check-ci":"npm run check && npm run build-md-toc && npm run check-uncommitted","build-md-toc":"doctoc --notitle README.md docs","build-wp-app":"find examples/frontend -name 'webpack.config.js' -exec webpack --config {} \\;","build-wp-lib":"find examples/frontend -name 'webpack.*.lib.js' -exec webpack --config {} \\;","build-wp-clean":"find examples/frontend -name 'dist' | xargs echo ' ' | xargs rimraf","check-uncommitted":"test -z \"$(git status --porcelain)\" || (echo \"Uncommitted changes found: $(git status)\" && exit 1)"},"_npmUser":{"name":"ryan.roemer","email":"ryan@loose-bits.com"},"repository":{"url":"git+https://github.com/FormidableLabs/formidable-playbook.git","type":"git"},"_npmVersion":"3.10.10","description":"The Formidable Playbook","directories":{},"_nodeVersion":"6.11.0","devDependencies":{"doctoc":"^1.2.0","eslint":"^3.13.1","rimraf":"^2.5.2","webpack":"^3.5.5","babel-core":"^6.26.0","http-server":"^0.9.0","babel-eslint":"^7.1.1","babel-loader":"^7.1.1","babel-preset-es2015":"^6.24.1","eslint-plugin-import":"^2.2.0","eslint-plugin-filenames":"^1.1.0","eslint-config-formidable":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/formidable-playbook-0.1.0.tgz_1503000302035_0.2294509515631944","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"formidable-playbook","version":"0.1.1","keywords":["best practices","frontend","backend","webpack"],"author":{"name":"Ryan Roemer","email":"ryan.roemer@formidable.com"},"license":"MIT","_id":"formidable-playbook@0.1.1","maintainers":[{"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/formidable-playbook#readme","bugs":{"url":"https://github.com/FormidableLabs/formidable-playbook/issues"},"dist":{"shasum":"424b6979ca9e18d9bbcbaaeb2b61c52f9c4bd66f","tarball":"https://registry.npmjs.org/formidable-playbook/-/formidable-playbook-0.1.1.tgz","integrity":"sha512-rubyPmQ6i7xcWLWft2mu0KudivxXe1Tc2Z9wAJ0tfNmmlmY59yrkmLMUlKb+vGhhKBqmUGJ4u1iFxANb7OpPOg==","signatures":[{"sig":"MEQCIAEQbOEpgNMBPGIkgWl4BOqRpVmq1ETNWusBOfQe9HAOAiAoIRAqi7MfL2rXTBuRy9gLn488OSOPdevngjPLJZNntg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"","_from":".","_shasum":"424b6979ca9e18d9bbcbaaeb2b61c52f9c4bd66f","gitHead":"1dd18149565f640799c3826ac2ddd79832975859","scripts":{"lint":"eslint examples","build":"npm run build-md-toc && npm run build-wp","check":"npm run lint","server":"http-server -p 3000 .","build-wp":"npm run build-wp-clean && npm run build-wp-lib && npm run build-wp-app","check-ci":"npm run check && npm run build-md-toc && npm run check-uncommitted","build-md-toc":"doctoc --notitle README.md docs","build-wp-app":"find examples/frontend -name 'webpack.config.js' -exec webpack --config {} \\;","build-wp-lib":"find examples/frontend -name 'webpack.*.lib.js' -exec webpack --config {} \\;","build-wp-clean":"find examples/frontend -name 'dist' | xargs echo ' ' | xargs rimraf","check-uncommitted":"test -z \"$(git status --porcelain)\" || (echo \"Uncommitted changes found: $(git status)\" && exit 1)"},"_npmUser":{"name":"ryan.roemer","email":"ryan@loose-bits.com"},"repository":{"url":"git+https://github.com/FormidableLabs/formidable-playbook.git","type":"git"},"_npmVersion":"3.10.10","description":"The Formidable Playbook","directories":{},"_nodeVersion":"6.11.0","devDependencies":{"doctoc":"^1.2.0","eslint":"^3.13.1","rimraf":"^2.5.2","webpack":"^3.5.5","babel-core":"^6.26.0","http-server":"^0.9.0","babel-eslint":"^7.1.1","babel-loader":"^7.1.1","babel-preset-es2015":"^6.24.1","eslint-plugin-import":"^2.2.0","webpack-stats-plugin":"^0.1.5","eslint-plugin-filenames":"^1.1.0","eslint-config-formidable":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/formidable-playbook-0.1.1.tgz_1503589145168_0.8984994881320745","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"formidable-playbook","version":"0.1.2","keywords":["best practices","frontend","backend","webpack"],"author":{"name":"Ryan Roemer","email":"ryan.roemer@formidable.com"},"license":"MIT","_id":"formidable-playbook@0.1.2","maintainers":[{"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/formidable-playbook#readme","bugs":{"url":"https://github.com/FormidableLabs/formidable-playbook/issues"},"dist":{"shasum":"e6437ae319df20310dae45d5ac778e674e3f531b","tarball":"https://registry.npmjs.org/formidable-playbook/-/formidable-playbook-0.1.2.tgz","integrity":"sha512-7PXftrT34NpvDPfJhzvpDF0ZGdjmRTRI4eAwWTwm1xflHPCBGBHdQp8Ofqvp+VnxzYEbMyQQaXg7e3IIDzT7xA==","signatures":[{"sig":"MEQCIEqv+VDlW+IRV4LmUvHqQVIkIMgFIM0gB/l5Pz5DXqAqAiA81eG1U4l8Up+ug3ytSIl6MmtJXpT+IN4f14wsvE/O+Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"","gitHead":"536b23fb030c36948d621b3f61c9b11300086f4f","scripts":{"lint":"eslint examples","build":"npm run build-md-toc && npm run build-wp","check":"npm run lint","server":"http-server -p 3000 .","build-wp":"npm run build-wp-clean && npm run build-wp-lib && npm run build-wp-app","check-ci":"npm run check && npm run build-md-toc && npm run check-uncommitted","build-md-toc":"doctoc --notitle README.md docs","build-wp-app":"find examples/frontend -name 'webpack.config.js' -exec webpack --config {} \\;","build-wp-lib":"find examples/frontend -name 'webpack.*.lib.js' -exec webpack --config {} \\;","build-wp-clean":"find examples/frontend -name 'dist' | xargs echo ' ' | xargs rimraf","check-uncommitted":"test -z \"$(git status --porcelain)\" || (echo \"Uncommitted changes found: $(git status)\" && exit 1)"},"_npmUser":{"name":"ryan.roemer","email":"ryan@loose-bits.com"},"repository":{"url":"git+https://github.com/FormidableLabs/formidable-playbook.git","type":"git"},"_npmVersion":"5.3.0","description":"The Formidable Playbook","directories":{},"_nodeVersion":"8.3.0","devDependencies":{"doctoc":"^1.2.0","eslint":"^3.13.1","rimraf":"^2.5.2","webpack":"^3.5.5","babel-core":"^6.26.0","http-server":"^0.9.0","babel-eslint":"^7.1.1","babel-loader":"^7.1.1","babel-preset-es2015":"^6.24.1","eslint-plugin-import":"^2.2.0","webpack-stats-plugin":"^0.1.5","eslint-plugin-filenames":"^1.1.0","eslint-config-formidable":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/formidable-playbook-0.1.2.tgz_1505339139421_0.6492007370106876","host":"s3://npm-registry-packages"}}},"time":{"created":"2016-09-06T21:46:03.453Z","modified":"2026-07-20T21:16:38.886Z","0.0.1":"2016-09-06T21:46:03.453Z","0.0.2":"2016-09-06T23:10:48.882Z","0.0.3":"2016-09-06T23:33:34.370Z","0.1.0":"2017-08-17T20:05:02.194Z","0.1.1":"2017-08-24T15:39:05.263Z","0.1.2":"2017-09-13T21:45:39.552Z"},"bugs":{"url":"https://github.com/FormidableLabs/formidable-playbook/issues"},"author":{"name":"Ryan Roemer","email":"ryan.roemer@formidable.com"},"license":"MIT","homepage":"https://github.com/FormidableLabs/formidable-playbook#readme","keywords":["best practices","frontend","backend","webpack"],"repository":{"url":"git+https://github.com/FormidableLabs/formidable-playbook.git","type":"git"},"description":"The Formidable Playbook","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"}],"readme":"This is our playbook. It is the foundation that allows us to architect & design systems that move our client projects forward.  In it, you will find practical approaches for building frontend & backend javascript applications. This is a living document, and we intend to share our knowledge as we continue to work towards making the web a better place.\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n\n\n- [The Architecture Playbook](#the-architecture-playbook)\n    - [Have a single infrastructure](#have-a-single-infrastructure)\n- [The Frontend Playbook](#the-frontend-playbook)\n  - [Webpack plugins](#webpack-plugins)\n    - [Start with good base plugins](#start-with-good-base-plugins)\n    - [Code splitting](#code-splitting)\n    - [Shared libraries](#shared-libraries)\n    - [Scope Hoisting](#scope-hoisting)\n    - [Tree shaking](#tree-shaking)\n    - [Source maps](#source-maps)\n  - [Babel plugins - In Progress](#babel-plugins---in-progress)\n  - [Other tools - In Progress](#other-tools---in-progress)\n  - [Performance auditing - In Progress](#performance-auditing---in-progress)\n- [The Backend Playbook - In Progress](#the-backend-playbook---in-progress)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n## The Architecture Playbook\n\n#### [Have a single infrastructure](docs/infrastructure/single.md)\n\nA unified development effort should use a single infrastructure to control all\nsimilar projects.\n\n## The Frontend Playbook\n\nOur frontend infrastructure is based around\n[webpack](https://webpack.github.io/) builds, but most of the guidelines / goals\napply to any build tool.\n\n### Webpack plugins\n\n#### [Start with good base plugins](docs/frontend/webpack-plugins.md)\n\nWebpack has a rich plugin ecosystem, including both\n[core](https://webpack.github.io/docs/list-of-plugins.html) and\n[open source modules](https://www.npmjs.com/browse/keyword/webpack-plugin).\nWebpack also has a straight forward interface to\n[write your own plugins](https://webpack.github.io/docs/plugins.html).\n\nA short list of plugin recommendations for best frontend performance include:\n\n| Plugin | Recommend? | Notes |\n| ------ | ---------- | ----- |\n| [`UglifyJsPlugin`](https://webpack.github.io/docs/list-of-plugins.html#uglifyjsplugin)| Yes | Minimize code |\n| [`DedupePlugin`](https://webpack.github.io/docs/list-of-plugins.html#dedupeplugin) | Yes for v1 | Collapse identical code chunks to a single reference |\n| [`OccurrenceOrderPlugin`](https://webpack.github.io/docs/list-of-plugins.html#occurrenceorderplugin) | Maybe for v1 | Reorder module and chunk ids by occurrence count |\n| [`DefinePlugin`](https://webpack.github.io/docs/list-of-plugins.html#defineplugin) | Maybe | Define constants for better optimization |\n| [`lodash-webpack-plugin`](https://github.com/lodash/lodash-webpack-plugin) | Maybe | Optimize `lodash` |\n\n#### [Code splitting](docs/frontend/webpack-code-splitting.md)\n\n[Code splitting](http://webpack.github.io/docs/code-splitting.html) is a Webpack\nfeature that enables a JS bundle within a single build to be split up and loaded\non-demand in smaller parts. Code splitting is appropriate within a single page\nand build.\n\n#### [Shared libraries](docs/frontend/webpack-shared-libs.md)\n\nWebpack shared libraries are slightly different from code splitting scenarios in\nthat the common dependencies are shareable across builds and require a two-part\nbuild. In a first step, a common shared bundle and manifest is created. Then, in\na second step, entry points ingest the manifest and omit any libraries included\nin the shared bundle. Shared libraries are appropriate for better long term\ncaching within a single app across deploys and across different projects / real\nHTML pages.\n\n#### [Scope Hoisting](docs/frontend/webpack-scope-hoisting.md)\n\nScope hoisted bundles try to place bundle modules into a global bundle scope so\nas to reduce the overhead of function calls for each bundled module. The problem\nand scope hoisting solutions are discussed in detail in Nolan Lawson's 2016\narticle\n[\"The cost of small modules\"](https://nolanlawson.com/2016/08/15/the-cost-of-small-modules/)\n\n#### [Tree shaking](docs/frontend/webpack-tree-shaking.md)\n\n[Tree shaking](http://www.2ality.com/2015/12/webpack-tree-shaking.html) is a\ntransformation process for [ES6 modules](http://www.2ality.com/2014/09/es6-modules-final.html)\nwhereby ESnext `export`s that are not used in a Webpack bundle can be isolated\nduring code bundling and removed entirely by Uglify dead code elimination.\n\n#### [Source maps](docs/frontend/webpack-source-maps.md)\n\nThe Webpack [SourceMapDevToolPlugin](http://webpack.github.io/docs/list-of-plugins.html#sourcemapdevtoolplugin)\ncreates [source maps](https://github.com/ryanseddon/source-map/wiki/Source-maps:-languages,-tools-and-other-info)\nwhich allows a developer to view / debug developer-friendly source code instead\nof the optimized, mangled, and minified JS bundle of a frontend web app. Source\nmaps should be enabled for both development and production.\n\n### Babel plugins - In Progress\n\n<!-- **TODO: Write up intro section / doc - https://github.com/FormidableLabs/formidable-playbook/issues/9** -->\n\n### Other tools - In Progress\n\n<!-- **TODO: tools - https://github.com/FormidableLabs/formidable-playbook/issues/8** -->\n\n<!-- * TODO: little-loader for script loading -->\n\n### Performance auditing - In Progress\n\n<!-- **TODO: inspectpack reports, audits - https://github.com/FormidableLabs/formidable-playbook/issues/2** -->\n\n## The Backend Playbook - In Progress\n\n<!-- **TODO: Plan, write section - https://github.com/FormidableLabs/formidable-playbook/issues/4** -->\n","readmeFilename":"README.md"}