Proceso de publicación de documentos

Figura
Figura. Detalle de la herramienta Publicador

Esta herramienta tiene por objeto filtrar y modificar en su caso los documentos en desarrollo para que luego puedan ser publicados en el sitio web. Proviene de otra que ya venía usando en PHP en el marco de herramientas sólo para uso "localhost" y que ahora estoy migrando a JavaScript. Como se observa en la Figura, partimos de una lista de rutas a publicar que podemos extraer automáticamante filtrándolas según unas opciones de configuración que veremos más abajo.

Se repite el proceso para cada una de las rutas pudiéndose detener en cualquier momento. Al finalizar obtendremos unos resultados que nos permitirán descargar aquellos documentos que fueron modificados y ver una lista de archivos que tendríamos que copiar desde la carpeta de desarrollo a la de publicación.

Antes de seguir conviene aclarar que el marco de herramientas Web Tools Online nunca puede sobrescribir archivos de su ordenador. Por lo que la única forma de guardar un documento es realizar una falsa descarga y a partir de ahí manualmente sobrescribir el documento del ordenador copiando el archivo desde la carpeta de descargas. Más abajo comentaremos algunos detalles sobre esto.

Para una correcta aplicación podríamos tener todo el desarrollo en una carpeta denominada por ejemplo /devweb. Estos nombres de carpetas son los que yo tengo en el sitio en desarrollo, pero podrían ser otros nombres. Ahí tendríamos una carpeta de desarrollo /devweb/wx que contiene los documentos públicos (carpeta HOME). Y otra privada /devweb/prvt para los script PHP y otros recursos a los que no se puede acceder directamente con una URL. Finalmente habrá otra carpeta /devweb/pub (carpeta PUB) que contendrá los documentos que finalmente subiremos a nuestro sitio web. Esa carpeta replicará la estructura anterior, es decir, tendrá a su vez también una pública /devweb/pub/wx y otra privada /devweb/pub/prvt.

Figura
Figura. Sistema de archivos locales

La herramienta sólo funciona en modo local. Para ello hemos de iniciar el marco de herramientas antes de abrir ninguna pieza cargando el Sistema de Archivos Locales como se observa en la Figura. Es necesario disponer de un archivo de configuración con el nombre wt.txt que puede estar ubicado en cualquier carpeta dentro de /devweb. Cuando se esté cargando el sistema de archivos detectará ese documento wt.txt y el marco entrará en modo local.

Figura
Figura. Carpetas HOME y PUB

También hemos de configurar las carpetas HOME (/devweb/wx) y PUB (/devweb/pub), tal como se observa en la Figura, configuración que también se encuentra en el marco principal, junto a lo del Sistema de Archivos Locales.

Filtrando rutas a publicar

En una imagen del apartado anterior verá que el Sistema de Archivos Locales contiene 11062 archivos. Sin embargo hemos filtrado sólo 2913 documentos que serán objeto del proceso de publicación, como puede observar en la primera imagen de este tema. Para ello usamos los campos de la pestaña de configuración siguientes:

  • Nombres carpetas excluidas de publicación: Una lista separada por comas de nombres de carpetas (solo el nombre) cuyos contenidos se excluyen de la publicación. Por ejemplo, yo uso nombres de carpetas "no-publicable". Todo lo que haya en carpetas con ese nombre y en cualquier nivel no será publicado.
  • Rutas carpetas excluidas publicación: En este caso son rutas completas de carpetas cuyos contenidos serán excluidos.
  • Rutas archivos excluidos publicación: Si en algún caso hay algunos archivos sueltos a excluir, los incluiremos aquí.

Con el botón "Extraer" (ver primera imagen) aplicaremos las opciones anteriores a los 11062 documentos para filtrar las 2913 rutas que aparecerán en el campo de rutas a publicar.

Filtrando y descargando resultados

El proceso de publicación procesa todos los documentos de la carpeta de desarrollo (pre-filtrados como comentamos en el apartado anterior) para incluirlos en la carpeta de publicación. Si la opción de configuración comprobar condición de fecha está activada y la fecha del documento en desarrollo es posterior al que existe en la carpeta de publicación, significa que el documento fue creado o modificado después de la última publicación con lo que lo publicaremos. En otro caso ese documento se omite de la publicación. Si la condición de fecha no estuviera activada, todos los documentos pre-filtrados serán publicados nuevamente.

Figura
Figura. Filtro de resultados

