Index: Gruntfile.js
===================================================================
--- Gruntfile.js	(revision 45665)
+++ Gruntfile.js	(working copy)
@@ -3,8 +3,8 @@
 /* globals Set */
 var webpackConfig = require( './webpack.config' );
 
-module.exports = function(grunt) {
-	var path = require('path'),
+module.exports = function( grunt ) {
+	var path = require( 'path' ),
 		fs = require( 'fs' ),
 		spawn = require( 'child_process' ).spawnSync,
 		SOURCE_DIR = 'src/',
@@ -41,16 +41,16 @@
 	}
 
 	// Load tasks.
-	require('matchdep').filterDev(['grunt-*', '!grunt-legacy-util']).forEach( grunt.loadNpmTasks );
+	require( 'matchdep' ).filterDev( [ 'grunt-*', '!grunt-legacy-util' ] ).forEach( grunt.loadNpmTasks );
 	// Load legacy utils
-	grunt.util = require('grunt-legacy-util');
+	grunt.util = require( 'grunt-legacy-util' );
 
 	// Project configuration.
-	grunt.initConfig({
+	grunt.initConfig( {
 		postcss: {
 			options: {
 				processors: [
-					autoprefixer({
+					autoprefixer( {
 						browsers: [
 							'> 1%',
 							'ie >= 11',
@@ -64,7 +64,7 @@
 							'last 2 Opera versions'
 						],
 						cascade: false
-					})
+					} )
 				]
 			},
 			core: {
@@ -100,21 +100,28 @@
 			}
 		},
 		clean: {
-			plugins: [BUILD_DIR + 'wp-content/plugins'],
-			themes: [BUILD_DIR + 'wp-content/themes'],
+			plugins: [ BUILD_DIR + 'wp-content/plugins' ],
+			themes: [ BUILD_DIR + 'wp-content/themes' ],
 			files: buildFiles.map( function( file ) {
 				return BUILD_DIR + file;
-			}),
+			} ),
+
+			// Clean inline build files from /src.
+			// The files in /build are cleaned by `clean:files` above.
 			css: [
-				WORKING_DIR + 'wp-admin/css/*.min.css',
-				WORKING_DIR + 'wp-admin/css/*rtl*',
-				WORKING_DIR + 'wp-includes/css/*.min.css',
-				WORKING_DIR + 'wp-includes/css/*rtl*',
-				WORKING_DIR + 'wp-admin/css/colors/**/*.css'
+				SOURCE_DIR + 'wp-admin/css/*.min.css',
+				SOURCE_DIR + 'wp-admin/css/*rtl*',
+				SOURCE_DIR + 'wp-includes/css/*.min.css',
+				SOURCE_DIR + 'wp-includes/css/*rtl*',
+				SOURCE_DIR + 'wp-admin/css/colors/**/*.css'
 			],
 			js: [
-				WORKING_DIR + 'wp-admin/js/',
-				WORKING_DIR + 'wp-includes/js/'
+				SOURCE_DIR + 'wp-admin/js/',
+				SOURCE_DIR + 'wp-includes/js/',
+
+				// Also delete `css/dist` as it is created by Webpack at the same time as `js/dist`,
+				// and `clean:css` may run after and delete it.
+				SOURCE_DIR + 'wp-includes/css/dist'
 			],
 			dynamic: {
 				dot: true,
@@ -122,7 +129,7 @@
 				cwd: WORKING_DIR,
 				src: []
 			},
-			qunit: ['tests/qunit/compiled.html']
+			qunit: [ 'tests/qunit/compiled.html' ]
 		},
 		file_append: {
 			default_options: {
@@ -157,8 +164,8 @@
 						dest: BUILD_DIR
 					},
 					{
-						[BUILD_DIR + 'index.php']: ['src/_index.php'],
-						[BUILD_DIR + 'wp-admin/index.php']: ['src/wp-admin/_index.php']
+						[ BUILD_DIR + 'index.php' ]: [ 'src/_index.php' ],
+						[ BUILD_DIR + 'wp-admin/index.php' ]: [ 'src/wp-admin/_index.php' ]
 					}
 				]
 			},
@@ -360,7 +367,7 @@
 
 							/* jshint quotmark: true */
 							return "$wp_version = '" + version + "';";
-						});
+						} );
 					}
 				},
 				src: SOURCE_DIR + 'wp-includes/version.php',
@@ -395,7 +402,7 @@
 				cwd: SOURCE_DIR,
 				dest: WORKING_DIR,
 				ext: '.css',
