Browse Source

grunt build tools

windhamdavid 10 years ago
parent
commit
c61f4bc125
4 changed files with 186 additions and 0 deletions
  1. 3 0
      .gitmodules
  2. 155 0
      Gruntfile.js
  3. 1 0
      app/plugins/wp-varnish
  4. 27 0
      package.json

+ 3 - 0
.gitmodules

@@ -47,3 +47,6 @@
 [submodule "app/plugins/securi-wp-plugin"]
 	path = app/plugins/securi-wp-plugin
 	url = git@github.com:sucuri/Sucuri-WP-Plugin.git
+[submodule "app/plugins/wp-varnish"]
+	path = app/plugins/wp-varnish
+	url = git@github.com:pkhamre/wp-varnish.git

+ 155 - 0
Gruntfile.js

@@ -0,0 +1,155 @@
+/*global module:false*/
+module.exports = function(grunt) {
+	var path = require('path');
+	var SOURCE_DIR = 'wp/';
+	var BUILD_DIR = 'build/';
+
+	// Project configuration.
+	grunt.initConfig({
+		clean: {
+			all: [BUILD_DIR],
+			dynamic: {
+				dot: true,
+				expand: true,
+				cwd: BUILD_DIR,
+				src: []
+			},
+			svn: [SOURCE_DIR]
+		},
+		copy: {
+			all: {
+				dot: true,
+				expand: true,
+				cwd: SOURCE_DIR,
+				src: ['**','!**/.{svn,git}/**'], // Ignore version control directories.
+				dest: BUILD_DIR
+		  },
+		  dynamic: {
+				dot: true,
+				expand: true,
+				cwd: SOURCE_DIR,
+				dest: BUILD_DIR,
+				src: []
+			}
+		},
+		cssmin: {
+			core: {
+				expand: true,
+				cwd: SOURCE_DIR,
+				dest: BUILD_DIR,
+				ext: '.min.css',
+				src: [
+					'wp/wp-admin/css/*.css',
+					'wp/wp-includes/css/*.css',
+					// Exceptions
+					'wp/!wp-admin/css/farbtastic.css'
+				]
+			}
+		},
+		svn: {
+			core: {
+				repository: 'https://core.svn.wordpress.org/trunk/',
+				dest: SOURCE_DIR
+			}
+		},
+		uglify: {
+			core: {
+				expand: true,
+				cwd: SOURCE_DIR,
+				dest: BUILD_DIR,
+				ext: '.min.js',
+				src: [
+					'wp/wp-admin/js/*.js',
+					'wp-includes/js/*.js',
+					'wp-includes/js/plupload/handlers.js',
+					'wp-includes/js/plupload/wp-plupload.js',
+					'wp-includes/js/tinymce/plugins/wp*/js/*.js',
+					// Exceptions
+					'!wp-admin/js/custom-header.js', // Why? We should minify this.
+					'!wp-admin/js/farbtastic.js',
+					'!wp-admin/js/iris.min.js',
+					'!wp-includes/js/backbone.min.js',
+					'!wp-includes/js/swfobject.js',
+					'!wp-includes/js/underscore.min.js'
+				]
+			},
+			tinymce: {
+				expand: true,
+				cwd: SOURCE_DIR,
+				dest: BUILD_DIR,
+				src: [
+					'wp-includes/js/tinymce/plugins/wordpress/editor_plugin_src.js',
+					'wp-includes/js/tinymce/plugins/wp*/editor_plugin_src.js'
+				],
+				// TinyMCE plugins use a nonstandard naming scheme: plugin files are named
+				// `editor_plugin_src.js`, and are compressed into `editor_plugin.js`.
+				rename: function(destBase, destPath) {
+					destPath = destPath.replace('/editor_plugin_src.js', '/editor_plugin.js');
+					return path.join(destBase || '', destPath);
+				}
+			}
+		},
+		watch: {
+			all: {
+				files: [
+					SOURCE_DIR + '**',
+					// Ignore version control directories.
+					'!' + SOURCE_DIR + '**/.{svn,git}/**'
+				],
+				tasks: ['clean:dynamic', 'copy:dynamic'],
+				options: {
+					dot: true,
+					spawn: false,
+					interval: 2000
+				}
+			}
+		}
+	});
+
+	// Load tasks.
+	grunt.loadNpmTasks('grunt-contrib-clean');
+	grunt.loadNpmTasks('grunt-contrib-copy');
+	grunt.loadNpmTasks('grunt-contrib-cssmin');
+	grunt.loadNpmTasks('grunt-contrib-uglify');
+	grunt.loadNpmTasks('grunt-contrib-watch');
+
+	// Register tasks.
+	grunt.registerTask('build', ['clean:all', 'copy:all', 'cssmin:core',
+		'uglify:core', 'uglify:tinymce']);
+
+
+	// Add a temporary setup task for preparing the directory using existing repositories.
+	grunt.registerTask('setup', ['clean:all', 'svn']);
+
+	// Add an svn task for checking out repositories.
+	grunt.registerMultiTask('svn', 'Check out a Subversion repository.', function() {
+		var done = this.async();
+		var args = ['checkout', '--ignore-externals', this.data.repository];
+		if (this.data.dest) {
+			args.push(this.data.dest);
+		}
+
+		grunt.util.spawn({
+			cmd: 'svn',
+			args: args,
+			opts: {stdio: 'inherit'}
+		}, done);
+	});
+
+	// Default task.
+	grunt.registerTask('default', ['build']);
+
+	// Add a listener to the watch task.
+	//
+	// On `watch:all`, automatically updates the `copy:dynamic` and `clean:dynamic`
+	// configurations so that only the changed files are updated.
+	grunt.event.on('watch', function(action, filepath, target) {
+		if (target != 'all') return;
+
+		var relativePath = path.relative(SOURCE_DIR, filepath);
+		var cleanSrc = (action == 'deleted') ? [relativePath] : [];
+		var copySrc = (action == 'deleted') ? [] : [relativePath];
+		grunt.config(['clean', 'dynamic', 'src'], cleanSrc);
+		grunt.config(['copy', 'dynamic', 'src'], copySrc);
+	});
+};

+ 1 - 0
app/plugins/wp-varnish

@@ -0,0 +1 @@
+Subproject commit 836f815dd5a32d62583c108b26f246b4662dd1fb

+ 27 - 0
package.json

@@ -0,0 +1,27 @@
+{
+  "name": "WP windhamdavid",
+  "version": "3.9.0",
+  "description": "",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/WordPress/WordPress"
+  },
+  "author": "WordPress Contributors",
+  "license": "GPLv2 or later",
+  "devDependencies": {
+    "grunt": "~0.4.1",
+    "grunt-contrib-clean": "~0.5.0",
+    "grunt-contrib-copy": "~0.4.1",
+    "grunt-contrib-cssmin": "~0.6.1",
+    "grunt-contrib-qunit": "~0.2.2",
+    "grunt-contrib-uglify": "~0.2.2",
+    "grunt-contrib-watch": "~0.5.1",
+    "grunt-contrib-compress": "~0.5.2",
+    "grunt-contrib-concat": "~0.3.0",
+    "grunt-contrib-jshint": "~0.7.0",
+    "grunt-cssjanus": "git://github.com/yoavf/grunt-cssjanus.git#e0158f4087d1c4bb5a8d1648a63ef133338b5879",
+    "grunt-sass": "~0.8.0",
+    "grunt-jsvalidate": "~0.2.2",
+    "matchdep": "~0.1.2"
+  }
+}