Inspirado en Middleman, esta cadena de herramientas Node.js está escrita con ladrillos y una colección de complementos para permitir la autorización rápida de aplicaciones web estáticas.
El enfoque aquí es desarrollar e implementar rápidamente aplicaciones que sean más pesadas en CSS o JavaScript, aprovechando las herramientas que permiten la menor cantidad de tipificación para hacer el trabajo (por ejemplo, menos, Stylus, Coffeescript, Jade). Finalmente, para optimizar la administración de archivos para que sus aplicaciones se carguen lo más rápido posible (presumiblemente a través de algún CDN).
Primero debe instalar el servidor Systatic. Realmente es solo un servidor BricksJS+Servitude con un montón de rutas y plantillas predefinidas.
npm install systatic -g
systatic new my_proj
cd my_proj
systatic
El último comando ejecuta el servidor, de forma predeterminada, el puerto 3000 (como los ladrillos, puede cambiar el puerto con --port ).
El proyecto generado predeterminado vendrá con un archivo config.json. Este archivo define varias combinaciones de origen y complementos. En general, debe seguir la configuración predeterminada, pero si desea alterar cualquier cosa (por ejemplo, cambiar la ruta JavaScripts desde /javascripts a /js ) cambie este archivo.
Dado que el punto es generar un sitio estático, se build el siguiente comando que ejecute. Esto eliminará la necesidad de un servidor de aplicaciones como NodeJS, y le permitirá descargar los archivos estáticos en algún lugar como CloudFront.
Ordenan la construcción del sitio estático en fases, similares a los sistemas de construcción más grandes como Maven.
Etapas (ejecutar un escenario ejecuta cada etapa hasta él):
Elegir una fase ejecutará todos los complementos adjuntos hasta esa fase.
systatic merge
Limpia el directorio de salida, crea el recurso HTML, crea los activos y fusione en archivos mínimos.
systatic test
Hace lo mismo, pero luego también ejecuta cualquier prueba de integración estática opcional (actualmente no hay implementaciones, pero considerando algo como Qunit)
Con ese contenido estático generado, a continuación, querrá implementar en algún servidor, Repo Git, CDN ... lo que sea.
systatic publish
Estoy considerando reimplementar los complementos codificados para funcionar con complementos NPM, que se configuran por proyecto. Esto es para permitir que los complementos de terceros agregen su propia etapa a la cadena de herramientas Build/Render.
Pensamientos actuales:
Un ejemplo puede ser si alguien quisiera agregar una función para comprimir un conjunto de iconos utilizados como CSS a Sprites, y pasar esa información a la siguiente acción (que estaría vinculada a la etapa de compresa).