-				src: ['wp-admin/css/colors/*/colors.scss'],
+				src: [ 'wp-admin/css/colors/*/colors.scss' ],
 				options: {
 					implementation: nodesass,
 					outputStyle: 'expanded'
@@ -533,9 +540,9 @@
 			}
 		},
 		jshint: {
-			options: grunt.file.readJSON('.jshintrc'),
+			options: grunt.file.readJSON( '.jshintrc' ),
 			grunt: {
-				src: ['Gruntfile.js']
+				src: [ 'Gruntfile.js' ]
 			},
 			tests: {
 				src: [
@@ -543,7 +550,7 @@
 					'!tests/qunit/vendor/*',
 					'!tests/qunit/editor/**'
 				],
-				options: grunt.file.readJSON('tests/qunit/.jshintrc')
+				options: grunt.file.readJSON( 'tests/qunit/.jshintrc' )
 			},
 			themes: {
 				expand: true,
@@ -634,11 +641,11 @@
 				}
 			}
 		},
-		jsdoc : {
-			dist : {
+		jsdoc: {
+			dist: {
 				dest: 'jsdoc',
 				options: {
-					configure : 'jsdoc.conf.json'
+					configure: 'jsdoc.conf.json'
 				}
 			}
 		},
@@ -651,27 +658,27 @@
 		phpunit: {
 			'default': {
 				cmd: 'phpunit',
-				args: ['--verbose', '-c', 'phpunit.xml.dist']
+				args: [ '--verbose', '-c', 'phpunit.xml.dist' ]
 			},
 			ajax: {
 				cmd: 'phpunit',
-				args: ['--verbose', '-c', 'phpunit.xml.dist', '--group', 'ajax']
+				args: [ '--verbose', '-c', 'phpunit.xml.dist', '--group', 'ajax' ]
 			},
 			multisite: {
 				cmd: 'phpunit',
-				args: ['--verbose', '-c', 'tests/phpunit/multisite.xml']
+				args: [ '--verbose', '-c', 'tests/phpunit/multisite.xml' ]
 			},
 			'ms-files': {
 				cmd: 'phpunit',
-				args: ['--verbose', '-c', 'tests/phpunit/multisite.xml', '--group', 'ms-files']
+				args: [ '--verbose', '-c', 'tests/phpunit/multisite.xml', '--group', 'ms-files' ]
 			},
 			'external-http': {
 				cmd: 'phpunit',
-				args: ['--verbose', '-c', 'phpunit.xml.dist', '--group', 'external-http']
+				args: [ '--verbose', '-c', 'phpunit.xml.dist', '--group', 'external-http' ]
 			},
 			'restapi-jsclient': {
 				cmd: 'phpunit',
-				args: ['--verbose', '-c', 'phpunit.xml.dist', '--group', 'restapi-jsclient']
+				args: [ '--verbose', '-c', 'phpunit.xml.dist', '--group', 'restapi-jsclient' ]
 			}
 		},
 		uglify: {
@@ -712,7 +719,7 @@
 				cwd: WORKING_DIR,
 				dest: WORKING_DIR,
 				ext: '.min.js',
-				src: ['wp-includes/js/wp-embed.js']
+				src: [ 'wp-includes/js/wp-embed.js' ]
 			},
 			jqueryui: {
 				options: {
@@ -723,7 +730,7 @@
 				cwd: 'node_modules/jquery-ui/ui/',
 				dest: WORKING_DIR + 'wp-includes/js/jquery/ui/',
 				ext: '.min.js',
-				src: ['*.js']
+				src: [ '*.js' ]
 			},
 			imgareaselect: {
 				src: WORKING_DIR + 'wp-includes/js/imgareaselect/jquery.imgareaselect.js',
@@ -864,103 +871,103 @@
 					'src/wp-includes/js/wpdialog.js': 'src/js/_enqueues/lib/dialog.js',
 					'src/wp-includes/js/wplink.js': 'src/js/_enqueues/lib/link.js',
 					'src/wp-includes/js/zxcvbn-async.js': 'src/js/_enqueues/lib/zxcvbn-async.js',
-					'src/wp-includes/js/media/controllers/audio-details.js' : 'src/js/media/controllers/audio-details.js',
-					'src/wp-includes/js/media/controllers/collection-add.js' : 'src/js/media/controllers/collection-add.js',
-					'src/wp-includes/js/media/controllers/collection-edit.js' : 'src/js/media/controllers/collection-edit.js',
-					'src/wp-includes/js/media/controllers/cropper.js' : 'src/js/media/controllers/cropper.js',
-					'src/wp-includes/js/media/controllers/customize-image-cropper.js' : 'src/js/media/controllers/customize-image-cropper.js',
-					'src/wp-includes/js/media/controllers/edit-attachment-metadata.js' : 'src/js/media/controllers/edit-attachment-metadata.js',
-					'src/wp-includes/js/media/controllers/edit-image.js' : 'src/js/media/controllers/edit-image.js',
-					'src/wp-includes/js/media/controllers/embed.js' : 'src/js/media/controllers/embed.js',
-					'src/wp-includes/js/media/controllers/featured-image.js' : 'src/js/media/controllers/featured-image.js',
-					'src/wp-includes/js/media/controllers/gallery-add.js' : 'src/js/media/controllers/gallery-add.js',
-					'src/wp-includes/js/media/controllers/gallery-edit.js' : 'src/js/media/controllers/gallery-edit.js',
-					'src/wp-includes/js/media/controllers/image-details.js' : 'src/js/media/controllers/image-details.js',
-					'src/wp-includes/js/media/controllers/library.js' : 'src/js/media/controllers/library.js',
-					'src/wp-includes/js/media/controllers/media-library.js' : 'src/js/media/controllers/media-library.js',
-					'src/wp-includes/js/media/controllers/region.js' : 'src/js/media/controllers/region.js',
-					'src/wp-includes/js/media/controllers/replace-image.js' : 'src/js/media/controllers/replace-image.js',
-					'src/wp-includes/js/media/controllers/site-icon-cropper.js' : 'src/js/media/controllers/site-icon-cropper.js',
-					'src/wp-includes/js/media/controllers/state-machine.js' : 'src/js/media/controllers/state-machine.js',
-					'src/wp-includes/js/media/controllers/state.js' : 'src/js/media/controllers/state.js',
-					'src/wp-includes/js/media/controllers/video-details.js' : 'src/js/media/controllers/video-details.js',
-					'src/wp-includes/js/media/models/attachment.js' : 'src/js/media/models/attachment.js',
-					'src/wp-includes/js/media/models/attachments.js' : 'src/js/media/models/attachments.js',
-					'src/wp-includes/js/media/models/post-image.js' : 'src/js/media/models/post-image.js',
-					'src/wp-includes/js/media/models/post-media.js' : 'src/js/media/models/post-media.js',
-					'src/wp-includes/js/media/models/query.js' : 'src/js/media/models/query.js',
-					'src/wp-includes/js/media/models/selection.js' : 'src/js/media/models/selection.js',
-					'src/wp-includes/js/media/routers/manage.js' : 'src/js/media/routers/manage.js',
-					'src/wp-includes/js/media/utils/selection-sync.js' : 'src/js/media/utils/selection-sync.js',
-					'src/wp-includes/js/media/views/attachment-compat.js' : 'src/js/media/views/attachment-compat.js',
-					'src/wp-includes/js/media/views/attachment-filters.js' : 'src/js/media/views/attachment-filters.js',
-					'src/wp-includes/js/media/views/attachment-filters/all.js' : 'src/js/media/views/attachment-filters/all.js',
-					'src/wp-includes/js/media/views/attachment-filters/date.js' : 'src/js/media/views/attachment-filters/date.js',
-					'src/wp-includes/js/media/views/attachment-filters/uploaded.js' : 'src/js/media/views/attachment-filters/uploaded.js',
-					'src/wp-includes/js/media/views/attachment.js' : 'src/js/media/views/attachment.js',
-					'src/wp-includes/js/media/views/attachment/details-two-column.js' : 'src/js/media/views/details-two-column.js',
-					'src/wp-includes/js/media/views/attachment/details.js' : 'src/js/media/views/details.js',
-					'src/wp-includes/js/media/views/attachment/edit-library.js' : 'src/js/media/views/edit-library.js',
-					'src/wp-includes/js/media/views/attachment/edit-selection.js' : 'src/js/media/views/edit-selection.js',
-					'src/wp-includes/js/media/views/attachment/library.js' : 'src/js/media/views/library.js',
-					'src/wp-includes/js/media/views/attachment/selection.js' : 'src/js/media/views/selection.js',
-					'src/wp-includes/js/media/views/attachment/attachments.js' : 'src/js/media/views/attachments.js',
-					'src/wp-includes/js/media/views/attachments/browser.js' : 'src/js/media/views/attachments/browser.js',
-					'src/wp-includes/js/media/views/attachments/selection.js' : 'src/js/media/views/attachments/selection.js',
-					'src/wp-includes/js/media/views/attachments/audio-details.js' : 'src/js/media/views/attachments/audio-details.js',
-					'src/wp-includes/js/media/views/attachments/button-group.js' : 'src/js/media/views/attachments/button-group.js',
-					'src/wp-includes/js/media/views/attachments/button.js' : 'src/js/media/views/attachments/button.js',
-					'src/wp-includes/js/media/views/button/delete-selected-permanently.js' : 'src/js/media/views/button/delete-selected-permanently.js',
-					'src/wp-includes/js/media/views/button/delete-selected.js' : 'src/js/media/views/button/delete-selected.js',
-					'src/wp-includes/js/media/views/button/select-mode-toggle.js' : 'src/js/media/views/button/select-mode-toggle.js',
-					'src/wp-includes/js/media/views/cropper.js' : 'src/js/media/views/cropper.js',
-					'src/wp-includes/js/media/views/edit-image-details.js' : 'src/js/media/views/edit-image-details.js',
-					'src/wp-includes/js/media/views/edit-image.js' : 'src/js/media/views/edit-image.js',
-					'src/wp-includes/js/media/views/embed.js' : 'src/js/media/views/embed.js',
-					'src/wp-includes/js/media/views/embed/image.js' : 'src/js/media/views/embed/image.js',
-					'src/wp-includes/js/media/views/embed/link.js' : 'src/js/media/views/embed/link.js',
-					'src/wp-includes/js/media/views/embed/url.js' : 'src/js/media/views/embed/url.js',
-					'src/wp-includes/js/media/views/focus-manager.js' : 'src/js/media/views/focus-manager.js',
-					'src/wp-includes/js/media/views/frame.js' : 'src/js/media/views/frame.js',
-					'src/wp-includes/js/media/views/frame/audio-details.js' : 'src/js/media/views/frame/audio-details.js',
-					'src/wp-includes/js/media/views/frame/edit-attachments.js' : 'src/js/media/views/frame/edit-attachments.js',
-					'src/wp-includes/js/media/views/frame/image-details.js' : 'src/js/media/views/frame/image-details.js',
-					'src/wp-includes/js/media/views/frame/manage.js' : 'src/js/media/views/frame/manage.js',
-					'src/wp-includes/js/media/views/frame/media-details.js' : 'src/js/media/views/frame/media-details.js',
-					'src/wp-includes/js/media/views/frame/post.js' : 'src/js/media/views/frame/post.js',
-					'src/wp-includes/js/media/views/frame/select.js' : 'src/js/media/views/frame/select.js',
-					'src/wp-includes/js/media/views/frame/video-details.js' : 'src/js/media/views/frame/video-details.js',
-					'src/wp-includes/js/media/views/iframe.js' : 'src/js/media/views/iframe.js',
-					'src/wp-includes/js/media/views/image-details.js' : 'src/js/media/views/image-details.js',
-					'src/wp-includes/js/media/views/label.js' : 'src/js/media/views/label.js',
-					'src/wp-includes/js/media/views/media-details.js' : 'src/js/media/views/media-details.js',
-					'src/wp-includes/js/media/views/media-frame.js' : 'src/js/media/views/media-frame.js',
-					'src/wp-includes/js/media/views/menu-item.js' : 'src/js/media/views/menu-item.js',
-					'src/wp-includes/js/media/views/menu.js' : 'src/js/media/views/menu.js',
-					'src/wp-includes/js/media/views/modal.js' : 'src/js/media/views/modal.js',
-					'src/wp-includes/js/media/views/priority-list.js' : 'src/js/media/views/priority-list.js',
-					'src/wp-includes/js/media/views/router-item.js' : 'src/js/media/views/router-item.js',
-					'src/wp-includes/js/media/views/router.js' : 'src/js/media/views/router.js',
-					'src/wp-includes/js/media/views/search.js' : 'src/js/media/views/search.js',
-					'src/wp-includes/js/media/views/selection.js' : 'src/js/media/views/selection.js',
-					'src/wp-includes/js/media/views/settings.js' : 'src/js/media/views/settings.js',
-					'src/wp-includes/js/media/views/settings/attachment-display.js' : 'src/js/media/views/settings/attachment-display.js',
-					'src/wp-includes/js/media/views/settings/gallery.js' : 'src/js/media/views/settings/gallery.js',
-					'src/wp-includes/js/media/views/settings/playlist.js' : 'src/js/media/views/settings/playlist.js',
-					'src/wp-includes/js/media/views/sidebar.js' : 'src/js/media/views/sidebar.js',
-					'src/wp-includes/js/media/views/site-icon-cropper.js' : 'src/js/media/views/site-icon-cropper.js',
-					'src/wp-includes/js/media/views/site-icon-preview.js' : 'src/js/media/views/site-icon-preview.js',
-					'src/wp-includes/js/media/views/spinner.js' : 'src/js/media/views/spinner.js',
-					'src/wp-includes/js/media/views/toolbar.js' : 'src/js/media/views/toolbar.js',
-					'src/wp-includes/js/media/views/toolbar/embed.js' : 'src/js/media/views/toolbar/embed.js',
-					'src/wp-includes/js/media/views/toolbar/select.js' : 'src/js/media/views/toolbar/select.js',
-					'src/wp-includes/js/media/views/uploader/editor.js' : 'src/js/media/views/uploader/editor.js',
-					'src/wp-includes/js/media/views/uploader/inline.js' : 'src/js/media/views/uploader/inline.js',
-					'src/wp-includes/js/media/views/uploader/status-error.js' : 'src/js/media/views/uploader/status-error.js',
-					'src/wp-includes/js/media/views/uploader/status.js' : 'src/js/media/views/uploader/status.js',
-					'src/wp-includes/js/media/views/uploader/window.js' : 'src/js/media/views/uploader/window.js',
-					'src/wp-includes/js/media/views/video-details.js' : 'src/js/media/views/video-details.js',
-					'src/wp-includes/js/media/views/view.js' : 'src/js/media/views/view.js'
+					'src/wp-includes/js/media/controllers/audio-details.js': 'src/js/media/controllers/audio-details.js',
+					'src/wp-includes/js/media/controllers/collection-add.js': 'src/js/media/controllers/collection-add.js',
+					'src/wp-includes/js/media/controllers/collection-edit.js': 'src/js/media/controllers/collection-edit.js',
+					'src/wp-includes/js/media/controllers/cropper.js': 'src/js/media/controllers/cropper.js',
+					'src/wp-includes/js/media/controllers/customize-image-cropper.js': 'src/js/media/controllers/customize-image-cropper.js',
+					'src/wp-includes/js/media/controllers/edit-attachment-metadata.js': 'src/js/media/controllers/edit-attachment-metadata.js',
+					'src/wp-includes/js/media/controllers/edit-image.js': 'src/js/media/controllers/edit-image.js',
+					'src/wp-includes/js/media/controllers/embed.js': 'src/js/media/controllers/embed.js',
+					'src/wp-includes/js/media/controllers/featured-image.js': 'src/js/media/controllers/featured-image.js',
+					'src/wp-includes/js/media/controllers/gallery-add.js': 'src/js/media/controllers/gallery-add.js',
+					'src/wp-includes/js/media/controllers/gallery-edit.js': 'src/js/media/controllers/gallery-edit.js',
+					'src/wp-includes/js/media/controllers/image-details.js': 'src/js/media/controllers/image-details.js',
+					'src/wp-includes/js/media/controllers/library.js': 'src/js/media/controllers/library.js',
+					'src/wp-includes/js/media/controllers/media-library.js': 'src/js/media/controllers/media-library.js',
+					'src/wp-includes/js/media/controllers/region.js': 'src/js/media/controllers/region.js',
+					'src/wp-includes/js/media/controllers/replace-image.js': 'src/js/media/controllers/replace-image.js',
+					'src/wp-includes/js/media/controllers/site-icon-cropper.js': 'src/js/media/controllers/site-icon-cropper.js',
+					'src/wp-includes/js/media/controllers/state-machine.js': 'src/js/media/controllers/state-machine.js',
+					'src/wp-includes/js/media/controllers/state.js': 'src/js/media/controllers/state.js',
+					'src/wp-includes/js/media/controllers/video-details.js': 'src/js/media/controllers/video-details.js',
+					'src/wp-includes/js/media/models/attachment.js': 'src/js/media/models/attachment.js',
+					'src/wp-includes/js/media/models/attachments.js': 'src/js/media/models/attachments.js',
+					'src/wp-includes/js/media/models/post-image.js': 'src/js/media/models/post-image.js',
+					'src/wp-includes/js/media/models/post-media.js': 'src/js/media/models/post-media.js',
+					'src/wp-includes/js/media/models/query.js': 'src/js/media/models/query.js',
+					'src/wp-includes/js/media/models/selection.js': 'src/js/media/models/selection.js',
+					'src/wp-includes/js/media/routers/manage.js': 'src/js/media/routers/manage.js',
+					'src/wp-includes/js/media/utils/selection-sync.js': 'src/js/media/utils/selection-sync.js',
+					'src/wp-includes/js/media/views/attachment-compat.js': 'src/js/media/views/attachment-compat.js',
+					'src/wp-includes/js/media/views/attachment-filters.js': 'src/js/media/views/attachment-filters.js',
+					'src/wp-includes/js/media/views/attachment-filters/all.js': 'src/js/media/views/attachment-filters/all.js',
+					'src/wp-includes/js/media/views/attachment-filters/date.js': 'src/js/media/views/attachment-filters/date.js',
+					'src/wp-includes/js/media/views/attachment-filters/uploaded.js': 'src/js/media/views/attachment-filters/uploaded.js',
+					'src/wp-includes/js/media/views/attachment.js': 'src/js/media/views/attachment.js',
+					'src/wp-includes/js/media/views/attachment/details-two-column.js': 'src/js/media/views/details-two-column.js',
+					'src/wp-includes/js/media/views/attachment/details.js': 'src/js/media/views/details.js',
+					'src/wp-includes/js/media/views/attachment/edit-library.js': 'src/js/media/views/edit-library.js',
+					'src/wp-includes/js/media/views/attachment/edit-selection.js': 'src/js/media/views/edit-selection.js',
+					'src/wp-includes/js/media/views/attachment/library.js': 'src/js/media/views/library.js',
+					'src/wp-includes/js/media/views/attachment/selection.js': 'src/js/media/views/selection.js',
+					'src/wp-includes/js/media/views/attachment/attachments.js': 'src/js/media/views/attachments.js',
+					'src/wp-includes/js/media/views/attachments/browser.js': 'src/js/media/views/attachments/browser.js',
+					'src/wp-includes/js/media/views/attachments/selection.js': 'src/js/media/views/attachments/selection.js',
+					'src/wp-includes/js/media/views/attachments/audio-details.js': 'src/js/media/views/attachments/audio-details.js',
+					'src/wp-includes/js/media/views/attachments/button-group.js': 'src/js/media/views/attachments/button-group.js',
+					'src/wp-includes/js/media/views/attachments/button.js': 'src/js/media/views/attachments/button.js',
+					'src/wp-includes/js/media/views/button/delete-selected-permanently.js': 'src/js/media/views/button/delete-selected-permanently.js',
+					'src/wp-includes/js/media/views/button/delete-selected.js': 'src/js/media/views/button/delete-selected.js',
+					'src/wp-includes/js/media/views/button/select-mode-toggle.js': 'src/js/media/views/button/select-mode-toggle.js',
+					'src/wp-includes/js/media/views/cropper.js': 'src/js/media/views/cropper.js',
+					'src/wp-includes/js/media/views/edit-image-details.js': 'src/js/media/views/edit-image-details.js',
+					'src/wp-includes/js/media/views/edit-image.js': 'src/js/media/views/edit-image.js',
+					'src/wp-includes/js/media/views/embed.js': 'src/js/media/views/embed.js',
+					'src/wp-includes/js/media/views/embed/image.js': 'src/js/media/views/embed/image.js',
+					'src/wp-includes/js/media/views/embed/link.js': 'src/js/media/views/embed/link.js',
+					'src/wp-includes/js/media/views/embed/url.js': 'src/js/media/views/embed/url.js',
+					'src/wp-includes/js/media/views/focus-manager.js': 'src/js/media/views/focus-manager.js',
+					'src/wp-includes/js/media/views/frame.js': 'src/js/media/views/frame.js',
+					'src/wp-includes/js/media/views/frame/audio-details.js': 'src/js/media/views/frame/audio-details.js',
+					'src/wp-includes/js/media/views/frame/edit-attachments.js': 'src/js/media/views/frame/edit-attachments.js',
+					'src/wp-includes/js/media/views/frame/image-details.js': 'src/js/media/views/frame/image-details.js',
+					'src/wp-includes/js/media/views/frame/manage.js': 'src/js/media/views/frame/manage.js',
+					'src/wp-includes/js/media/views/frame/media-details.js': 'src/js/media/views/frame/media-details.js',
+					'src/wp-includes/js/media/views/frame/post.js': 'src/js/media/views/frame/post.js',
+					'src/wp-includes/js/media/views/frame/select.js': 'src/js/media/views/frame/select.js',
+					'src/wp-includes/js/media/views/frame/video-details.js': 'src/js/media/views/frame/video-details.js',
+					'src/wp-includes/js/media/views/iframe.js': 'src/js/media/views/iframe.js',
+					'src/wp-includes/js/media/views/image-details.js': 'src/js/media/views/image-details.js',
+					'src/wp-includes/js/media/views/label.js': 'src/js/media/views/label.js',
+					'src/wp-includes/js/media/views/media-details.js': 'src/js/media/views/media-details.js',
+					'src/wp-includes/js/media/views/media-frame.js': 'src/js/media/views/media-frame.js',
+					'src/wp-includes/js/media/views/menu-item.js': 'src/js/media/views/menu-item.js',
+					'src/wp-includes/js/media/views/menu.js': 'src/js/media/views/menu.js',
+					'src/wp-includes/js/media/views/modal.js': 'src/js/media/views/modal.js',
+					'src/wp-includes/js/media/views/priority-list.js': 'src/js/media/views/priority-list.js',
+					'src/wp-includes/js/media/views/router-item.js': 'src/js/media/views/router-item.js',
+					'src/wp-includes/js/media/views/router.js': 'src/js/media/views/router.js',
+					'src/wp-includes/js/media/views/search.js': 'src/js/media/views/search.js',
+					'src/wp-includes/js/media/views/selection.js': 'src/js/media/views/selection.js',
+					'src/wp-includes/js/media/views/settings.js': 'src/js/media/views/settings.js',
+					'src/wp-includes/js/media/views/settings/attachment-display.js': 'src/js/media/views/settings/attachment-display.js',
+					'src/wp-includes/js/media/views/settings/gallery.js': 'src/js/media/views/settings/gallery.js',
+					'src/wp-includes/js/media/views/settings/playlist.js': 'src/js/media/views/settings/playlist.js',
+					'src/wp-includes/js/media/views/sidebar.js': 'src/js/media/views/sidebar.js',
+					'src/wp-includes/js/media/views/site-icon-cropper.js': 'src/js/media/views/site-icon-cropper.js',
+					'src/wp-includes/js/media/views/site-icon-preview.js': 'src/js/media/views/site-icon-preview.js',
+					'src/wp-includes/js/media/views/spinner.js': 'src/js/media/views/spinner.js',
+					'src/wp-includes/js/media/views/toolbar.js': 'src/js/media/views/toolbar.js',
+					'src/wp-includes/js/media/views/toolbar/embed.js': 'src/js/media/views/toolbar/embed.js',
+					'src/wp-includes/js/media/views/toolbar/select.js': 'src/js/media/views/toolbar/select.js',
+					'src/wp-includes/js/media/views/uploader/editor.js': 'src/js/media/views/uploader/editor.js',
+					'src/wp-includes/js/media/views/uploader/inline.js': 'src/js/media/views/uploader/inline.js',
+					'src/wp-includes/js/media/views/uploader/status-error.js': 'src/js/media/views/uploader/status-error.js',
+					'src/wp-includes/js/media/views/uploader/status.js': 'src/js/media/views/uploader/status.js',
+					'src/wp-includes/js/media/views/uploader/window.js': 'src/js/media/views/uploader/window.js',
+					'src/wp-includes/js/media/views/video-details.js': 'src/js/media/views/video-details.js',
+					'src/wp-includes/js/media/views/view.js': 'src/js/media/views/view.js'
 				}
 			}
 		},
@@ -1092,7 +1099,7 @@
 					// Ignore version control directories.
 					'!' + SOURCE_DIR + '**/.{svn,git}/**'
 				],
