每次部署到Firebase托管时,都会创建一个新的部署版本,以便您可以回滚并查看部署的人员。这意味着每次部署的每个文件都会存储并占用更多空间。
除了逐个手动删除每个部署版本外,是否有任何自动清理这些无用文件的方法?
答案 0 :(得分:29)
你是对的。您需要使用Firebase托管控制台逐个删除旧部署的版本。
没有其他方法可以执行此操作,因此我建议您提交feature request以启用在Firebase托管控制台中删除多个已部署版本。
<强>更新强>
您可以在此处投票(请避免+1垃圾邮件,请使用反应)https://github.com/firebase/firebase-tools/issues/215#issuecomment-314211730以获取团队提出的替代方案之一(批量删除,仅保留X版本,保留已发布日期&lt; Y的版本)< / p>
答案 1 :(得分:13)
此脚本尚未超级固定,因此使用它需要您自担风险。我稍后会尝试更新它,但现在为我工作。 只需点击一些按钮即可逐个删除已部署的项目。
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)
})
答案 2 :(得分:6)
现在有一个合适的解决方案:&#34; 版本历史记录设置&#34;这允许保留最后的X版本。
https://support.google.com/firebase/answer/9242086?hl=en
UPDATE Feb / 2019
由Google员工@ github.com/firebase/firebase-tools/issues/...确认
正在积极开展工作。
继续阅读之前:
您可以在这里投票(请避免+1垃圾邮件,使用反应)https://github.com/firebase/firebase-tools/issues/215#issuecomment-314211730以获取团队提出的替代方案
因此,通过使用Chrome Dev工具,我找到了删除多个版本的方法。请记住,它需要一些工作(小心,因为已删除的版本无法恢复,并且您不会收到任何警告,例如使用用户界面时)。
.ws?v=5&ns=firebase
var jsonString = '...';
var json = JSON.parse(jsonString);
var ids = Object.keys(json.d.b.d);
几乎就在那里:P
现在您已拥有ID,请执行以下请求:
删除https://firebasehosting.clients6.google.com/v1beta1/sites/PROJECT_NAME/versions/-VERSION_ID?key=KEY
我使用Sublime(创建请求字符串)+ Paw。
&#34; KEY&#34;可以从任何CDT的请求中复制。它与Firebase的Web API密钥
不匹配=&GT;在执行请求之前:记下您不想从Firebase提供的表格中删除的版本。 (网站上列出的每个版本都包含您电子邮件中最后6位数的ID)
(屏幕截图没有提供,因为所有这些都需要模糊和一些工作)
答案 3 :(得分:2)
由于选择器依赖主机控制台上的当前DOM结构和类,这可能有点脆弱,但它对我有用!
注意:此脚本(如果从控制台执行)或bookmarklet将单击并确认删除当前视图中的所有行。我很确定即使你在当前部署上点击删除它也不会删除它。
在控制台中运行的功能:
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);
};
小书签:
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)()
答案 4 :(得分:0)
Nathan的选择很棒,但我使用AutoHotkey的方法很快。每个版本需要大约一秒钟才能删除,因此您可以在10秒内淘汰一个页面。
#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
您可能需要修改屏幕的确切像素值,但这在我的1920x1080上完美无缺。
Win + a是删除并移动到下一个条目,Win + s移动到下一页。将鼠标放在第一个3点菜单上然后继续操作吧!
答案 5 :(得分:0)
Firebase 最终为此实现了一个解决方案。
现在可以设置保留版本的限制。
https://firebase.google.com/docs/hosting/deploying#set_limit_for_retained_versions
答案 6 :(得分:0)
在发布历史记录表的顶部,单击工具栏,然后选择“版本历史记录设置”。设置为所需的数量,然后单击保存。这将自动删除较旧的部署。
答案 7 :(得分:-2)
我不知道它可以帮到你,但我可以删除来自&#34; hosting&#34;的旧部署。像这样的菜单: Delete or rollback old deployment