如何从 Eleventy 网站删除页面?

问题描述

我想删除我在 Eleventy 生成的网站中创建的页面,我们称之为 a-post.md。而且我不知道正确的做法是什么。

我刚刚删除了“源”页面,果然,它从网站上消失了。但是,它在 _site 目录中生成文件仍然存在。我应该手动“清理”这些还是我做错了什么?

我知道这种东西不应该是 Stackoverflow 上的问题——但作为 Eleventy(和静态网站生成器)世界的新手,我对缺乏对新手友好的文档感到困惑。还有很多关于如何创建和自定义页面文章和帖子,但没有介绍如何正确处理它们。

解决方法

您所描述的问题通常只发生在本地机器上的开发过程中,站点输出在构建之间停留。 SSG 非常适合atomic deploys。这意味着每个部署都将在它自己的临时容器环境中执行,并且生成的站点将完全替换之前的构建。这意味着新部署的构建将永远不会包含来自先前构建的文件。这适用于所有 SSG 托管服务提供商,例如 NetlifyVercel

您所描述的问题通常仅在开发期间发生在本地,并且如果您通过 SFTP 或类似方式上传网站来手动部署网站的新版本。

本地开发

最佳做法是在构建步骤之前删除您的输出文件夹,以便您的本地构建与您将在实时环境中获得的原子部署相匹配。您可以将 clear 命令放在构建脚本中,这样您就不必考虑它(假设您的输出目录是 dist):

"scripts": {
    "build": "rm -rf dist/ && eleventy"
}

手动部署

这确实不是部署站点的最佳方式,但如果您这样做,我会尝试模仿原子部署:

  1. 将新版本上传到您的实时站点的 webroot 旁边。例如,如果您的实时网站位于 htdocs,请将新网站上传为 htdocs-new
  2. 删除 htdocs 文件夹。
  3. htdocs-new 重命名为 htdocs

这样,您将永远不会留下任何先前构建的残余。缺点是在第 2 步和第 3 步之间,您的站点将不可用,而 Netlify 或 Vercel 上的原子部署的停机时间为零。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...