-				tasks: ['clean:dynamic', 'copy:dynamic'],
+				tasks: [ 'clean:dynamic', 'copy:dynamic' ],
 				options: {
 					dot: true,
 					spawn: false
@@ -1099,8 +1106,8 @@
 				}
 			},
 			'js-enqueues': {
-				files: [SOURCE_DIR + 'js/_enqueues/**/*.js'],
-				tasks: ['clean:dynamic', 'copy:dynamic-js', 'uglify:dynamic', 'jsvalidate:dynamic'],
+				files: [ SOURCE_DIR + 'js/_enqueues/**/*.js' ],
+				tasks: [ 'clean:dynamic', 'copy:dynamic-js', 'uglify:dynamic', 'jsvalidate:dynamic' ],
 				options: {
 					dot: true,
 					spawn: false
@@ -1112,7 +1119,7 @@
 					'!' + SOURCE_DIR + 'js/_enqueues/**/*.js',
 					'webpack-dev.config.js'
 				],
-				tasks: ['clean:dynamic', 'webpack:dev', 'uglify:dynamic', 'jsvalidate:dynamic'],
+				tasks: [ 'clean:dynamic', 'webpack:dev', 'uglify:dynamic', 'jsvalidate:dynamic' ],
 				options: {
 					dot: true,
 					spawn: false
@@ -1125,8 +1132,8 @@
 				]
 			},
 			colors: {
-				files: [SOURCE_DIR + 'wp-admin/css/colors/**'],
-				tasks: ['sass:colors']
+				files: [ SOURCE_DIR + 'wp-admin/css/colors/**' ],
+				tasks: [ 'sass:colors' ]
 			},
 			rtl: {
 				files: [
@@ -1133,7 +1140,7 @@
 					SOURCE_DIR + 'wp-admin/css/*.css',
 					SOURCE_DIR + 'wp-includes/css/*.css'
 				],
-				tasks: ['rtlcss:dynamic'],
+				tasks: [ 'rtlcss:dynamic' ],
 				options: {
 					spawn: false
 				}
@@ -1143,10 +1150,10 @@
 					'tests/qunit/**',
 					'!tests/qunit/editor/**'
 				],
