diff --git a/.travis.yml b/.travis.yml
index 4d4dc089306b5f54dc99d586a0d564ecc9597f3b..d5b51fcb0c0d43cd67a19e3084d0b18b5f99e133 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,6 +6,7 @@ cache:
   - node_modules
   - public/assets
   - public/packs-test
+  - tmp/cache/babel-loader
 dist: trusty
 sudo: required
 
diff --git a/config/webpack/loaders/babel.js b/config/webpack/loaders/babel.js
index a1992a450a90fba5322b34ae48870d55a12bb2c3..3177d964ac9aaf04473be940ddd2aceeaed045db 100644
--- a/config/webpack/loaders/babel.js
+++ b/config/webpack/loaders/babel.js
@@ -1,3 +1,5 @@
+const { resolve } = require('path');
+
 module.exports = {
   test: /\.js$/,
   // include react-intl because transform-react-remove-prop-types needs to apply to it
@@ -8,5 +10,6 @@ module.exports = {
   loader: 'babel-loader',
   options: {
     forceEnv: process.env.NODE_ENV || 'development',
+    cacheDirectory: resolve(__dirname, '..', '..', '..', 'tmp', 'cache', 'babel-loader'),
   },
 };