Gulp Deployment Helper for WordPress Themes & Plugins
This package provides gulp tasks that will make it easier to setup a gulp release pipeline.
Installation
yarn add br-wordpress-gulp-dist
Config
var defaults = {
manifest: null, // recommended: path.resolve('./package.json')
token: null, // recommended: githubConfig().token
themeFile: null,
pluginFile: null,
branch: {
master: 'master',
dist: 'dist'
},
remote: 'origin',
archive: {
dir: './dist',
name: null, // set here or define a Text Domain in plugin/theme file
ext: 'zip'
}
};
Reference
bumpVersion
- Increases version in manifest file package.json
.
commitAllChanges
- Creates a git commit with all working directory changes. Should be used after bumping/updating the version in files.
push
- Does a git push
.
updateWordPressThemeFile - Updates Version in
config.themeFile. Should be the
style.css`.
updateWordPressPluginFile
- Updates Version in config.pluginFile
It updates the file docblock version and, if present, any constant in the form of define('MY_PLUGIN_VERSION', '1.2.3')
.
makeReleaseAsset
- Creates the release zip ./dist/archive.zip
, excluding all files in .distignore
.
deployReleaseAsset
- Creates GitHub release, including the asset generated in makeReleaseAsset
. Requires GitHub Token in config.token
and absolute path to package.json
in config.manifest
.
Usage
For Plugins
// minimal example for plugin release
var gulp = require('gulp');
var runSequence = require('run-sequence');
var githubConfig = require('github-config');
var dist = require('br-wordpress-gulp-dist');
var path = require('path');
var config = {
pluginFile: path.resolve('./plugin.php'), // absolute path to plugin file
manifest: path.resolve('./package.json'), // absolute path to package.json
token: githubConfig().token // GitHub auth token
};
var release = dist(config);
gulp.task('release', function() {
runSequence(
'bump-version',
'update-plugin-file-version',
'commit-changes',
'push',
'make-asset',
'github-release-with-asset'
);
});
gulp.task('bump-version', release.bumpVersion);
gulp.task('update-plugin-file-version', release.updateWordPressPluginFile);
gulp.task('make-asset', release.makeReleaseAsset);
gulp.task('github-release-with-asset', release.deployReleaseAsset);
gulp.task('commit-changes', release.commitAllChanges);
gulp.task('push', release.push);
For Themes
var gulp = require('gulp');
var runSequence = require('run-sequence');
var githubConfig = require('github-config');
var dist = require('br-wordpress-gulp-dist');
var path = require('path');
var config = {
themeFile: path.resolve('./style.css'), // absolute path to theme css file
manifest: path.resolve('./package.json'), // absolute path to package.json
token: githubConfig().token // GitHub auth token
};
var release = dist(config);
gulp.task('release', function() {
runSequence(
'bump-version',
'update-theme-file-version',
'commit-changes',
'push',
// add css/js processing here if necessary
'make-asset',
'github-release-with-asset'
);
});
gulp.task('bump-version', release.bumpVersion);
gulp.task('update-theme-file-version', release.updateWordPressThemeFile);
gulp.task('make-asset', release.makeReleaseAsset);
gulp.task('github-release-with-asset', release.deployReleaseAsset);
gulp.task('commit-changes', release.commitAllChanges);
gulp.task('push', release.push);
Recommendations
# .gitignore
node_modules
dist
*.zip
.DS_Store
# .distignore
node_modules
dist
*.zip
.DS_Store
yarn.lock
package.json
.gitignore
.distignore
.git
.gitmodules