-				tasks: ['qunit']
+				tasks: [ 'qunit' ]
 			}
 		}
-	});
+	} );
 
 	// Allow builds to be minimal
 	if( grunt.option( 'minimal-copy' ) ) {
@@ -1163,10 +1170,10 @@
 	grunt.loadNpmTasks( 'grunt-webpack' );
 
 	// RTL task.
-	grunt.registerTask('rtl', ['rtlcss:core', 'rtlcss:colors']);
+	grunt.registerTask( 'rtl', [ 'rtlcss:core', 'rtlcss:colors' ] );
 
 	// Color schemes task.
-	grunt.registerTask('colors', ['sass:colors', 'postcss:colors']);
+	grunt.registerTask( 'colors', [ 'sass:colors', 'postcss:colors' ] );
 
 	// JSHint task.
 	grunt.registerTask( 'jshint:corejs', [
@@ -1251,7 +1258,7 @@
 		function runAllTasks() {
 			grunt.log.writeln( 'Cannot determine which files are modified as SVN and GIT are not available.' );
 			grunt.log.writeln( 'Running all tasks and all tests.' );
-			grunt.task.run([
+			grunt.task.run( [
 				'format:php',
 				'precommit:js',
 				'precommit:css',
@@ -1258,7 +1265,7 @@
 				'precommit:image',
 				'precommit:emoji',
 				'precommit:php'
-			]);
+			] );
 
 			done();
 		}
@@ -1384,6 +1391,8 @@
 	grunt.registerTask( 'build', function() {
 		if ( grunt.option( 'dev' ) ) {
 			grunt.task.run( [
+				// Clean (potentially) old files from /build.
+				'clean:files',
 				'build:js',
 				'build:css',
 			] );
@@ -1394,6 +1403,9 @@
 				'build:css',
 				'includes:emoji',
 				'includes:embed',
+
+				// Remove the leftover `/src/wp-includes/js` directory after building in /build has finished.
+				'clean:js',
 			] );
 		}
 	} );
@@ -1407,18 +1419,21 @@
 	] );
 
 	// Testing tasks.
