node package manager
Easy sharing. Manage teams and permissions with one click. Create a free org »

br-wordpress-gulp-dist

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 inconfig.themeFile. Should be thestyle.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