{"_id":"razzle-examples-with-vendor-bundle","_rev":"41-11b9cd1eb2a559b30edc02c1b070dada","name":"razzle-examples-with-vendor-bundle","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","dist-tags":{"latest":"3.0.0","next":"3.0.0-alpha.2"},"versions":{"0.8.4":{"name":"razzle-examples-with-vendor-bundle","version":"0.8.4","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^0.8.4"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@0.8.4","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"dist":{"integrity":"sha512-s27Ab+nlVzULveLKMoQzgRxSEarB/wSA8BRdeD031z3yjDPrtsYk2vyFW1su4UzopZw6EBnZMbYYxJ6jydCyMw==","shasum":"e3c6906508dda3c0866e96c211fe2afa8d6488c5","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-0.8.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZhWHwOVwe4wl87Hlvp7YPfG+4WcKgaO7AUEPuVeuBiAiEAziHJRlyFYxf00bf9bPbBY6I5y4sVRY+HEbG+If7rSmI="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle-0.8.4.tgz_1506982445524_0.7963380415458232"},"directories":{}},"0.8.5":{"name":"razzle-examples-with-vendor-bundle","version":"0.8.5","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^0.8.5"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@0.8.5","_npmVersion":"5.4.2","_nodeVersion":"8.8.1","_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"dist":{"integrity":"sha512-Zkz+d5yKeTHk+O7PhRNuNu84rVxkIJM4ZKesKl4yaiF16AZgH0FxU62LBZrdsHSXK9FkXa2KOIc/k//WdwcOsg==","shasum":"d89cd82c3c6435029e0dbe55ef0b7d6efdc50e14","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-0.8.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICarYowMzDp2Aa2EsXJAXA0hbjCWkuZQ+srCiygT4AWBAiA7r+niXzQuApuJHH9E5F7bhuOAVNtOEmAFULq+UbDwgA=="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle-0.8.5.tgz_1511029337002_0.9034200133755803"},"directories":{}},"0.8.6":{"name":"razzle-examples-with-vendor-bundle","version":"0.8.6","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^0.8.6"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@0.8.6","_npmVersion":"5.4.2","_nodeVersion":"8.8.1","_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"dist":{"integrity":"sha512-rgE9v4ES1DMjZYMwDfmzNFJM2qJBu+VhvA/blA75aVOiyGhGJ3msmz/4hd7D62tBzuGWBq12TWE0JibIRHOIXg==","shasum":"f865d647e3594ad195da3ccb23b47039c2b4a6ed","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-0.8.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICB3K/ivNSndcaPbJG4LMilcJ7WdJw74dbwpTm6A6JvLAiEAlBBaWL+OjNZZJ2LzNBd38Ch2mlaeA4Sm18lpAAhbYwI="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle-0.8.6.tgz_1511033141273_0.5832814786117524"},"directories":{}},"0.8.7":{"name":"razzle-examples-with-vendor-bundle","version":"0.8.7","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^0.8.7"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@0.8.7","_npmVersion":"5.4.2","_nodeVersion":"8.8.1","_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"dist":{"integrity":"sha512-ZhhPpF62p5v4RKTBJ9vlQ0tumtRI6O+Vl/oEhVq01XaDPdnH7nqSChxFfFvE1uVG+cpWWYZISnZq30V21ltBsg==","shasum":"03d6b142ce5bacc51f336085655a531b3a4ac2ec","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-0.8.7.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF70k+Wyt3M+YyEh9tU5N9cR5IxbdPUuOpkq1aYk8ZqXAiEAzbccarYq705JSHEFUDUB2Z/QUNSw9ZADXm/yQ/xlmhI="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle-0.8.7.tgz_1512576643792_0.7995429919101298"},"directories":{}},"0.8.8":{"name":"razzle-examples-with-vendor-bundle","version":"0.8.8","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^0.8.8"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@0.8.8","dist":{"shasum":"4696717354aa7413190360c86fd983852643d623","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-0.8.8.tgz","integrity":"sha512-l+NyGfx3+j4lQXbejRQoWhzRoQwWj2SnxBuzAWo6llmI6pzq5DlKsGqEKSQ0tAoKdFJm80SthIjNPGEKWIQTBg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaRmJp2s+r3OZam80Q9nfOAnrQIXrKT7SXkY87i7DKOQIgebZ2nZ27CY7trccYMINU8RNWknOfkl3kDkqVxbLwreI="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle-0.8.8.tgz_1517334561643_0.9475471170153469"},"directories":{}},"0.8.9":{"name":"razzle-examples-with-vendor-bundle","version":"0.8.9","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^0.8.9"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@0.8.9","dist":{"shasum":"c150e95b437aa7e26808b5e92635864810a19a4d","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-0.8.9.tgz","integrity":"sha512-+3NL3AIugCubGEbMpylvaIefMQfY06MdrwEDu/M+O3VxWzAwuk14P7PUHhDRJKCqqpE86LzKe22XpMmfZaSfqA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIrVl3hERXXXLq2DQCPQpDSua8io9a3iQp4brb5OE2igIgHB2c1577yC7CHu2jGSpjBM4+8NbHdLIhr69eIj1mfR8="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle-0.8.9.tgz_1517334779996_0.10508761694654822"},"directories":{}},"0.8.10":{"name":"razzle-examples-with-vendor-bundle","version":"0.8.10","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^0.8.10"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@0.8.10","dist":{"shasum":"1f273781693edce93aa234ec05d16dc282d4a866","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-0.8.10.tgz","integrity":"sha512-k1YEV0tkCZZco+F4i4a/CGcF02A2hseowTaqtNf91HO6VBK70wpdEef9Os/+F+N4Tl/XIb2wnTEeOPQ1H2S4PQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF1y7rQ/whnVvyWtTs05Igzx7LFOAyA1rrPfy7GsSiy4AiB8ul2odUr3+oWNa4q+SWbGSe3X0wdKVDioMbHzDeErUg=="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle-0.8.10.tgz_1517335657556_0.629864577902481"},"directories":{}},"0.8.11":{"name":"razzle-examples-with-vendor-bundle","version":"0.8.11","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^0.8.11"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@0.8.11","dist":{"shasum":"09ec2335ffe13baa8531f4b987708535224d49f2","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-0.8.11.tgz","integrity":"sha512-4CcFNt/gSwaProVBBi6tQ2xavwKSEraSCpS8CiQvwQzHm4oRrHny3iUIt67/GElWevpEykwX7yTigHDUPFODvA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSJGvBQxNdPZ7IncqnIWajQzyRWhorNd3/wYzL1KXKewIhAM3aMJQufy4jYOxrpQxw5BQvGytbvAohrKYXTnhbXjMI"}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle-0.8.11.tgz_1517336912870_0.23974118195474148"},"directories":{}},"0.8.12":{"name":"razzle-examples-with-vendor-bundle","version":"0.8.12","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^0.8.12"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@0.8.12","dist":{"shasum":"c1f1100807b6d8b10d188862d0bc0bdda1f739fd","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-0.8.12.tgz","fileCount":13,"unpackedSize":42014,"integrity":"sha512-QszBe33hyzXdjgnQ24YL1TyjRsiP7FGYxoorTeCKOiI7fPyM3iOmNnMmFKm7QHjf2t1lB2xNFtEXGx9FOcy+eQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8bsm8y6L+7XIjpFZZXcUj7MuHpq8Vv0aBmDJtQwd8RAIgCIQH3Adg/3N/ALQclzvdyBcFx7PRcJJZVCSj5pctdFQ="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_0.8.12_1518549527377_0.7140890830949491"},"_hasShrinkwrap":false},"2.0.0-alpha.1":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-alpha.1","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-alpha.1"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-alpha.1","dist":{"shasum":"34a79c978988458049cc8e42014064aa26302b07","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-alpha.1.tgz","fileCount":13,"unpackedSize":40903,"integrity":"sha512-kOFFNtVVe7rhVyW0MY3eL8c9j3nGlWPFO1wyjmFasTF+S9Gg2gXfsnKJQY8443DA8fz1oj+6dCKR5QEx5OTpMA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQYgxFvUL71r0HYPOttFBLsyP7WuYasd2HNgWeyDmhEwIhAKi0pp9vmmm8vffdldUmUKYRRtRvX4Br9NSz89otGScZ"}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-alpha.1_1521661305956_0.05998873214965794"},"_hasShrinkwrap":false},"0.8.13":{"name":"razzle-examples-with-vendor-bundle","version":"0.8.13","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^0.8.13"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@0.8.13","dist":{"shasum":"4749195e4ce524de193aa9fe76504ff13d68ad06","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-0.8.13.tgz","fileCount":13,"unpackedSize":42014,"integrity":"sha512-6pVmREaKcCQkuogFSDhOmUqYM9H+aXsLr2xVhsdBzT+ImDL34wd6xeAwK8nes+zYr6oOQCASPcE+XEIQdb1SIA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEbstWtwvcpUwm4MOhfy9H/Da/hOYu5xUIs+Lb4YvLGkAiAzJ965/3lDaZB+1C6NjcY8rqAXzHLQQkhuNuOt2QUn5g=="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_0.8.13_1521661526656_0.8098531851689716"},"_hasShrinkwrap":false},"2.0.0-alpha.2":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-alpha.2","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-alpha.2"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-alpha.2","dist":{"shasum":"9f8d01f5145a31a1966d629769f1012e1526f02f","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-alpha.2.tgz","fileCount":13,"unpackedSize":40903,"integrity":"sha512-7ovJjwqumIY/3AoR/YZPfwIC6oBJOwcDqVM0NITpvPZmgpUQvnx4wRK/v8T38RFoj8HQWMcNxnU3SxUinSIbbQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPQheaqUaNFzAleeyiZXaY5L2sLaiYcII9C6+Yig7QHAIgf6cWHGvUEUtTMvfpVTn4OIaeMi88h7XLKPIm1+/gFrY="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-alpha.2_1521661603724_0.8599834202505932"},"_hasShrinkwrap":false},"0.8.14":{"name":"razzle-examples-with-vendor-bundle","version":"0.8.14","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^0.8.14"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@0.8.14","dist":{"shasum":"1aff1c473ddd6a333493cf1d5a0c48e1b61d93ab","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-0.8.14.tgz","fileCount":13,"unpackedSize":42014,"integrity":"sha512-PO/oUXtRdKjpAzvqGqRAeSc/5SRTovkoM8fObZU0Nhst8OIwsnYcitvC8OUPDGT3YNvh+wt9XDex7q9ef3v0eQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCCFuKKp64/6uUZ+Q04T3cNtKl8DmFQy5Dex5w4NFC+gIhAPcqIMJ+6CP2fBZBlRlCHfn8rcJ+QL+iOxWDQvDulTo5"}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_0.8.14_1521661756930_0.22849466412935704"},"_hasShrinkwrap":false},"2.0.0-alpha.3":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-alpha.3","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-alpha.3"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-alpha.3","dist":{"shasum":"71fbdbc2e72b962066e4021e04242ad71033586d","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-alpha.3.tgz","fileCount":13,"unpackedSize":40903,"integrity":"sha512-dWKUfSRpcG6yk0P1bemcMD2c0DyiSdFZgPoa0pPXuVC91IMlE94hRVGLyAeW+fPk1FA04UlJ+hDtZ0VeeGT74g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH9BF7uYPIgxQ3Y3kJiQJxAGp+tEIyaenfNxE1BqMs8eAiAciU47AJGnhDqnojh5g0sHrinp0Eld9xHVxl0ozs2mZA=="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-alpha.3_1521661883029_0.9310241086732585"},"_hasShrinkwrap":false},"2.0.0-alpha.4":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-alpha.4","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-alpha.4"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-alpha.4","dist":{"shasum":"124b470e5a8fae7773423b00f181cb0a45a18623","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-alpha.4.tgz","fileCount":13,"unpackedSize":40903,"integrity":"sha512-qcxRJnFhkRSOQ2HIgaRhUxts1KmAN4RHHVfJsi7bJpyBg9PoJNo6hnwH3JPvLFgnU4PVQRlUJM+RByfCbJ4CIA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtxYy1uCQy0XUPAU4Pqr1LlNqlIDxIzjmXzkrbjeyYowIhAKRBZF730aSQjOAvsaEm3enb/ml6QQeYdwp4Db+72em0"}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-alpha.4_1522077840391_0.2528503095645027"},"_hasShrinkwrap":false},"2.0.0-alpha.5":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-alpha.5","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-alpha.5"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-alpha.5","dist":{"shasum":"91be79e440dc10f6b5a034fdcecb6981d102d34e","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-alpha.5.tgz","fileCount":13,"unpackedSize":40903,"integrity":"sha512-3G6he3q6jy7MN8shw3v2c89rI6GqlsnOK78h8T1VtA9gHOwCh8VAzeAx/xD/ckiyk0Cgdggt6p6XGyNaxg1R0w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCF5p5/3t1WnhDdhzbnYY6qqPc8aIJzSTIMrUt7Fca8GAIgNYpNzPwicYxVUik5TJ/CC/wz6qr9bQOMCEBuAlahv0Q="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-alpha.5_1522354625350_0.9232544707860086"},"_hasShrinkwrap":false},"2.0.0-alpha.6":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-alpha.6","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-alpha.6"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-alpha.6","dist":{"shasum":"2d3c14348e5a87e41df2ffe00e105964e1fc3663","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-alpha.6.tgz","fileCount":13,"unpackedSize":40903,"integrity":"sha512-05XNxgbjjPgEF2bQ+chH79w/dcgF1Z/IzFcIT3GIZ2EOQY/c92bitJ1xIgQNcIpVHkPt9EKKvhZzRujephu9Wg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCX6Pc5Dka2yRnnnQNx/Myr+OnbMRC+2edGpiRV5zR5BgIgXRxst6GOLlXH0RIlIN/UOi9JlXYEGRpItmxUTBVoQ0M="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-alpha.6_1522685771943_0.9309586101321843"},"_hasShrinkwrap":false},"2.0.0-alpha.7":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-alpha.7","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-alpha.7"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-alpha.7","dist":{"shasum":"d6e3d0b0bdf6335ce14c28e9d2981c64d5827fbe","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-alpha.7.tgz","fileCount":13,"unpackedSize":40903,"integrity":"sha512-UvYlzLiBQHHc8i11J3m1keS8yCNAJHqiMhUmRuCMlf8uXaHbWX7GRC6AmE9zc88DpCvqcb8Iz6rGJLFaZWgh8w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9+ZN0OmZEVhMB7gI/sfnL9VImrwoXhbMysG55veF0egIgdLXQnwihdmNEGMW4nBrZLDLKroq4wW029SZ0JLKqNJ4="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-alpha.7_1522686778018_0.5862984856130209"},"_hasShrinkwrap":false},"2.0.0-alpha.8":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-alpha.8","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-alpha.8"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-alpha.8","dist":{"shasum":"28ea11b090250da4939801552fc7e62ceb2e1f55","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-alpha.8.tgz","fileCount":13,"unpackedSize":40903,"integrity":"sha512-AGohaAVtMeMAqYVKmFH9X3H3yAJxVL6g3GhzqIayue62fa7OobCTQ/2kqo/rMmuLh0svW3zJiCF/n6pMzqVOTw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPwkA5zu+0mLVFGdP10h5HTXfECe579QQM4Idv5kecwQIhANjwb0amzG4nXO0t7iKC79BO8tKYAl+AwnWsenfMYd5K"}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-alpha.8_1523306151945_0.7708377837444391"},"_hasShrinkwrap":false},"2.0.0-y.0":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-y.0","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-y.0"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-y.0","dist":{"shasum":"9c3b4bf631da9614b609ccfe42a33fa09abe2ada","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-y.0.tgz","fileCount":13,"unpackedSize":40895,"integrity":"sha512-RlxB44rUdberN+cQl93+N03YTpDwbMTtCzZ4V2Mu35BPkfTJfw96fZ8nFUcAVmZH8419laPEBemRIdems+vVTg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHFH5VT67Hj9CuzzWdQb5BSehD1rm5y0UDXgA8SJhuqZAiEA1WBcMWNd4fIJkR/+OpvjtikrIAtS6ysP1oJdTy3lMF0="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-y.0_1523387360883_0.4458467744319268"},"_hasShrinkwrap":false},"2.0.0-alpha.9":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-alpha.9","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-alpha.9"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-alpha.9","dist":{"shasum":"7c5d84df9b6dc921a87700488daec2aa411d6b35","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-alpha.9.tgz","fileCount":13,"unpackedSize":40903,"integrity":"sha512-SztUjUHp+VGhN4RNy3JPLDu5Tn1NegPYnpf3r2u9Mmvq6axW7jCUrYZzYGwFLOVadvj8/KVXg5cif1kH8bJrWw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFZSBtDenuV4O/OmzH3vvSwitAXPPfGvg29ZD+1mYWqAIgejeD8LqrEe5G9rpSaira2S9BrrYq84NFY0MyZk4cRck="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-alpha.9_1523387472538_0.4696617629929203"},"_hasShrinkwrap":false},"2.0.0-alpha.10":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-alpha.10","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-alpha.10"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-alpha.10","dist":{"shasum":"2bfc90f90d9a96b242a06c58b8ddd231ec3a6d7e","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-alpha.10.tgz","fileCount":13,"unpackedSize":40905,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3e1ACRA9TVsSAnZWagAA5QAP/iD44HEKl0CHg2cWEw1Z\nUOEcD2LbaD9aduHLCATRfRPnxLYmzPSmS3+0+l8/FrW6VobADxxsgX0a1nj+\njZoaUM31lRTWNxqleyltrfJzCLLE41ZFZHXwa15j7/UK+gCeAfj9tiZjMHrP\nMcbHGuEwQdoWg2aqtICxL8PHU3/vRB7yyFh/dPVZWTYjDKA4QlkOg7mf5zYV\n0HQX6a+UButhSKR9zRpIBYdQGZCXseKZXbq2dLUszsvqOtWC3BFrLmtYbXhh\nfAN+Ptr6N7IjO5Pos4jhnXKyZMzy8C37A8TfJq51xFyYNilVRxfer2Y3uuXh\nIT5o6djxTZzfgcBHfYdT5oEUBxrZbJSarYtzTWid1PFqV/+ROhKBMBjM7MDS\nP5uGLyAKYtnheju0XvRcAVrBAv+FvfF674B2G0GY45zXvajICYeHXcxHMOlG\nVcLFlveIYOq0tHsVfJbjw+ELoDUykfh++48EPOLC9//d0f/XnUNnM8gHVXRL\nDx1aRK4nLtdENt68FOOwmT4FejLgzDCE5t+2Sfkb7Ld2l/nqMv/J+xLYqv7+\n4oJ7iB6ZCJRD4IjAqssCtxTMM+EvrBktB5g9osejo5gB928Bp97/Ss7XfyX/\naiaUtv1pcwCeIH21CvyBFSh2E4g0AtK+Q78/xtMqpY3gySc7La1Kj2S+BvUW\nrFlF\r\n=sY8M\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-HVsTX9xn4BPTZ432zUq7IAcCXCpoASqTlSr3a4a78kAL6Wsihcm4bf+07XQnmyhUs47RIOkDndTA1PtVqGvClw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgBi2WGoOkzFvAaudTsDYMg8BKcFyOIkn8XFGzbp3KsQIgNc4vEkzRHkuM+LAp/EFwAcc1fSUoja0c4BCCOpCFBC4="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-alpha.10_1524493631946_0.25642305877117977"},"_hasShrinkwrap":false},"2.0.0-alpha.11":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-alpha.11","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-alpha.11"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-alpha.11","dist":{"shasum":"d6c58868bf0a8b6017b00008cf6837850ea0c1b2","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-alpha.11.tgz","fileCount":13,"unpackedSize":40905,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3e5vCRA9TVsSAnZWagAALBsQAJL0jAYWClXYi5XCYQ+p\ncoX8I5BBH8d9ELWK0bhWZKH+800o8vkwPZ/6SF3ezg5OjV/EwelfbDCwu4sa\npOwqRcWMuuj7zFzdZBgEgEcAccLyhoqP307QcRYn7QWYttiuh+z5pird2Y2M\nGYSEiBMzL/syegRm39Rv+vu9ookdb7yrZo5R/nXna//I60lNWennpPFwJeqO\nVxVQLY/zCcXqrkQHMOGOoM3qwUaUxvcKnwPpn+qvelb4oi3RSpuYXUdQPGgm\n8bFPD4tgG4IZaEX3zvayhkNBdUnOa2Gp5qFgGuqreoCtPJ6DIHV105JaKx9D\nqHnFmPFJKILTxUuw2DR/idzLGP3hpNoE+XTC4haLMVP0MPcqBCkkrX/yenXx\n020o5cWuVdbbPo6E1deMOyTk2owYl5JzRC2tGSxCDMao5wvWbPJhyRFFY8lp\nF9eFsy5vKHL4I5q9g8eF17iTuqiLTc1xbVpAVL2OoomHKUUBnuMoLm/17v4M\nTAZxDkbDXYe6QJoeV/+BIDK4/tUTNdgZDZ5nJIUJpO83xDc3teyFt4BFtHCQ\nGPTGcjIz1KxaBx6GAK9BgPmmC0x16fbPq8SF211GwAm/qOoH2MAhN2+EHSgQ\nCC2cbn5PuQosdH3UOSKaFFwU4HlYGlykEo5thtFTO8VwixVoYzzS4TS/t1/9\nqOYo\r\n=t/6V\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-XaPjF2iMzhan1gnltFXvll/bCCm1gliGb75t+LMPuCmJJ4ye8bvf2zPRaZM1rPRws1lq5u8SOwP74KqNppwKRg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAU4nvhHvzVGwvTKsgCGAXooU/OrHwfK/Flg++yHiFrZAiEAi+3P+SA18vj22mLqtJsFmPil+kTKpTsKlyfW0fEbJkM="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-alpha.11_1524493935006_0.4433105769579453"},"_hasShrinkwrap":false},"2.0.0-alpha.12":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0-alpha.12","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0-alpha.12"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0-alpha.12","dist":{"shasum":"f9aa91cad41917d21071ad636bb98da3cb2049fd","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0-alpha.12.tgz","fileCount":13,"unpackedSize":40905,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3hgxCRA9TVsSAnZWagAAzeMP/1Ndb5uWQ9uqUhTViJLm\nRSqKNyYueNgaxWTZHqaTjyBWEtmLAcwbk32Zei2YqIgoOoULsZYrIMv0w5jH\n8oHX7oECW3Z5QflIjNOJbTGZfp9dtGMapsNU9XICtj4OY9Z/LPqfY4dxZZKD\no1BJtcV7MJttdknjpYj+0mtPvgbYFSkiU7tCIoZOHJ7cnbuNnV02JPSHbocl\nnYQvEai862rnv6+lW0SdbtkGbKUlj3K0Oab1dxVzXHnjYVQBdvvYX8seRc+4\nTsJl0ka9HoNsAMPG318ZvlYS6+NLMvfyiA8sAZ1oPP+wHvsgWbQ18X5XkDs4\n7nzCPhvhoB4EEii533qcx+E6JtGfZEEe8kN8DS+qsJmcCF1ECHSrgpBrJwRC\nOKi8s77wnWCGtTDxaRZ2YQKgUtddk+vFCVzZIsEAc+zwZmIbZnhQrR2fTeEx\nUk6k8awmxz4rR7FAXeDk99c0jMVx9F1YwU4qgwe7RrLd8iEyRxJkO52VbKMw\nVW1g8Vq4nzJ4aeA91VwpSPJn974AOCGgzn1u3sFLet8VohbCxEdjieOpI7Hk\n2cg9wD1aKrVtWHWOlNLSstctl+7uT6JIY9ctwt1P194+3/dp4ObRLVm38qM2\n5sy0JSm/jJWM3o8d7QBIub26edsF3R8vQSx18YXV4DTahinDwwgul+M8aLmN\nh6hL\r\n=8z1R\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-LYoQRvdLkghq2Tko1CTXkEjkFO62Ne8fpiRXe6c8SbCNvU+ZHJFLlmjFpksR4W4OSonGehkfPLiomAqN/FW6VA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMssdAwlVkbmbIFkOhqCrHWPjDPT3nlN2g/XAV/0cX5QIgLfQhljXM4SlY5ewf7GT3hS+DmT6rpLnUkbeZE9d4QaY="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0-alpha.12_1524504623962_0.6783842391176855"},"_hasShrinkwrap":false},"2.0.0":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.0","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.0"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.0","dist":{"shasum":"5c6ab2144cee7c24714c23750ddc55df706b113a","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.0.tgz","fileCount":13,"unpackedSize":40887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDvKlCRA9TVsSAnZWagAAQPEP/3ubIOH6jijR1OFiuJpv\n5aeePkYK14Shs3tDz6w126j9/4HtH/OzFrrlgYkBW0y4zG9t6o986XE87hmb\nC6C/X2OzAJ/sTh55s14s4pRy3FxOIP2Q85u+9nUUM0yS41QlStjdzrABL1iZ\nZO4aHnjMUAPBdXvw1O8LiVdGPO49nj8ZESWFl2Xlg2ruOdakku3m/bS/tDfV\nz1+k9HcxVZJZuLHmQkJui+zDIN5XebiuFFaYCOiTw4ChcBmrBe74ngTbNY4K\nghH7pWH3bsa6lAfL2LeyqYxjslQj42TAWIvYK+27u+qik6tvDP5eaCgb7nZP\nEFk+6BFa4ikXmm1aESFIWPBvKf8Rd01q4TnU+QshDP3WtoBUuo3m6oRJ+m08\nMHtMWPqMkYmcZ36URvpllWqtDqP1V5nNueDIDQ+Jma0usxZYkl/zq3GI9wwr\nfObAwmV4ln82zcMN4QF8hIFtN5VzskH2rJ+mCGQbNDp2Bu4FlALdZAWq3xZk\nq0dLGscXiPoZclkl6MX4aMGfYh5SAob1VGGvNwKgtVoAI12GbAq586HgO/wn\nw1kblhUaa1zvzPzzNXGLPJAXnk1DfhK53Ntj3wTGaGpOKPhD1bwl9Kzwjefj\nqQu40R+SEMfXOvL+BauPM7e1wpNc5eaLRD/6LVPHy1pIsB6J3VC4Kj2JiFyX\nzKGp\r\n=I6gF\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-CbN0gSZ7PyuZDYvXdpqRa34pCOaYXqBeD/184oUc/XlYYkC18g3bWy1VAioajfFPP+OPQkEPOlX0o80WRXSP0Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRF3Hv99o8yzq7h2rKejMqxkzBCVbs2Dir5pkLIiDhQQIhAODZ/wWxu5s14XF3NI9us3WeiCYeqzF9eAdR349SiIat"}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.0_1527706276380_0.2004337035257875"},"_hasShrinkwrap":false},"2.0.1":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.1","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.1"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.1","dist":{"shasum":"66eb0fe46f1554eaf9061531aa189ffa59353222","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.1.tgz","fileCount":13,"unpackedSize":40887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEZS8CRA9TVsSAnZWagAAO8gQAIT85SD+2MNmeThi0G5T\nY7qSCrJqDBsmkEQg6Q+UNNlnI3pnnpVEYdTD7w8Kcdx/OaSIh1H5Rvve7FkL\n5Rf6AdIFXlG0qrpT2/+vxg0cKMNypr9bGn06cGChfmWLWY83z5LUGLqJ7dhU\nLXZ3d/hIdHcWcpdqgX9FAKKjmmoQGKKEehqi1QBkuKtYljtuEc+5dM7HbrmI\naJaTa2iffxmciyryflsldzikBRklZgfj0knfSvF8oXIQXMaUANWyMU+W+ixg\n7AkRv0BObHabWK8Vfm1kYaxSfOe/cV8CnMHDGO99W5Rr2wkKAJcx7jP01bFc\nTBKmA9l0BGc2hKKZm8zC/MTo9W9QHaBZfJdIhDCYrJ9snV93c8BPSBNgeR2I\nU0zV1MRWKWVHoBLzazc23EoYhYoeHKV42kc2uPRaVSaFagAZHslatrEAlEX5\nzSOMd1/wFOqf67QsB6200u+yVBEBpPd5eKesdP23TrRKzqSWRpnjYNWUcj3n\nIam6vC4blbkLFcRbECXrQnDYH/m3jthXad2m2iXdgIW5l5CjCO8wlNrit3In\n+m8nJGxmKJo4gXse19GoMixYFzZt+FITjdYlqIILtCYtcjSh2guiB1/YFlUT\nQidOcCEKv+v4VcjLm3yaURT9YWAwXPz9dPi+cPElsYZb2pYUan7Vyhu+Zczu\n8VTh\r\n=bsKg\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-l/hLdbCe/PHCh993LeQJXrzM3fKFFY4hR0jeWzcXW9zJZb1tvbefvThBfDYK04oi752Hhrypl7AK1dU/r/erJA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCe5B486/hCqaFvylAUDXgWiKfoyriBiYtoD4HPK0lSYgIhAIyla5trohFFXUSrs/hEwTq3lYJvcxA5I1BwM6ZNicBw"}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.1_1527878843761_0.6462672434431358"},"_hasShrinkwrap":false},"2.0.2":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.2","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.2"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.2","dist":{"shasum":"8e1118446a1d1d53f9a39145dabd8cd779422c50","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.2.tgz","fileCount":13,"unpackedSize":40887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEc3iCRA9TVsSAnZWagAA1j0P/3kmzdGFSF6EwHrEqIJo\nX/dEnq/VJthhPhGulF3J/TpVkltPKzcO52kk/4879KPHjzHyaxRLaB7CzIRS\nORK5bajh0OX28cGs8/wBIluCy7TKeP4XobYGGS2i86pqvq7qNAtgng2TBbbx\ny3j4AtT2mWTJH1HiI/c4W6MJnUnN7lxdpefsvXhzkcQYMRB38b34asF0LdE7\nKBt8T8rnPUL89Qx/nkKMKufXwzO0VG5ey1trkR07c01vB+waZhL30YOlZgiF\nomvYiIWDf27XP+IFnHMs7kjzCu9k9UD8kaaoZNHuMHiFvc/I52ipoU9amFCB\nx5N63HkwY1gAdn50w3Vl+4l90E2AmvWiXMV6FGTe5w1Irif0DGk92bFZ8RkW\n0XxJ4I0j97KL5/T+MMDYMU8pjWor3zXcwKI0M8unpSGv+3mvNXTG2af5zFWz\nM0ZsU2Q55usAn53U7cMJb6Q1LP3B1ubyDizEycQdqqK8vc6Ee8PlgKlq6X0t\n+5eGyMtEvjnF80rxJ2ozSstWKyvd+mRlP+nr+qJ+Xl3CZ+aABomc8VFH+gin\n6BaGjHzel7ZyYQ1JTIzkFzLWP+B7LaHz/y0eWxq1NmqxzUMXxi3lfaWI+g8W\ndLjuFC+/i4MCfljUuaj+677zDUDYf6BDE66vHbcxYe0O9KshXBSJ8bfyLJ9P\nTLYu\r\n=Mxlp\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-xgUOn+YSTVlWLkY+VR9NeVcrNKDRoKaqNgysCW7RpnJSQqoCly+tIfgj3YbYolC30/SCQcbfv0N2uKaej4ch+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFUzldjsGt4fLsHyzMKO4YwQ4j+Uw7OA+y01v6B98HoMAiEAoEVswhhIRyCxcrJRbOUVjDQhTjN53o5MHDRJ4bLi3xw="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.2_1527893474262_0.09297901498085892"},"_hasShrinkwrap":false},"2.0.3":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.3","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.3"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.3","dist":{"shasum":"280d497dad3a12bb64b3bf6049f3a1924022be49","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.3.tgz","fileCount":13,"unpackedSize":40887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFbcpCRA9TVsSAnZWagAABacP/2nzpcgA2KGHoYeReuya\niJ/XDHG9jlBXRfyL+GCUviv+m3+KaNdYMbygpy6t3woUqekQiG11nxg6wD42\nzQaPnQO3pbH67w+uP2l0XjswW+eG/UpHfS2QRZI8/IOBOOEZHF+HtrX+WXNQ\nATbefU/Y9evXBrbCjXtKNLQzhLuLScNNRiJV4ESeIhpxfnqgEGembThzbk+m\naba179xfBwPEiUjtPm/RJax2o+1aN0OnxeA4jp/AP7L63lDNbaW2W9ZpRUpG\nutd2Pb9U/KCp9i9TZ/+krygKzalPOWAwB4hyhmnRxcYD+x51Py7PljqktAZo\nZNHQSufZ8tG6m4AHyPgPOiNS5qql4p/npFRefEWR/tVstX9/QaQOH08WDANV\neQu770oel8A6ImaSDY6SQtS09PNTNGRhvcHVfur9uMwLBaXygRfNnT0fTdT3\nOvHZeg8QvvVJo7z7Q7veKJt3bpEN6G2YBMGclpkj+/DWdbyiiIG/Qf4l28lN\nHVuOz5olx3ptE5bxd/A8cbQGB/ZXMC+Wch33THP45u6wxq0JFZK/nTWgq/lT\n7saMr/7Ec+gEvdhIUvv1PIMrtpkHhLT8yhb5Q+7LTKui2/yyzG/5/cWVU6pU\ni+aRzqPp3M7KJDYqv6MPj7fif0nHH7lLIueKlW0+/tGFIg6kmWaDfnnhCVBw\nfAmd\r\n=0AaS\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-Z50XIDKBJhQeEsCt6e3nsUu9R5UYsIbdzRuB4Tw6BgDazNshd3EsLvQ/qiGoaT1iJUf47fYQNFzpRh2zTb4fMg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF/f/XkrXZ8OFikUSCAaJFIWt2p5C9eR1Y08obGok21EAiBdCE5JQKfauUsk3FsCvP1Ngnfb+QafDouVcQ6yuwAocw=="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.3_1528149800618_0.5620022266225184"},"_hasShrinkwrap":false},"2.0.4":{"name":"razzle-examples-with-vendor-bundle","version":"2.0.4","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.0.4"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.0.4","dist":{"shasum":"9684dc11a0cbc4853879ceb83bf28c98c56d686a","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.0.4.tgz","fileCount":13,"unpackedSize":40887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGE6OCRA9TVsSAnZWagAAmxQQAJfZDOrLTFRooFsoVGZh\nI7DMVsZW4nkw0GWCLeESiL2FZhsdpyuACgw/RR7hzHV4obEK+RH5dNETtVZH\nynzKjZxFHwhX7UlOdBGH0jMgduRbIqTH7q89Ct06inQVoe7tsW4XlXZrB7yn\nf96pcxESHrkc8IVUH0CYzViDojrRZJWo9lHgcI8q6Pcj2bpfrENBNuQIg3aN\nB/t6PwSck8Nw3OZPJtNtF4cFommELc/HKyGl7NAJLwnpR3e+EOt+QXshq8uW\nfTtqE7RJWV426seGn1BRP4e1ArLF/wQtdzan8z13xxT8KKNZFTVI5cRRc44q\n0nNqhwgqXUv2o0k8LigmEOaX6FUSk1wvItkuLlP/gNn4NuMumg0tZFCZdF1v\nSerj6AUe0bJKvS7QWc95R4qsEMocgK4C8+lzCgPLMlL6LSkXVR1fnZuXqwuX\nE3Mq33f8iz+3+3EOuFDRKIkO3fnMs6F0bbDY7oVUR/rc9bv6Pur/Eo1aTk5e\nSSerjYaVbOKj3HxDDI+vtnO1Km+MPxvDWGacE5KMktHZ5HGQ6ACSmqyMFGkP\nRIg7Knc5HrqGb34wEJsFl845D7GiFbo4KGt8NU9PNqAgNV7dkNwFQJx1haqO\neOZ7k/xYVWFK1lxsRv0Wr/NmJLRQ4vlRrnjMNPO02FT8VZgFQZvlxlR2Lp3R\nLmXh\r\n=O2hn\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-bcQFQR5rI6o6MZ4WFLPAcPy/7gdBn05FCXSaxMGSe6nyHws+Kgg5Y4lYkmJwAb/JQLdv7O7IHiZrqVEKlhLkrw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNFjIv2F1WAhbgkJloeGLN115aD/C16To1OKV4i/cI5QIhANgsY3SNtLlx4kNtDv7qkDqP0SW9R4zRKeaHkV44jtHW"}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.0.4_1528319629296_0.08122024486123869"},"_hasShrinkwrap":false},"2.1.0":{"name":"razzle-examples-with-vendor-bundle","version":"2.1.0","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.1.0"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.1.0","dist":{"shasum":"fa1bba021260c8ab822756e7c486270554d5f299","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.1.0.tgz","fileCount":13,"unpackedSize":40887,"integrity":"sha512-C2oi7MtjbvTUmUoYc0mMNv3jgGb1ptT7ysSOtrhF4XE9zkx/hw9hbbM5l18kebvisTu10187SdF7OHipUi/gtw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCl7wi/Gfk2DdITO1xvE+YVcMXz14TSFgtUZm3zVPwWjAIgPvwS4/GQe/Qe2GLFIdnos9Z/43Ij63WEtTNJaz6c/P4="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.1.0_1528842614706_0.31207510757439105"},"_hasShrinkwrap":false},"2.1.1":{"name":"razzle-examples-with-vendor-bundle","version":"2.1.1","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.1.1"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.1.1","dist":{"shasum":"a94a931ad8df93ecf7ac496a4855dcb033ff6954","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.1.1.tgz","fileCount":13,"unpackedSize":40887,"integrity":"sha512-gaBLnyNZBlhKBdDdqYOOP8lBdTwghWDZPmlEdpq7jO4z9hIsUNcbTDjl5esrKtJJPI3sWiq8g3rBUx6+4pBACQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAbmWRc2XdlI2Wg+1jSGZJ8zUQYNrcQE1MfJhd0UPkLYAiEApGc20+vPAdGMgGZTpVSO052bLKBWWMXjr4EvjfbG7OQ="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.1.1_1529091841033_0.3928399852349842"},"_hasShrinkwrap":false},"2.2.0":{"name":"razzle-examples-with-vendor-bundle","version":"2.2.0","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.2.0"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.2.0","dist":{"shasum":"d2a3680ad4d66d4d6cd1ecf9be9baae976058e64","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.2.0.tgz","fileCount":13,"unpackedSize":40887,"integrity":"sha512-k61Qe5K6Z2SA7xQjlTtCYDmi2UnRTx9kY0ogGROnVospM63oV9P8OM1HWheJf8A6/TcfWq8eZE/+n3NuZWmmhw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEh/1zR4RgSZEFY9el7/A503UBkt3zU0risyu9yfciN+AiEAhfwTo/CK24pygbWJ6Cs7MEq8ahrv0ITUslpzx1hOMUw="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.2.0_1529101577943_0.18439521056848518"},"_hasShrinkwrap":false},"2.4.0":{"name":"razzle-examples-with-vendor-bundle","version":"2.4.0","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.4.0"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.4.0","dist":{"shasum":"5bbb866a6382e0e968bdf2f0ca2cd1e86d8a06f8","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.4.0.tgz","fileCount":13,"unpackedSize":40887,"integrity":"sha512-lZ9zLHKONYdG/fqhTinYVLlKxuNHnqZPY0SUTvp0anjO1K4CLQuRhFXyVg1vcVCwIXCt4UEbALYBDR3/eTaFdQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCo9dm2oTZgaX2sT/ApBewwVl7UnOGl28x2NnnuoyctDwIhALc6zVAu+j9u2OiMFXAEN+nZu3okNKbzIgRTjFmb5+6V"}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.4.0_1532955216434_0.5892617007046042"},"_hasShrinkwrap":false},"3.0.0-alpha.0":{"name":"razzle-examples-with-vendor-bundle","version":"3.0.0-alpha.0","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^3.0.0-alpha.0"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@3.0.0-alpha.0","dist":{"shasum":"1ba642d81e04ff850cb45eee63ae3d03bcb86f37","integrity":"sha512-LiCgfG+ORws5lVMBEgTGBH2dm4t5PUjkWQoFTf1hph0iKflmQSsGlA1g/nx7J27XFAuUyFgtBuQSqEzbeJxcbw==","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-3.0.0-alpha.0.tgz","fileCount":13,"unpackedSize":41022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7EV4CRA9TVsSAnZWagAAp5kQAIItfrSrBtlUHo3g1YzZ\nyIDknnv+kdRwWgPVFkZ082aAjWt3PSSXDkHu318JicSpZxE+oWT0Y8rAtz2i\nigqWho1FcjF4K3u2lJ4fxaAqmXopZVUTmOIH24CWQYH5V18JcV842lEPnAC4\n23oQBsax68Rsf0dtdvJRuLi3vn/htLHuA/EhXkeB+/ZgfrBHE6Wq3wPTTRUV\nW4wfGhW2a/tEldCG8egFKpwSe/dZQB1zdj3WafYzEyoXJyPj13MGb6gR/e3w\n+HL/CdaSQt66h3qytrw1KS4CNHyUEmhSB6MIfh8lWuT8+5TR+VdcH5YMHu/z\ngQsgdH8RhxAd0wei6+a6jjsvmL/r1wEWDHbn4cowMdZ2/EGUtXzOl/0cjVGL\nxlvjEyd4yU/lXttwlUnRS21uJHPZpmLTvODRWd3rSR3pmrrIGKRh6+1nTQd+\ngAXvAZj59fcLts1vZRRgq1N9jAUMIrWxQYA0p6pYR5GzLFPpA/C85awQtZGc\nsPsmSExuhRjFTs6bf2OZoYjb2jHNidYtDtnwFNmEsZHxHhlgzJxixUHLBSGS\nmvTNiPl2l7w4C0EiTKhK2Xz2qgIlqvWpeDF6xN7a4hHUD4zpuw/7CABPT89+\n/fL/+0tpdQWEnNMm5hlqngOraUB+0qRA+ZfsW64nBLQG719GeQirfY/MAkMu\nyT97\r\n=ptkr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCh5L8IuUf8lkpuygs6PhSPsOtQt5nyHA7hODZ5SxoSngIgVwTOfiq1c++8aVkiIiK8Kbp8Lgl178HNAarf4oKozUU="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_3.0.0-alpha.0_1542210935652_0.6862942478361622"},"_hasShrinkwrap":false},"2.4.1":{"name":"razzle-examples-with-vendor-bundle","version":"2.4.1","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^2.4.1"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@2.4.1","dist":{"shasum":"1c661855f46fb22bcf62dfe2771bde226a55f46d","integrity":"sha512-FZZa0Xjs6BVaDjIOukpgHwk5O1YLPuT1P3Smhv6taFCwPx+S0ovxF7dFlWhF/png2jsk7qQkTkx0ekXDiDOinw==","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-2.4.1.tgz","fileCount":13,"unpackedSize":41006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLnzcCRA9TVsSAnZWagAA2bwP/R2K0kUIH85l4Z2UUjlg\nraYuCBkBBBFx5EAWl8b8SXwNMJrmtV5r7eXTq/d6HTDmVrLtiIXTMBDxyMhb\nYxJ0XxA8pdWZ3MS9sJFaVvkqJEd8EUbjc4cxD/VunyAJhJVp/UhEywM31VA+\nbgCRqZYc/q/cOjmmgDQjzZiJ4cGe7L3b4H7wCDiodUbMJy1RJoqm3LicYil/\nYOu5iN1rnPt+GUloqK9Ukd2WOEYQX2L/XvXURCL6z1S7Bzb+sre1QzxyEiES\ndpGXBggmnA8s0drBykeKmPriYWkQZ5Q57VTuAdw+U9fMx+V4LAKFFdzqyPdW\nubAm6uUDyS88WjEP5z+2Y65ZbRyWfOCPQm3zKLg26C7VCQDy/DpunH+Z15bE\nEplsveBRwVnvt4vnPBLUHW6gVLNjvozSyBjWarj5aj6lsN79Kfv2LMqVNwgi\nxot90VfYwFM4uvvbnT6cLVwooeaJEmehRGo/k4U34onBCnRdpftB/rRUX5Fa\nuSUFsx2ToFpXa+BmU92D45BUnOLRPIWSPGgHRhyFKEs+vHK6A65pRYT6c1RF\nPQfKYgOAjBShSnuHzVoz+OYLJJHyffMeBgYCT3FzTNtxQ6YCtlmB4MouU7VP\nQNBtyxMpetlRdjVL7WEKPogAQs4FV8gng3x7w3dq0p4iukybrvk4+BZ4x2Rh\n4JoN\r\n=lfFS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA0We0pfHAUZo1Wff1QoSNofgbRqwuSdSrAFR1ih7LduAiEA7wrw8EVS+Jp/1mzZmYseRSMLLOGLunG9F8C9PzP/88w="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_2.4.1_1546550491643_0.7000398067205238"},"_hasShrinkwrap":false},"3.0.0-alpha.1":{"name":"razzle-examples-with-vendor-bundle","version":"3.0.0-alpha.1","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^3.0.0-alpha.1"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@3.0.0-alpha.1","dist":{"shasum":"c08f102c4200b1471539bf0351d60214c8910c92","integrity":"sha512-VkehtUAptEuPITU9zpCM/Qri7cx5ZhaqbY8RCOhWZvC/oqCUChO+XAXkFEmKqvz2gbM7jhLuBEJIJCMN1+I25Q==","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-3.0.0-alpha.1.tgz","fileCount":13,"unpackedSize":41022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLoPnCRA9TVsSAnZWagAAY3AP/1o1adH+Sd+nZKg6SlnR\nf6+HeHRr4OMsSLxAfGw29oDYimm+KjzyXLAp+Ks8KhDQ+86EoptImggZinFs\n3P5vNlpFF0dSKZ+3dRh3bQN18ocOHqXZIUGLnytJGy8g9F83VfRE+6Rj95bK\nTO/nJxzX4XSs8Xud5tTiSj6M/UYj9FlWy8iTXiO0S2OrkQT5MQwF4eYfKoh8\nQXw++FIrYxUUg6Jkv9lQYtcWIWbhikBFHlVYa1MHES0XTCOqcDspKZx8BZ+W\n5cSy5MGQp7toKTjYTMVbgl0MtsFXmD5+X/l+Ge0975nBdjbapVObdrDIaT81\ns+Y7kFA6epbA9yzChGskLRoAfRDq5932PWgyvR7CGr00L83HWJDc8ToPT5cY\nUZQp3MnusG4B4m2vqq9LF3HjCOFHDOwv+jhF77tLk9KdwIR503j7SvFOdwO5\ni1ragutWwOkJ71tYinDGc50f3yH+8O8yWxb7Yve6jPWbMy7kuaFOuMnjQLsa\nYifWF9b3qtbP905Ck0qQPJOpf6aQbTiH36euHHV4iJQMUXz9oQIz0d6kxaD3\n+b9DIhJiPF6NW4nJ+MqdS0GrIWpbNRRWKblS6FlJufOhiiRPZDFSGfx+xX5p\n+lD48+KA6JLM4EQ/vgBxr2DThVW5FtShopfQh2bRfi81LYJ3jyNQj7r2BtJs\nsgLp\r\n=vn1h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9jjW0dfQDgmdLJhMl7qLJOUfgV0Ha42LUIt5jgrE0sgIhAMi/9xidSwWOWxJSDKG6Wbau9FhhA5yesHyEWtSUanV9"}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_3.0.0-alpha.1_1546552294721_0.6789266620703498"},"_hasShrinkwrap":false},"3.0.0-alpha.2":{"name":"razzle-examples-with-vendor-bundle","version":"3.0.0-alpha.2","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^3.0.0-alpha.2"},"readmeFilename":"README.md","readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@3.0.0-alpha.2","dist":{"shasum":"9cbcde2349cc0f1247cf3f4d7231d18ad53843da","integrity":"sha512-uKBAfO0+AaKd6pFBghfC8rXQ3wHXbEQ5qT06kYyiv5kxE17ogw20mKsC7/6tjyeFCbJYEE7wjkJEz0V2KKvmVQ==","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-3.0.0-alpha.2.tgz","fileCount":13,"unpackedSize":41022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMqqRCRA9TVsSAnZWagAAhS0P/jeyz5L/8+gaxVJsLaej\ncKc01YQrs5BGS4r4ba/xQsouDIOtcIjTXv5aDGc8lNVwTFQFQmo5RTwAERKJ\nZUQ2AXmOuJtdcXEECN3eR5HMIbqEz4usdqvC7C44/97QRJoeLeCSuXB2SOmh\nJM2B+6hIJdZoVo7uRlu8j5ZkMHRONcahvf1gS2echdSXhAAIPxopiePooCIJ\nOPWHE11L7h5vhJwUCQz5FK1q+0VWPdxmp4BLP8+ncHbiqOQHyH5UMdq8z6oU\nQeuL/3mBJdkzjdNxjB+hEv+MPT75vx8Odqv847ZgOBSWLieMLc84k+RionMa\nbN+Zl2kICIOBRuZwI8HsvR/aFcJJUYNd0r+uOEwXXrKhoE+vEnOFgjk4YM6x\ncOOyq9sibO+gy8jybKjuYyvLANqXbgczcw+Ri37L2HI+kbhvv33hJH+Wg+t6\nxPuqBCaNbZW2eAjgrToa1l1Irh6N03WX+9rbzEI9w3SJfyMyB28O2Bd3QMOU\nt3B0SHfBgNmIklrcaTLMNpZYjCHgBQ+r7898qTUEZJhnRLmGNDij/GT/kjRV\n1rYyOJpxTUMV9vqKmBvy+koDzAYSm1Jh681YyC5m3+YdPUwv20HjnIJ7bv9h\norC1c52Bzgui5QqF2OQe09rlNJyGau4kAgCCpoeG5Q2OF0CC40Egpvsfr1F2\nLcys\r\n=8Lp3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDylJC4XQwVOIXqnkycRSUBaPPyJYFRvFASI/5anLN3HwIhAIOnftzRcFpEKLz+Hz6LJv+lntEoaX+L1ihxMox0x2n9"}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_3.0.0-alpha.2_1546824337188_0.5961650608613647"},"_hasShrinkwrap":false},"3.0.0":{"name":"razzle-examples-with-vendor-bundle","version":"3.0.0","license":"MIT","scripts":{"start":"razzle start","build":"razzle build","test":"razzle test --env=jsdom","start:prod":"NODE_ENV=production node build/server.js"},"dependencies":{"express":"^4.15.2","react":"^16.0.0","react-dom":"^16.0.0"},"devDependencies":{"razzle":"^3.0.0"},"description":"## How to use Download the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):","_id":"razzle-examples-with-vendor-bundle@3.0.0","dist":{"shasum":"8bf7e91141b320fd633d973f509a943738defefc","integrity":"sha512-9B2zv+JbEs3SrJIr/5slH9d0oTBOhACCudHWZAb579PhVz1IGgUFxVvE2Q7N18FfzhFqO9evKdceLDM9SLiyig==","tarball":"https://registry.npmjs.org/razzle-examples-with-vendor-bundle/-/razzle-examples-with-vendor-bundle-3.0.0.tgz","fileCount":13,"unpackedSize":41006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcteYNCRA9TVsSAnZWagAA8OsP/1Xq2ect+6TxnuiQrHjI\n5zAvEQbmrbx7AiMUqLswy7HyGnNTOci2wv2oifz+xZ888JlM+OL5zjPN2Obi\nay/aRso5zcU5/4WjwvwDYNgqKScj8lxcfElDKuOHltLPHjJV7+4ev2hwUtAH\nhs8sFXKzRglbPmlJRWsm4CLlIK7qt4Ouc9+yjfxrTAk6a6gwk6R0TLjRzbXA\nEtuR8n3HJf4A4wmAixmVpqKntXX1R+YpOniuEDNWN/44FwXHHfHZsgWZQI+D\nQ2al1fDn8B6Bzy+oIMJiX6kyXHcYW0SBmBDLBO7IkkWo5PpZuVPVB6HhBvDC\n+udzk7WqyAbjx6pmaktdTeqNC94sf+MLHDasixSYE86DAryPWlX6vcwA0jCy\nX0eUnD6E/2geRfAHy/eVxARN55mqCD8MeGSx2j+txTphaL6j2htvetMQd+Hf\ndjHnjpKkErOzMY6AxIO4QsPnf6ieS9LsX2DWFu6+7zZg0xx7sOHKgZ/lAtMh\n8B/gQalsTLfju3OLujCc3IFqtvRdKS5QNTYBOXQVVgoaW//NRIETYd+j76H8\nofGi1PwCVcXNtA5vdxoQxhr/O5/BdJVNkqF46bYoNGyvFlU4a1H90f4EZ/8c\nn02Ly2v61MdiNy4rS7TDgUxrtvGr8vX5mGRQDCIqoSSuoyjdr/+ItgNywzwF\nkTSU\r\n=D8Hv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBXkLzF2tESN63YMqTuswCytsYdEjLplXfMYGLJz9BcMAiBB+2wB3wprPcrGsxX/2WLTXDzVjuV3XRArSPSEVm55Hg=="}]},"maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"_npmUser":{"name":"jaredpalmer","email":"jared@palmer.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/razzle-examples-with-vendor-bundle_3.0.0_1555424781356_0.41231300753233935"},"_hasShrinkwrap":false}},"readme":"# Razzle with Vendor Bundling\n\n## How to use\nDownload the example [or clone the whole project](https://github.com/jaredpalmer/razzle.git):\n\n```bash\ncurl https://codeload.github.com/jaredpalmer/razzle/tar.gz/master | tar -xz --strip=2 razzle-master/examples/with-vendor-bundle\ncd with-vendor-bundle\n```\n\nInstall it and run:\n\n```bash\nyarn install\nyarn start\n```\n\n## Idea behind the example\nThis example demonstrates how to use a `razzle.config.js` file to modify Razzle's\nunderlying webpack configuration to add a vendor bundle using [Twitter Lite's approach](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3).\n\n\nFirst create a file called `razzle.config.js` in your root directory. I won't go into details about the plugins, because they are well document in this [medium article by Paul Armstrong](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), but read through the comments in the snippet to get your bearings.\n\n\n```js\n'use strict';\n\nmodule.exports = {\n  modify(defaultConfig, { target, dev }, webpack) {\n    const config = defaultConfig; // stay immutable here\n\n    // Change the name of the server output file in production\n    if (target === 'web') {\n      // modify filenaming to account for multiple entry files\n      config.output.filename = dev\n        ? 'static/js/[name].js'\n        : 'static/js/[name].[hash:8].js';\n\n      // add another entry point called vendor\n      config.entry.vendor = [\n        // now that React has moved, we need to Razzle's polyfills because \n        // vendor.js will be loaded before our other entry. Razzle looks for \n        // process.env.REACT_BUNDLE_PATH and will exclude the polyfill from our normal entry,\n        // so we don't need to worry about including it twice.\n        require.resolve('razzle/polyfills'),\n        require.resolve('react'),\n        require.resolve('react-dom'),\n        // ... add any other vendor packages with require.resolve('xxx')\n      ];\n\n      // Chunk splitting optimiztion\n      config.optimization.splitChunks.chunks = 'all';\n\n      // Switch off name generation, otherwise files would be invalidated\n      // when more chunks with the same vendors are added\n      config.optimization.splitChunks.name = false;\n    }\n\n    return config;\n  },\n};\n```\n\nIn `server.js`, we modify our HTML template with our extra js files. \n\n```jsx\n// server.js\n\n// ...\n\n\nserver\n  .disable('x-powered-by')\n  .use(express.static(process.env.RAZZLE_PUBLIC_DIR))\n  .get('/*', (req, res) => {\n    const markup = renderToString(<App />);\n    res.send(\n      `<!doctype html>\n    <html lang=\"\">\n    <head>\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n        <meta charSet='utf-8' />\n        <title>Welcome to Razzle</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        ${assets.client.css\n          ? `<link rel=\"stylesheet\" href=\"${assets.client.css}\">`\n          : ''}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.manifest.js}\" defer></script>`\n          : `<script src=\"${assets.manifest.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.vendor.js}\" defer></script>`\n          : `<script src=\"${assets.vendor.js}\" defer crossorigin></script>`}\n        ${process.env.NODE_ENV === 'production'\n          ? `<script src=\"${assets.client.js}\" defer></script>`\n          : `<script src=\"${assets.client.js}\" defer crossorigin></script>`}\n    </head>\n    <body>\n        <div id=\"root\">${markup}</div>\n    </body>\n</html>`\n    );\n  });\n```\n\nAlmost done. For the best DX experience, we need to tell Razzle where our development bundle of react is\nnow located so it can pipe runtime errors into a fancy error overlay instead of to the console.\n\nCreate a `.env` file with the relative path to our vendor bundle during development:\n\n```\nREACT_DEV_BUNDLE_PATH=/static/js/vendor.js\n```\n\nThat's it.\n\n```\nyarn start\n```\n\nCongrats! Your website bundles its JS like m.twitter.com does. In fact, since m.twitter.com doesn't server render...you might even say this setup your build tooling is more advanced!\n\n","maintainers":[{"name":"jaredpalmer","email":"jared@palmer.net"}],"time":{"modified":"2022-06-25T14:00:12.919Z","created":"2017-10-02T22:14:06.415Z","0.8.4":"2017-10-02T22:14:06.415Z","0.8.5":"2017-11-18T18:22:17.981Z","0.8.6":"2017-11-18T19:25:42.216Z","0.8.7":"2017-12-06T16:10:44.728Z","0.8.8":"2018-01-30T17:49:22.520Z","0.8.9":"2018-01-30T17:53:00.960Z","0.8.10":"2018-01-30T18:07:38.483Z","0.8.11":"2018-01-30T18:28:33.662Z","0.8.12":"2018-02-13T19:18:48.325Z","2.0.0-alpha.1":"2018-03-21T19:41:46.011Z","0.8.13":"2018-03-21T19:45:26.712Z","2.0.0-alpha.2":"2018-03-21T19:46:43.789Z","0.8.14":"2018-03-21T19:49:17.002Z","2.0.0-alpha.3":"2018-03-21T19:51:23.122Z","2.0.0-alpha.4":"2018-03-26T15:24:00.469Z","2.0.0-alpha.5":"2018-03-29T20:17:05.433Z","2.0.0-alpha.6":"2018-04-02T16:16:12.047Z","2.0.0-alpha.7":"2018-04-02T16:32:58.125Z","2.0.0-alpha.8":"2018-04-09T20:35:52.017Z","2.0.0-y.0":"2018-04-10T19:09:20.945Z","2.0.0-alpha.9":"2018-04-10T19:11:12.590Z","2.0.0-alpha.10":"2018-04-23T14:27:12.029Z","2.0.0-alpha.11":"2018-04-23T14:32:15.056Z","2.0.0-alpha.12":"2018-04-23T17:30:24.038Z","2.0.0":"2018-05-30T18:51:16.511Z","2.0.1":"2018-06-01T18:47:23.828Z","2.0.2":"2018-06-01T22:51:14.304Z","2.0.3":"2018-06-04T22:03:20.704Z","2.0.4":"2018-06-06T21:13:49.371Z","2.1.0":"2018-06-12T22:30:14.793Z","2.1.1":"2018-06-15T19:44:01.089Z","2.2.0":"2018-06-15T22:26:18.004Z","2.4.0":"2018-07-30T12:53:36.524Z","3.0.0-alpha.0":"2018-11-14T15:55:35.738Z","2.4.1":"2019-01-03T21:21:31.770Z","3.0.0-alpha.1":"2019-01-03T21:51:34.850Z","3.0.0-alpha.2":"2019-01-07T01:25:37.346Z","3.0.0":"2019-04-16T14:26:21.478Z"},"license":"MIT","readmeFilename":"README.md"}