studio - ¿Cómo limpiar las antiguas versiones implementadas en el alojamiento Firebase?
eliminar registro firebase (6)
Antes de continuar leyendo:
Puede votar aquí (evite +1 spam, utilice reacciones) https://github.com/firebase/firebase-tools/issues/215#issuecomment-314211730 por una de las alternativas propuestas por el equipo
Por lo tanto, al usar las herramientas Chrome Dev, encontré una forma de eliminar varias versiones. Tenga en cuenta que requiere un poco de trabajo (proceda con cuidado, ya que las versiones eliminadas no se pueden restaurar y no recibirá ninguna advertencia, como al usar la interfaz de usuario).
Paso 1. Recuperando la lista de versiones.
- Abra Chrome Dev Tools (si no sabe cómo hacerlo, es probable que deba esperar una solución adecuada del equipo de Firebase).
- Abra la consola de Firebase y vaya a la pestaña "Alojamiento".
- Vaya a la pestaña "Red" en CDT y use el filtro Websockets.
- Seleccione la solicitud llamada
.ws?v=5&ns=firebase
- Abra la pestaña "Marcos"
- Ahora viene la parte tediosa: seleccione los cuadros con el valor más alto de "longitud". (Dependiendo de sus datos, podrían ser cuadros 2-n. En mi caso, 3 cuadros con una longitud de 14k-16k)
- Pegue cada uno de los datos del marco en orden (que formará un objeto JSON válido).
- Extraer los datos: hay varias formas de hacerlo. Opté por JS simple en la consola de CDT.
var jsonString = ''...'';
var json = JSON.parse(jsonString);
var ids = Object.keys(json.d.b.d);
Paso 2. Realizando las solicitudes.
Casi allí: P
Ahora que tiene los ID, realice las siguientes solicitudes:
ELIMINAR https://firebasehosting.clients6.google.com/v1beta1/sites/PROJECT_NAME/versions/-VERSION_ID?key=KEY
Utilicé Sublime (para crear las cadenas de solicitud) + Paw.
La "CLAVE" se puede copiar de cualquiera de las solicitudes de CDT. No coincide con la clave de la API web de Firebase
=> Antes de realizar las solicitudes: tome nota de la versión que no desea eliminar de la tabla proporcionada por Firebase. (Cada versión que aparece en el sitio web tiene los últimos 6 dígitos de su ID en su correo electrónico)
(No se proporcionaron capturas de pantalla, ya que todas requieren un desenfoque y un poco de trabajo)
Cada vez que se implementa en Firebase, se crea una nueva versión de despliegue para que pueda retroceder y ver quién implementó. Esto significa que cada vez que cada archivo que implementa se almacena y ocupa más espacio.
Aparte de eliminar manualmente cada versión implementada una por una, ¿hay alguna forma automatizada de limpiar esos archivos inútiles?
Estás en lo correcto. Deberá eliminar las antiguas versiones implementadas una por una utilizando la consola de Firebase Hosting.
No hay otra manera de hacer esto, por lo que le sugiero que presente una solicitud de función para habilitar la eliminación de múltiples versiones implementadas en la consola de Firebase Hosting.
Actualizar:
Puede votar aquí (evite +1 spam, utilice reacciones) https://github.com/firebase/firebase-tools/issues/215#issuecomment-314211730 por una de las alternativas propuestas por el equipo (eliminar por lotes, mantener X versiones, mantener versiones con fecha publicada <Y)
Este script aún no es muy sólido, así que úselo bajo su propio riesgo. Intentaré actualizarlo más tarde, pero funcionó para mí por ahora. Solo un poco de javascript para hacer clic en los botones para eliminar los elementos implementados uno por uno.
var deleteDeployment = function(it) {
it.click()
setTimeout(function() {
$(''.md-dialog-container .delete-dialog button.md-raised:contains("Delete")'').click()
}, 300)
}
$(''.h5g-hist-status-deployed'').map((i, a) => $(a).parent()).map((i, a) => $(a).find(''md-menu button:contains(Delete)'')).each((i, it) => {
setTimeout(function() {
deleteDeployment(it)
}, (i + 1) * 2000)
})
Esto puede ser un poco frágil debido a la dependencia de los selectores de la estructura DOM actual y las clases en el Panel de Hosting, ¡pero funciona para mí!
NOTA: Este script (si se ejecuta desde la consola) o bookmarklet hará clic y confirmará eliminar en todas las filas de la vista actual. Estoy bastante seguro de que incluso si hace clic en eliminar en la implementación actual, no lo eliminará.
Función para ejecutar en consola:
let deleteAllHistory = () => {
let deleteBtns = document.querySelectorAll(''.table-row-actions button.md-icon-button'');
const deleteBtn = (pointer) => {
deleteBtns[pointer].click();
setTimeout(() => {
document.querySelector(''.md-open-menu-container.md-clickable md-menu-item:last-child button'').click();
setTimeout(() => {
document.querySelector(''.fb-dialog-actions .md-raised'').click();
if(pointer < deleteBtns.length - 1) {
deleteBtn(pointer + 1);
}
}, 500);
}, 500);
};
deleteBtn(0);
};
Bookmarklet:
javascript:(function()%7Bvar%20deleteBtns%3Ddocument.querySelectorAll(''.table-row-actions%20button.md-icon-button'')%2CdeleteBtn%3Dfunction(a)%7BdeleteBtns%5Ba%5D.click()%2CsetTimeout(function()%7Bdocument.querySelector(''.md-open-menu-container.md-clickable%20md-menu-item%3Alast-child%20button'').click()%2CsetTimeout(function()%7Bdocument.querySelector(''.fb-dialog-actions%20.md-raised'').click()%2Ca%3CdeleteBtns.length-1%26%26deleteBtn(a%2B1)%7D%2C500)%7D%2C500)%7D%3BdeleteBtn(0)%7D)()
La opción de Nathan es excelente, pero tengo un método rápido y sucio usando AutoHotkey. Toma alrededor de un segundo por versión para eliminar, por lo que puede eliminar una página en 10 segundos.
#a::
Click
MouseGetPos, xpos, ypos
MouseMove, xpos, ypos + 30
Sleep 300
Click
Sleep 400
Click 1456, 816
MouseMove, xpos, ypos + 82
return
#s::
Click
MouseGetPos, xpos, ypos
MouseMove, xpos, ypos - 820
return
Es probable que deba modificar los valores de píxeles exactos para su pantalla, pero esto funciona perfectamente en mi 1920x1080.
Win + a se elimina y pasa a la siguiente entrada, Win + s se mueve a la página siguiente. Coloque su mouse en el primer menú de 3 puntos y ¡adelante!
No sé si puede ayudarlo o no, pero puedo eliminar las implementaciones antiguas del menú "hosting" como esta: Eliminar o revertir la implementación anterior