Veámos esto con un ejemplo. En primer lugar hay un filtro de resultados como se muestra en la Figura. En el filtro todos se encuentran todos los documentos procesados, que podemos filtrar con los siguientes filtros. Los resultados que suponen una modificación en los documentos son los relativos a componentes, minimizados y resaltados. Estos son recursos como los HTML, JS y CSS, documentos que son objeto de algunas modificaciones como la minimización antes de ser publicados. En cuanto a componentes y resaltados no entraré en más detalles, pudiendo encontrar información en las ayudas de la propia herramienta.

Los documentos en el grupo a copiar son aquellos que son nuevos o se han modificado y hay que copiarlos desde la carpeta de desarrollo a la de publicación. Son documentos como imágenes y otros a los que no se les aplica procesos de modificación como el minimizado. En el grupo con error encontraremos aquellos en los que se detectó un error al aplicar procesos como el minimizado. Por último en omitidos están los que se omitieron por el filtrado de condición de fecha que comentamos en un párrafo anterior.

Figura
Figura. Menú contextual

En la Figura puede observar el menú contextual para ejecutar algunas acciones sobre las entradas de los resultados. La acción Descargar lista descargará un archivo de texto con la lista de rutas filtrada. La descarga del informe también es un archivo de texto que resume todos los resultados del proceso de publicación.

La acción Descargar minimizado nos permite descargar el documento seleccionado minimizado. Hay que tener en cuenta que los documentos se descargan en el navegador siguiendo las pautas establecidas. Si el navegador reconoce la extensión del archivo lo descargará e intentará abrirlo, como sucede con las extensiones ".txt". Los ".html" o ".css" serán descargados usualmente sin abrirlos. Para los ".js" puede resultar que el navegador no los descargue hasta que el usuario acepte expresamente la descarga. Deberá permitir las descargas y quizás desactivar el aviso del navegador para permitir múltiples descargas, lo que sucederá si usa la acción "Descargar todos".

En un caso general un documento con nombre /devweb/wx/index.html será descargado como _devweb_wx_index.html, donde las barras derecha "/" son sustituidas por el navegador por guiones bajos o intermedios. Esto se hace así pues Windows no permite la barra derecha como nombre de archivo. Pero para nuestro marco de herramientas podemos usar la configuración del marco principal separador de ruta, inicialmente establecido en el caracter "^", con lo que el archivo anterior será descargado como ^devweb^wx^index.html. Usando un separador adecuado que no encontremos en nuestras rutas, podremos luego reconocer y reconstruir las rutas de los archivos en la carpeta de descargas para llevarlos posteriormente a las ubicaciones definitivas.

Reconozco que dado que no hay una posibilidad (o al menos no la he encontrado) de guardar directamente los archivos en el ordenador, este apaño de las descargas no es la solución óptima. Para pocos archivos podría ser suficiente, pero para una gran cantidad puede resultar engorroso. En cualquier caso conviene vaciar la carpeta de descargas antes para evitar que el navegador agregue un número entre paréntesis si ya ese archivo existiera en la carpeta. Una vez descargados se podría usar alguna aplicación externa para renombrar y copiar archivos en su ubicación definitiva en la carpeta de publicación. O incluso podríamos construir un módulo en PHP para funcionar en localhost que ejecutara esa acción.

Filtrado subida

Figura
Figura. Selección fecha para filtrar subida

Como hemos visto, publicar un documento es hacer una copia del documento existente en la carpeta de desarrollo, modificarla en algún caso y reubicarla en la carpeta de publicación. Cuando decidamos subir los documentos de la carpeta de publicación al servidor en producción tendremos que filtrar aquellos que hayan cambiado desde una subida anterior.

Seleccionaremos una fecha (ver Figura) que podría ser la de la última subida al servidor en producción, de tal forma que el proceso buscará todos los archivos de la carpeta de publicación que fueran modificados después de esa fecha. Al finalizar obtenemos un informe como el siguiente:

----------------------------------------------------------
LISTA DE DOCUMENTOS MODIFICADOS DESPUÉS DE 31/10/17 20:43
Obtenido el 11/01/18 21:17
Lista con 119 documentos
----------------------------------------------------------
/pub/wx/index.html
/pub/wx/robots.txt
/pub/wx/sitemap.txt
/pub/wx/temas/javascript-es6/index.html
...
    

Ese informe nos servirá de guía para subir manualmente los archivos al servidor desde la carpeta PUB de publicación.