🚀 Auto Deploy a Neocities

Edita en local, actualiza con un comando.

¿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?

  1. Lee las credenciales y carpeta de local: .env.
  2. Escanea todos los archivos de tu proyecto: DIR
  3. Consulta la version de Neocities.
  4. 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!