diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/Gruntfile.js wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/Gruntfile.js
index a858dacd4..ad7cd22a4 100644
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/Gruntfile.js
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/Gruntfile.js
@@ -115,10 +115,8 @@ module.exports = function( grunt ) {
 			},
 			options: { signature: false }
 		},
-		shell: {
-			build: {
-				command: './node_modules/wpapi/lib/data/update-default-routes-json.js --endpoint=https://wordpress.org/plugins/wp-json --output=./client'
-			}
+		curl: {
+			'./client/modules/default-routes.json': 'https://wordpress.org/plugins/wp-json'
 		},
 		rtlcss: {
 			options: {
@@ -182,13 +180,20 @@ module.exports = function( grunt ) {
 			}
 		},
 		watch: {
-			eslint: {
-				files: ['<%= eslint.files %>'],
-				tasks: ['eslint']
-			},
 			css: {
 				files: ['**/*.scss', '../wporg/css/**/*scss', 'client/components/**/**.scss'],
 				tasks: ['css']
+			},
+			scripts: {
+				files: ['**/*.jsx'],
+				tasks: ['webpack:build-dev'],
+				options: {
+				  atBegin: true,
+				}
+			},
+			eslint: {
+				files: ['<%= eslint.files %>'],
+				tasks: ['eslint']
 			}
 		}
 	});
@@ -200,9 +205,9 @@ module.exports = function( grunt ) {
 	grunt.loadNpmTasks('grunt-webpack');
 	grunt.loadNpmTasks('grunt-eslint');
 	grunt.loadNpmTasks('grunt-contrib-watch');
-	grunt.loadNpmTasks('grunt-shell');
+	grunt.loadNpmTasks('grunt-curl');
 
 	grunt.registerTask('default', ['eslint', 'sass_globbing', 'sass', 'rtlcss:dynamic']);
 	grunt.registerTask('css', ['sass_globbing', 'sass', 'postcss', 'rtlcss:dynamic']);
-	grunt.registerTask('build', ['webpack:build', 'css', 'shell:build']);
+	grunt.registerTask('build', ['webpack:build', 'css', 'curl']);
 };
diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/README.md wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/README.md
index 393ed9ec2..f7a3b79bd 100644
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/README.md
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/README.md
@@ -4,8 +4,7 @@
 
 ```
 npm install
-grunt webpack:watch # Build JS client.
-grunt watch # Run linters, build Sass, etc.
+grunt watch # Run linters, build Sass, JS client, etc.
 ```
 
 #### Committing
diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/modules/api.js wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/modules/api.js
index 083e91ead..35f69e73b 100644
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/modules/api.js
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/modules/api.js
@@ -1,6 +1,6 @@
 import WPAPI from 'wpapi';
 
-import routes from 'default-routes.json';
+import routes from './default-routes.json';
 
 /** @type {Object} pluginDirectory Config variable */
 const pluginDirectory = window.pluginDirectory || {};
diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/package.json wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/package.json
index 87f09f1cd..6447955ae 100644
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/package.json
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/package.json
@@ -29,12 +29,12 @@
     "grunt": "^1.0.3",
     "grunt-contrib-jshint": "^1.0.0",
     "grunt-contrib-watch": "^1.1.0",
+    "grunt-curl": "^2.5.1",
     "grunt-eslint": "^19.0.0",
     "grunt-postcss": "~0.7.2",
     "grunt-rtlcss": "^2.0.1",
     "grunt-sass": "~3.0.1",
     "grunt-sass-globbing": "^1.5.1",
-    "grunt-shell": "^2.1.0",
     "grunt-webpack": "^1.0.11",
     "history": "^2.0.0",
     "jquery": "^3.1.0",
@@ -58,6 +58,6 @@
   "dependencies": {
     "i18n-calypso": "^1.7.0",
     "json-loader": "^0.5.4",
-    "wpapi": "^1.0.0"
+    "wpapi": "^1.2.1"
   }
 }
