mirror of
https://gh.wpcy.net/https://github.com/buddypress/buddypress.git
synced 2026-05-31 05:04:29 +08:00
"Legacy Forums" is what we now call the bundled version of bbPress 1 that has shipped with BuddyPress for over nine years. The Legacy Forums codebase/features are many years stagnant, and it has been almost completely hidden from the UI for the past five years. Legacy Forums were replaced by bbPress 2, which is its own plugin, and we've been promoting its integration with BuddyPress for a long time. Most significantly, bbPress 1 only runs on WordPress versions older than 4.7, because of a BackPress conflict (which is nested inside bbPress 1) with WordPress 4.7's `WP_Taxonomy` class. If your site is still using Legacy Forums, you will need to migrate to bbPress 2 to run BuddyPress 3.0. See https://bpdevel.wordpress.com/2017/12/07/legacy-forums-support-will-be/ for more information. Fixes #5351 See #7502 git-svn-id: https://buddypress.svn.wordpress.org/trunk@11763 cdf35c40-ae34-48e0-9cc9-0c9da1808c22
325 lines
7.1 KiB
JavaScript
325 lines
7.1 KiB
JavaScript
/* jshint node:true */
|
|
/* global module */
|
|
module.exports = function( grunt ) {
|
|
var SOURCE_DIR = 'src/',
|
|
BUILD_DIR = 'build/',
|
|
|
|
BP_CSS = [
|
|
'**/*.css'
|
|
],
|
|
|
|
// CSS exclusions, for excluding files from certain tasks, e.g. rtlcss
|
|
BP_EXCLUDED_CSS = [
|
|
'!**/*-rtl.css'
|
|
],
|
|
|
|
BP_JS = [
|
|
'**/*.js'
|
|
],
|
|
|
|
BP_EXCLUDED_MISC = [
|
|
],
|
|
|
|
// SASS generated "Twenty*"" CSS files
|
|
BP_SCSS_CSS_FILES = [
|
|
'!bp-templates/bp-legacy/css/twenty*.css',
|
|
'!bp-templates/bp-nouveau/css/buddypress.css'
|
|
],
|
|
|
|
stylelintConfigCss = require('stylelint-config-wordpress/index.js'),
|
|
stylelintConfigScss = require('stylelint-config-wordpress/scss.js');
|
|
|
|
require( 'matchdep' ).filterDev( ['grunt-*', '!grunt-legacy-util'] ).forEach( grunt.loadNpmTasks );
|
|
grunt.util = require( 'grunt-legacy-util' );
|
|
|
|
grunt.initConfig( {
|
|
pkg: grunt.file.readJSON( 'package.json' ),
|
|
checkDependencies: {
|
|
options: {
|
|
packageManager: 'npm'
|
|
},
|
|
src: {}
|
|
},
|
|
jshint: {
|
|
options: grunt.file.readJSON( '.jshintrc' ),
|
|
grunt: {
|
|
src: ['Gruntfile.js']
|
|
},
|
|
core: {
|
|
expand: true,
|
|
cwd: SOURCE_DIR,
|
|
src: BP_JS,
|
|
|
|
/**
|
|
* Limit JSHint's run to a single specified file:
|
|
*
|
|
* grunt jshint:core --file=filename.js
|
|
*
|
|
* Optionally, include the file path:
|
|
*
|
|
* grunt jshint:core --file=path/to/filename.js
|
|
*
|
|
* @param {String} filepath
|
|
* @returns {Bool}
|
|
*/
|
|
filter: function( filepath ) {
|
|
var index, file = grunt.option( 'file' );
|
|
|
|
// Don't filter when no target file is specified
|
|
if ( ! file ) {
|
|
return true;
|
|
}
|
|
|
|
// Normalise filepath for Windows
|
|
filepath = filepath.replace( /\\/g, '/' );
|
|
index = filepath.lastIndexOf( '/' + file );
|
|
|
|
// Match only the filename passed from cli
|
|
if ( filepath === file || ( -1 !== index && index === filepath.length - ( file.length + 1 ) ) ) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
},
|
|
sass: {
|
|
options: {
|
|
outputStyle: 'expanded',
|
|
indentType: 'tab',
|
|
indentWidth: '1'
|
|
},
|
|
styles: {
|
|
cwd: SOURCE_DIR,
|
|
extDot: 'last',
|
|
expand: true,
|
|
ext: '.css',
|
|
flatten: true,
|
|
src: ['bp-templates/bp-legacy/css/*.scss'],
|
|
dest: SOURCE_DIR + 'bp-templates/bp-legacy/css/'
|
|
},
|
|
nouveau: {
|
|
cwd: SOURCE_DIR,
|
|
extDot: 'last',
|
|
expand: true,
|
|
ext: '.css',
|
|
flatten: true,
|
|
src: ['bp-templates/bp-nouveau/sass/buddypress.scss'],
|
|
dest: SOURCE_DIR + 'bp-templates/bp-nouveau/css/'
|
|
}
|
|
},
|
|
rtlcss: {
|
|
options: {
|
|
opts: {
|
|
processUrls: false,
|
|
autoRename: false,
|
|
clean: true
|
|
},
|
|
saveUnmodified: false
|
|
},
|
|
core: {
|
|
expand: true,
|
|
cwd: SOURCE_DIR,
|
|
dest: SOURCE_DIR,
|
|
extDot: 'last',
|
|
ext: '-rtl.css',
|
|
src: BP_CSS.concat( BP_EXCLUDED_CSS, BP_EXCLUDED_MISC )
|
|
}
|
|
},
|
|
checktextdomain: {
|
|
options: {
|
|
correct_domain: false,
|
|
text_domain: 'buddypress',
|
|
keywords: [
|
|
'__:1,2d',
|
|
'_e:1,2d',
|
|
'_x:1,2c,3d',
|
|
'_n:1,2,4d',
|
|
'_ex:1,2c,3d',
|
|
'_nx:1,2,4c,5d',
|
|
'esc_attr__:1,2d',
|
|
'esc_attr_e:1,2d',
|
|
'esc_attr_x:1,2c,3d',
|
|
'esc_html__:1,2d',
|
|
'esc_html_e:1,2d',
|
|
'esc_html_x:1,2c,3d',
|
|
'_n_noop:1,2,3d',
|
|
'_nx_noop:1,2,3c,4d'
|
|
]
|
|
},
|
|
files: {
|
|
cwd: SOURCE_DIR,
|
|
src: ['**/*.php'].concat( BP_EXCLUDED_MISC ),
|
|
expand: true
|
|
}
|
|
},
|
|
makepot: {
|
|
target: {
|
|
options: {
|
|
cwd: BUILD_DIR,
|
|
domainPath: '.',
|
|
mainFile: 'bp-loader.php',
|
|
potFilename: 'buddypress.pot',
|
|
processPot: function( pot ) {
|
|
pot.headers['report-msgid-bugs-to'] = 'https://buddypress.trac.wordpress.org';
|
|
pot.headers['last-translator'] = 'JOHN JAMES JACOBY <jjj@buddypress.org>';
|
|
pot.headers['language-team'] = 'ENGLISH <jjj@buddypress.org>';
|
|
return pot;
|
|
},
|
|
type: 'wp-plugin'
|
|
}
|
|
}
|
|
},
|
|
imagemin: {
|
|
core: {
|
|
expand: true,
|
|
cwd: SOURCE_DIR,
|
|
src: ['**/*.{gif,jpg,jpeg,png}'].concat( BP_EXCLUDED_MISC ),
|
|
dest: SOURCE_DIR
|
|
}
|
|
},
|
|
clean: {
|
|
all: [ BUILD_DIR ]
|
|
},
|
|
copy: {
|
|
files: {
|
|
files: [
|
|
{
|
|
cwd: SOURCE_DIR,
|
|
dest: BUILD_DIR,
|
|
dot: true,
|
|
expand: true,
|
|
src: ['**', '!**/.{svn,git}/**'].concat( BP_EXCLUDED_MISC )
|
|
},
|
|
{
|
|
dest: BUILD_DIR,
|
|
dot: true,
|
|
expand: true,
|
|
src: ['composer.json']
|
|
}
|
|
]
|
|
}
|
|
},
|
|
uglify: {
|
|
core: {
|
|
cwd: BUILD_DIR,
|
|
dest: BUILD_DIR,
|
|
extDot: 'last',
|
|
expand: true,
|
|
ext: '.min.js',
|
|
src: BP_JS
|
|
}
|
|
},
|
|
stylelint: {
|
|
css: {
|
|
options: {
|
|
config: stylelintConfigCss,
|
|
format: 'css'
|
|
},
|
|
expand: true,
|
|
cwd: SOURCE_DIR,
|
|
src: BP_CSS.concat( BP_EXCLUDED_CSS, BP_EXCLUDED_MISC, BP_SCSS_CSS_FILES )
|
|
},
|
|
scss: {
|
|
options: {
|
|
config: stylelintConfigScss,
|
|
format: 'scss'
|
|
},
|
|
expand: true,
|
|
cwd: SOURCE_DIR,
|
|
src: [ 'bp-templates/bp-legacy/css/*.scss' ]
|
|
}
|
|
},
|
|
cssmin: {
|
|
minify: {
|
|
cwd: BUILD_DIR,
|
|
dest: BUILD_DIR,
|
|
extDot: 'last',
|
|
expand: true,
|
|
ext: '.min.css',
|
|
src: BP_CSS
|
|
}
|
|
},
|
|
phpunit: {
|
|
'default': {
|
|
cmd: 'phpunit',
|
|
args: ['-c', 'phpunit.xml.dist']
|
|
},
|
|
'multisite': {
|
|
cmd: 'phpunit',
|
|
args: ['-c', 'tests/phpunit/multisite.xml']
|
|
},
|
|
'codecoverage': {
|
|
cmd: 'phpunit',
|
|
args: ['-c', 'tests/phpunit/codecoverage.xml' ]
|
|
}
|
|
},
|
|
exec: {
|
|
bpdefault: {
|
|
command: 'svn export --force https://github.com/buddypress/BP-Default.git/trunk bp-themes/bp-default',
|
|
cwd: BUILD_DIR,
|
|
stdout: false
|
|
}
|
|
},
|
|
jsvalidate:{
|
|
options:{
|
|
globals: {},
|
|
esprimaOptions:{},
|
|
verbose: false
|
|
},
|
|
build: {
|
|
files: {
|
|
src: [BUILD_DIR + '/**/*.js']
|
|
}
|
|
},
|
|
src: {
|
|
files: {
|
|
src: [SOURCE_DIR + '/**/*.js'].concat( BP_EXCLUDED_MISC )
|
|
}
|
|
}
|
|
},
|
|
patch: {
|
|
options: {
|
|
tracUrl: 'buddypress.trac.wordpress.org'
|
|
}
|
|
},
|
|
upload_patch: {
|
|
options: {
|
|
tracUrl: 'buddypress.trac.wordpress.org'
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
/**
|
|
* Register tasks.
|
|
*/
|
|
grunt.registerTask( 'src', ['checkDependencies', 'jsvalidate:src', 'jshint', 'stylelint', 'sass', 'rtlcss'] );
|
|
grunt.registerTask( 'commit', ['src', 'checktextdomain', 'imagemin'] );
|
|
grunt.registerTask( 'build', ['commit', 'clean:all', 'copy:files', 'uglify', 'jsvalidate:build', 'cssmin', 'makepot', 'exec:bpdefault'] );
|
|
grunt.registerTask( 'release', ['build'] );
|
|
|
|
// Testing tasks.
|
|
grunt.registerMultiTask( 'phpunit', 'Runs PHPUnit tests, including the ajax and multisite tests.', function() {
|
|
grunt.util.spawn( {
|
|
args: this.data.args,
|
|
cmd: this.data.cmd,
|
|
opts: { stdio: 'inherit' }
|
|
}, this.async() );
|
|
});
|
|
|
|
grunt.registerTask( 'test', 'Run all unit test tasks.', ['phpunit:default', 'phpunit:multisite'] );
|
|
|
|
grunt.registerTask( 'jstest', 'Runs all JavaScript tasks.', [ 'jsvalidate:src', 'jshint' ] );
|
|
|
|
// Travis CI Tasks.
|
|
grunt.registerTask( 'travis:grunt', 'Runs Grunt build task.', [ 'build' ]);
|
|
grunt.registerTask( 'travis:phpunit', ['jsvalidate:src', 'jshint', 'checktextdomain', 'test'] );
|
|
grunt.registerTask( 'travis:codecoverage', 'Runs PHPUnit tasks with code-coverage generation.', ['phpunit:codecoverage'] );
|
|
|
|
// Patch task.
|
|
grunt.renameTask( 'patch_wordpress', 'patch' );
|
|
|
|
// Default task.
|
|
grunt.registerTask( 'default', ['src'] );
|
|
};
|