-	grunt.registerMultiTask('phpunit', 'Runs PHPUnit tests, including the ajax, external-http, and multisite tests.', function() {
-		grunt.util.spawn({
+	grunt.registerMultiTask( 'phpunit', 'Runs PHPUnit tests, including the ajax, external-http, and multisite tests.', function() {
+		grunt.util.spawn( {
 			cmd: this.data.cmd,
 			args: phpUnitWatchGroup ? this.data.args.concat( [ '--group', phpUnitWatchGroup ] ) : this.data.args,
 			opts: {stdio: 'inherit'}
-		}, this.async());
-	});
+		}, this.async() );
+	} );
 
-	grunt.registerTask('qunit:compiled', 'Runs QUnit tests on compiled as well as uncompiled scripts.',
-		['build', 'copy:qunit', 'qunit']);
+	grunt.registerTask(
+		'qunit:compiled',
+		'Runs QUnit tests on compiled as well as uncompiled scripts.',
+		[ 'build', 'copy:qunit', 'qunit' ]
+	);
 
-	grunt.registerTask('test', 'Runs all QUnit and PHPUnit tasks.', ['qunit:compiled', 'phpunit']);
+	grunt.registerTask( 'test', 'Runs all QUnit and PHPUnit tasks.', [ 'qunit:compiled', 'phpunit' ] );
 
 	grunt.registerTask( 'format:php', 'Runs the code formatter on changed files.', function() {
 		var done = this.async();
@@ -1465,18 +1480,22 @@
 	} );
 
 	// Travis CI tasks.
