Skip to:
Content

BuddyPress.org

Ticket #6382: 6382.4.patch

File 6382.4.patch, 5.1 KB (added by netweb, 4 years ago)
  • Gruntfile.js

     
    11/* jshint node:true */
    22/* global module */
    33module.exports = function( grunt ) {
    4         var SOURCE_DIR = 'src/',
     4        var path   = require( 'path' ),
     5                SOURCE_DIR = 'src/',
    56                BUILD_DIR = 'build/',
    67
    78                BP_CSS = [
     
    1011
    1112                // CSS exclusions, for excluding files from certain tasks, e.g. rtlcss
    1213                BP_EXCLUDED_CSS = [
    13                         '!**/*-rtl.css'
     14                        '!**/*-rtl.css',
     15                        '!**/*.min.css'
    1416                ],
    1517
    1618                BP_JS = [
    1719                        '**/*.js'
    1820                ],
    1921
     22                // JS exclusions, for excluding files from certain tasks, e.g. ugligy
     23                BP_EXCLUDED_JS = [
     24                        '!**/*.min.js'
     25                ],
     26
    2027                BP_EXCLUDED_MISC = [
    2128                        '!bp-forums/bbpress/**/*'
    2229                ],
    2330
     31                BP_SCSS = [
     32                        'bp-templates/bp-legacy/css/*.scss',
     33                        'bp-templates/bp-nouveau/sass/buddypress.scss',
     34                        'bp-templates/bp-nouveau/common-styles/*.scss',
     35                        'bp-templates/bp-nouveau/sass/*.scss'
     36                ],
     37
    2438                // SASS generated "Twenty*"" CSS files
    2539                BP_SCSS_CSS_FILES = [
    2640                        '!bp-templates/bp-legacy/css/twenty*.css',
     
    4660                        grunt: {
    4761                                src: ['Gruntfile.js']
    4862                        },
     63                        dynamic: {
     64                                expand: true
     65                        },
    4966                        core: {
    5067                                expand: true,
    5168                                cwd: SOURCE_DIR,
     
    125142                                extDot: 'last',
    126143                                ext: '-rtl.css',
    127144                                src: BP_CSS.concat( BP_EXCLUDED_CSS, BP_EXCLUDED_MISC )
     145                        },
     146                        dynamic: {
     147                                expand: true,
     148                                cwd: SOURCE_DIR,
     149                                dest: SOURCE_DIR,
     150                                extDot: 'last',
     151                                ext: '-rtl.css',
     152                                src: []
    128153                        }
    129154                },
    130155                checktextdomain: {
     
    180205                        }
    181206                },
    182207                clean: {
    183                         all: [ BUILD_DIR ]
     208                        all: [ BUILD_DIR ],
     209                        dynamic: {
     210                                cwd: BUILD_DIR,
     211                                dot: true,
     212                                expand: true,
     213                                src: []
     214                        }
    184215                },
    185216                copy: {
    186217                        files: {
     
    199230                                                src: ['composer.json']
    200231                                        }
    201232                                ]
     233                        },
     234                        dynamic: {
     235                                cwd: SOURCE_DIR,
     236                                dest: BUILD_DIR,
     237                                dot: true,
     238                                expand: true,
     239                                src: []
    202240                        }
    203241                },
    204242                uglify: {
     
    208246                                extDot: 'last',
    209247                                expand: true,
    210248                                ext: '.min.js',
    211                                 src: BP_JS
     249                                src: BP_JS.concat( BP_EXCLUDED_JS )
     250                        },
     251                        dynamic: {
     252                                cwd: SOURCE_DIR,
     253                                dest: BUILD_DIR,
     254                                expand: true,
     255                                ext: '.min.js',
     256                                extDot: 'last',
     257                                src: []
    212258                        }
    213259                },
    214260                stylelint: {
     
    238284                                extDot: 'last',
    239285                                expand: true,
    240286                                ext: '.min.css',
    241                                 src: BP_CSS
     287                                src: BP_CSS.concat( BP_EXCLUDED_CSS )
    242288                        }
    243289                },
    244290                phpunit: {
     
    267313                                stdout: false
    268314                        }
    269315                },
    270                 jsvalidate:{
    271                         options:{
     316                jsvalidate: {
     317                        options: {
    272318                                globals: {},
    273319                                esprimaOptions:{},
    274320                                verbose: false
     
    282328                                files: {
    283329                                        src: [SOURCE_DIR + '/**/*.js'].concat( BP_EXCLUDED_MISC )
    284330                                }
    285                         }
     331                        },
     332                        dynamic: {
     333                                files: {}
     334                        }
    286335                },
    287336                patch: {
    288337                        options: {
     
    293342                        options: {
    294343                                tracUrl: 'buddypress.trac.wordpress.org'
    295344                        }
     345                },
     346                watch: {
     347                        all: {
     348                                files: ['**', '!**/.{svn,git}/**'].concat( BP_EXCLUDED_MISC ),
     349                                tasks: ['clean:dynamic', 'copy:dynamic'],
     350                                options: {
     351                                        dot: true,
     352                                        spawn: false
     353                                }
     354                        },
     355                        config: {
     356                                files: 'Gruntfile.js',
     357                                tasks: ['jsvalidate:dynamic', 'jshint:grunt'],
     358                                options: {
     359                                        spawn: false
     360                                }
     361                        },
     362                        js: {
     363                                files: BP_JS.map( function( path ) {
     364                                        return SOURCE_DIR + path;
     365                                } ),
     366                                tasks: ['jsvalidate:dynamic', 'jshint:dynamic'],
     367                                options: {
     368                                        spawn: false
     369                                }
     370                        },
     371                        rtl: {
     372                                files: BP_CSS.map( function( path ) {
     373                                        return SOURCE_DIR + path;
     374                                } ),
     375                                tasks: ['rtlcss:dynamic'],
     376                                options: {
     377                                        spawn: false
     378                                }
     379                        },
     380                        styles: {
     381                                files: [SOURCE_DIR + BP_SCSS],
     382                                tasks: ['stylelint:sass', 'sass']
     383                        }
    296384                }
    297385        });
    298386
     
    300388        /**
    301389         * Register tasks.
    302390         */
    303         grunt.registerTask( 'src',     ['checkDependencies', 'jsvalidate:src', 'jshint', 'stylelint', 'sass', 'rtlcss'] );
     391        grunt.registerTask( 'src',     ['checkDependencies', 'jsvalidate:src', 'jshint:core', 'stylelint', 'sass', 'rtlcss'] );
    304392        grunt.registerTask( 'commit',  ['src', 'checktextdomain', 'imagemin'] );
    305         grunt.registerTask( 'build',   ['commit', 'clean:all', 'copy:files', 'uglify', 'jsvalidate:build', 'cssmin', 'makepot', 'exec:bpdefault'] );
     393        grunt.registerTask( 'build',   ['commit', 'clean:all', 'copy:files', 'uglify:core', 'jsvalidate:build', 'cssmin', 'makepot', 'exec:bpdefault'] );
    306394        grunt.registerTask( 'release', ['build', 'exec:bbpress'] );
    307395
    308396        // Testing tasks.
     
    328416
    329417        // Default task.
    330418        grunt.registerTask( 'default', ['src'] );
     419
     420
     421        // Add a listener to the watch task.
     422        grunt.event.on( 'watch', function( action, filepath, target ) {
     423                if ( target !== 'all' && target !== 'rtl' ) {
     424                        return;
     425                }
     426
     427                var relativePath = path.relative( SOURCE_DIR, filepath ),
     428                cleanSrc = ( action === 'deleted' ) ? [relativePath ] : [],
     429                copySrc  = ( action === 'deleted' ) ? [] : [relativePath];
     430
     431                grunt.config( ['clean', 'dynamic', 'src'], cleanSrc );
     432                grunt.config( ['copy', 'dynamic', 'src'], copySrc );
     433                grunt.config( ['jshint', 'dynamic', 'src'], copySrc );
     434                grunt.config( ['jsvalidate', 'dynamic', 'src'], copySrc );
     435                grunt.config( ['rtlcss', 'dynamic', 'src'], copySrc );
     436        });
    331437};