Skip to content

SurviveJS - Webpack - v2.0 - Results and Errata


Enough time has passed since the major release of the webpack book so it’s a good time to evaluate how well it went. As no release is perfect, I’ve been pushing smaller patches to the content and I cover the fixes later in this post. The fixes are minor but they were still worth doing.


The paperback has sold roughly twenty copies in two weeks. The Kindle edition is close to thirty and the higher quality and more expensive hard cover edition has close to ten interested buyers which just might be enough for me to do a little print but we’ll see.

In addition, the Leanpub edition reached two thousand readers but it’s good to remember half of those received the book for free when I split up my first book.

Based on these results it’s safe to say the release wasn’t a great financial success. I’m particularly happy that I found a good writing model, though. Especially the last few months were great as significant progress was made and this bodes well for the future.

The book is stronger in many ways than the initial “Webpack and React” one and I have a solid writing process in place now. I know what kind of books to write from now on.

There’s still a lot of work to do, some related to the webpack book. Even with poor sales it’s worth doing as it adds more streams to the whole. As they say, a lot of small streams form a big river.


I’ve listed errata per version below so you can see the main changes. You can see them all through GitHub compare changes view.


  • Renamed Splitting Bundles chapter as Bundle Splitting to be consistent.
  • Linked to JSPM in the comparison appendix.
  • Added missing const webpack = require('webpack'); to the Bundle Splitting chapter example.
  • Improved wording related to disabling package consumption related warnings.
  • Noted that generating a single bundle over many is more performant as discussed in karma-webpack issue 23.
  • Made Istanbul exclude test files from coverage results.


  • Added missing file names to the i18n chapter.
  • Clarified i18n chapter ESLint configuration.


  • Changed entry name from demo to lib at the Bundling Libraries chapter.


  • Simplified imports at the Extending with Loaders chapter to avoid a linting warning.
  • Noted that PhantomJS doesn’t support ES6 features yet so it requires preprocessing in order to work.
  • Added missing path import to Karma configuration example.


  • Mentioned that HMR setup needs to be done before implementing Hot Module Replacement with React at the appendix.
  • Cleared up webpack process image a bit so you can see entry can be something complex.


  • Simplified Searching with React appendix example so that it works with HMR out of the box. The old example used binding method that doesn’t work well with react-hot-loader.
  • Fixed a typo at the Minifying chapter - thatthan.
  • Made sure recordsPath receives an absolute path as webpack enforces this now.
  • Mentioned that PurifyCSS doesn’t work with CSS Modules yet.


  • Fixed a typo at the Glossary. an aa.


  • Recommended cheap-module-source-map over cheap-module-eval-source-map since it’s a more stable option.
  • Included naming to import() syntax given that’s supported now.
  • Dropped true bit as redundant.
  • Noted that CSS Modules work with purify if you use a whitelist.


  • Pushed CommonsChunkPlugin to production configuration to speed up the build.
  • Dropped useSourceMap flag from parts.minifyJavaScript.
  • Added missing const webpack = require('webpack'); to HashedModuleIdsPlugin example.
  • Made CSSNext example use require('postcss-cssnext')(),.
  • Made autoprefixer example compatible with the newest version. It needs require('autoprefixer')() over require('autoprefixer') now.
  • Simplified stylelint configuration by dropping ignoreFiles since webpack include is used already.


  • Add missing .babelrc to a filename in the Loading JavaScript chapter.
  • Added purify-css as a dependency to install as purifycss-webpack requires that now as a peer dependency.



  • Fixed the book to use cheap-module-eval-source-map over cheap-module-source-map for development.


  • Changed browserslist to .browserslistrc as the project has changed the file name.


  • Added missing const path = require('path'); to Extending Loaders chapter.
  • Added missing formatting to const { RawSource } = require('webpack-sources'); at Extending Loaders chapter.


  • Changed to PATHS.lib at the Bundling Libraries chapter.


  • Simplified a devtool related paragraph to pass Amazon margin check.


  • Getting Started - Use import over require at text.
  • Composing Configuration - Fix sentence structure at “Composition-based approach…”


There’s still a lot of touring to be done so things will move slower than usual. That said, I’ll try to get most out of this experience and convert that into something good. Traveling is good for ideas.