-	grunt.registerTask('travis:js', 'Runs Javascript Travis CI tasks.', [ 'jshint:corejs', 'qunit:compiled' ]);
-	grunt.registerTask('travis:phpunit', 'Runs PHPUnit Travis CI tasks.', [ 'build', 'phpunit' ]);
-	grunt.registerTask('travis:phpcs', 'Runs PHP Coding Standards Travis CI tasks.', [ 'format:php:error', 'lint:php:travisErrors:error', 'lint:php:travisWarnings:error' ]);
+	grunt.registerTask( 'travis:js', 'Runs Javascript Travis CI tasks.', [ 'jshint:corejs', 'qunit:compiled' ] );
+	grunt.registerTask( 'travis:phpunit', 'Runs PHPUnit Travis CI tasks.', [ 'build', 'phpunit' ] );
+	grunt.registerTask(
+		'travis:phpcs',
+		'Runs PHP Coding Standards Travis CI tasks.',
+		[ 'format:php:error', 'lint:php:travisErrors:error', 'lint:php:travisWarnings:error' ]
+	);
 
 	// Patch task.
-	grunt.renameTask('patch_wordpress', 'patch');
+	grunt.renameTask( 'patch_wordpress', 'patch' );
 
 	// Add an alias `apply` of the `patch` task name.
-	grunt.registerTask('apply', 'patch');
+	grunt.registerTask( 'apply', 'patch' );
 
 	// Default task.
-	grunt.registerTask('default', ['build']);
+	grunt.registerTask( 'default', [ 'build' ] );
 
 	/*
 	 * Automatically updates the `:dynamic` configurations
@@ -1507,7 +1526,7 @@
 				for ( var i = 0; i < configs.length; i++ ) {
 					var config = configs[ i ];
 					var relative = path.relative( config.cwd, filepath );
-					var minimatch = require('minimatch');
+					var minimatch = require( 'minimatch' );
 
 					if ( minimatch.match( config.src, relative, {} ) ) {
 						dest = config.dest + relative;
@@ -1576,5 +1595,5 @@
 				grunt.config( [ 'rtlcss', 'dynamic', 'src' ], src );
 			}
 		}
-	});
+	} );
 };
