Index: Gruntfile.js
===================================================================
--- Gruntfile.js	(revision 27176)
+++ Gruntfile.js	(working copy)
@@ -40,7 +40,8 @@
 				src: []
 			},
 			tinymce: ['<%= concat.tinymce.dest %>'],
-			qunit: ['tests/qunit/compiled.html']
+			qunit: ['tests/qunit/compiled.html'],
+			packages: ['packages/**']
 		},
 		copy: {
 			files: {
@@ -321,6 +322,44 @@
 				},
 				src: '<%= concat.tinymce.dest %>',
 				dest: BUILD_DIR + 'wp-includes/js/tinymce/wp-tinymce.js.gz'
+			},
+			core: {
+				options: {
+					mode: 'zip',
+					archive: 'packages/wordpress.zip',
+					level: 9
+				},
+				expand: true,
+				cwd: BUILD_DIR,
+				src: [
+					'**',
+					'!wp-content/**',
+					'wp-content/plugins/hello.php',
+					'wp-content/themes/twenty{twelve,thirteen,fourteen}'
+				],
+				dest: 'wordpress/'
+			},
+			'core-no-content': {
+				options: {
+					mode: 'zip',
+					archive: 'packages/wordpress-no-content.zip',
+					level: 9
+				},
+				expand: true,
+				cwd: BUILD_DIR,
+				src: ['**', '!wp-content/**'],
+				dest: 'wordpress/'
+			},
+			'core-tarball': {
+				options: {
+					mode: 'tgz',
+					archive: 'packages/wordpress.tar.gz',
+					level: 9
+				},
+				expand: true,
+				cwd: BUILD_DIR,
+				src: '<%= compress.core.src %>',
+				dest: 'wordpress/'
 			}
 		},
 		jsvalidate:{
@@ -407,6 +446,10 @@
 	grunt.registerTask('build', ['clean:all', 'copy:all', 'cssmin:core', 'colors', 'rtl', 'cssmin:rtl', 'cssmin:colors',
 		'uglify:core', 'concat:tinymce', 'compress:tinymce', 'clean:tinymce', 'jsvalidate:build']);
 
+	// Package creation task.
+	grunt.registerTask('package', 'Create download packages, for testing purposes.',
+		['build', 'clean:packages', 'compress:core', 'compress:core-no-content', 'compress:core-tarball']);
+
 	// Testing tasks.
 	grunt.registerMultiTask('phpunit', 'Runs PHPUnit tests, including the ajax and multisite tests.', function() {
 		grunt.util.spawn({
