¿Por qué automatizar el despliegue?
Aunque Neocities cuente con un editor online y gestor de archivos, es limitado y editar en local es mucho más cómodo.
Pero subir archivos arrastrando carpetas... ¡no no no!
Por eso arme un script en Node.js que sube mi sitio a Neocities con un solo comando.
¿Cómo funciona?
- Lee las credenciales y carpeta de local: .env.
- Escanea todos los archivos de tu proyecto: DIR
- Consulta la version de Neocities.
- Sube uno por uno los archivos nuevos o modificados. ✨Automágico!✨
AsÃ, con un comando, tu web se actualiza sola.
- en local: querido neocitio hoy hice esta cosa maravillosa,
- subir foto, probar,
- uy faltó esto,
- ah otra foto,
- publicar!
$ node ./deploy.js
El script
// deploy.js
const neocities = require('neocities');
const path = require('path');
const fs = require('fs');
require('dotenv').config();
const { USERNAME, PASSWORD, SOURCE_DIR } = process.env;
if (!USERNAME || !PASSWORD) {
console.error('¡Configura USERNAME y PASSWORD en tu .env!');
process.exit(1);
}
const api = new neocities(USERNAME, PASSWORD);
function getFiles(dir) {
let files = [];
for (const item of fs.readdirSync(dir)) {
const full = path.join(dir, item);
if (fs.statSync(full).isDirectory()) {
files = files.concat(getFiles(full));
} else {
files.push({
name: path.relative(SOURCE_DIR, full).replace(/\\/g, '/'),
path: full
});
}
}
return files;
}
async function deploy() {
console.log('Desplegando a Neocities...');
try {
const files = getFiles(SOURCE_DIR);
if (!files.length) return console.warn('No hay archivos para subir.');
api.upload(files, resp => {
if (resp.result === 'success') {
console.log('¡Listo! Sitio actualizado 🚀');
} else {
console.error('Error:', resp.message);
}
});
} catch (e) {
console.error('Ups:', e.message);
}
}
deploy();
Formato del archivo .env
USERNAME=tu_usuario_neocities
PASSWORD=tu_contraseña_neocities
SOURCE_DIR=./carpeta_del_sitio
Guardá este archivo .env
en la raÃz de tu proyecto. Asà el script sabrá tus credenciales y la carpeta a desplegar.
¿Ves? ¡Asà de fácil! Editá, guardá y desplegá tu web en segundos. Si te sirvió, compartilo o mejoralo. ¡A crear!