123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- module.exports = function(grunt) {
- var path = require('path');
- var SOURCE_DIR = 'wp/';
- var BUILD_DIR = 'build/';
- 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-admin/css/*.css',
- 'wp-includes/css/*.css',
- // Exceptions
- '!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-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']);
- // 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);
- });
- };
|