Preparando un plugin de WordPress para publicar, ahora con Gulp

2020-10-17 - Categorías: JavaScript / WordPress
Gulp

Dejo aquí otro pequeño codekata o howto sobre Gulp, en JavaScript, para preparar los directorios de publicación de un plugin para WordPress. La semana pasada publiqué lo mismo en Shell Script, pero como en JavaScript se puede hacer de todo, lo he transcrito para usar con Gulp. Así podemos automatizar el flujo de trabajo dentro de los otros flujos de trabajo Gulp. Así nos independizamos del sistema operativo y nos beneficiamos de los extras que nos trae Gulp con sus plugins, para hojas de estilo CSS, JavaScripts, tratamiento de imágenes, etcétera.

Simplemente genera una estructura de directorios bajo el directorio extra/ dentro del proyecto siguiendo el patrón de estructura propuesto para WordPress, a partir de un plugin en desarrollo bajo el directorio /wp-content/plugins/your-plugin-slug/. Es necesario tener instalado Nodejs, Gulp 4 por lo menos, y las dependencias necesarias. Al lanzarlo, si falta algo en tu sistema te lo dirá. En teoría es multiplataforma.

Al grano, el código fuente

'use strict'

const gulp = require('gulp')
const fs = require('fs-extra')

function prepareNewRelease() {
    prepareWpPluginVersion('your-plugin-slug', '0.3')
}

function prepareWpPluginVersion(pluginSlug, currentVersion) {
    let pluginSvnUrl = 'https://plugins.svn.wordpress.org/' + pluginSlug + '/'
    let dirTrunk = './extra/' + pluginSlug + '/trunk/'

    console.log('Preparing files to plugin for version ' + currentVersion + ' of: ' + pluginSlug)

    fs.ensureDirSync('extra/')

    // PREPARING DIRECTORIES STRUCTURE
    if (!fs.existsSync('extra/' + pluginSlug)) {
        // If there is no repository, initialize it..
        exec('cd extra; svn checkout ' + pluginSvnUrl + '; cd ..', function (err, stdout, stderr) {
            console.log(stdout);
            console.log(stderr);
        })
        console.log('SVN checkout and initial directories created!')
    }

    // CLEANING AND PREPARING TRUNK
    fs.emptyDirSync('extra/' + pluginSlug + '/trunk/')
    fs.copySync('wp-content/plugins/' + pluginSlug + '/', 'extra/' + pluginSlug + '/trunk/')
    console.log('Cleaning and preparing files..')

    // PREPARING ASSETS
    fs.emptyDirSync('extra/' + pluginSlug + '/assets/')
    fs.copySync('wp-content/plugins/' + pluginSlug + '/assets/',  'extra/' + pluginSlug + '/assets/')
    console.log('Preparing assets for $current_version..')

    // FINALLY THE TRUNK FILES ARE FOR THE CURRENT VERSION
    fs.ensureDirSync('extra/' + pluginSlug + '/tags/' + currentVersion + '/')
    fs.emptyDirSync('extra/' + pluginSlug + '/tags/' + currentVersion + '/')
    console.log('All done!')

    return gulp.src('extra/' + pluginSlug + '/trunk/**/*')
        .pipe(gulp.dest('extra/' + pluginSlug + '/tags/' + currentVersion + '/'))
}

exports.prepareNewRelease = prepareNewRelease

Este pequeño programa se podría lanzar desde línea de comandos haciendo:

gulp prepareNewRelease

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

© 2020 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.