如何阻止Pelican将Markdown源文件复制到输出目录?
Jekyll迁移Pelican:如何阻止源Markdown文件被复制到输出目录
问题背景
我正在将Jekyll博客迁移至Pelican,源content文件夹采用YYYY/MM/DD/slug.md结构组织博客文章,静态文件存储于files/YYYY/filename.ext,静态页面位于pages/filename.md,目录结构如下:
content |-- 2023 | |-- 01 | | |-- 01 | | | |-- plans-for-the-year.md | | | +-- sdxjs-introduction.md | | |-- 02 | | | +-- sdxjs-systems-programming.md | | |-- 03 | | | +-- sdxjs-async-programming.md | | |-- 04 | | | +-- sdxjs-unit-test.md |-- 2024 | |-- 01 | | |-- 03 | | | +-- the-other-examples.md |-- files | |-- 2023 | | |-- awesome-robot.png | | |-- blackberry-pie.jpg +-- pages +-- about.md
已在pelicanconf.py中添加以下配置:
OUTPUT_SOURCES = False SLUGIFY_SOURCE = "basename" ARTICLE_URL = "{date:%Y}/{date:%m}/{date:%d}/{slug}/" ARTICLE_SAVE_AS = "{date:%Y}/{date:%m}/{date:%d}/{slug}/index.html" PAGE_URL = "{slug}/" PAGE_SAVE_AS = "{slug}/index.html"
HTML文件已按预期生成并存放,但即便显式设置OUTPUT_SOURCES = False,源Markdown文件仍被复制到输出目录。不想通过Makefile添加构建后删除命令,请问如何从一开始就阻止它们被复制?
- Pelican版本:4.10.0
- Python版本:3.12.6
解决方法
核心误区说明
OUTPUT_SOURCES = False控制的是是否生成包含源文件元数据的.src辅助文件,并非阻止源Markdown文件本身被复制到输出目录。源文件被复制的原因是Pelican将这些未被正确归类的文件识别为静态资源处理了。
具体配置调整
限定静态文件路径并排除源文件目录
在pelicanconf.py中添加以下配置,明确指定仅将files目录作为静态文件来源,同时排除文章和页面的源文件所在目录:# 指定仅处理files目录下的静态文件 STATIC_PATHS = ['files'] # 排除文章和页面的源文件目录,避免被当作静态文件复制 EXCLUDE_PATHS = ['2023', '2024', 'pages']显式指定文章/页面的文件扩展名
确保Pelican能正确识别Markdown文件为文章或页面,可显式设置扩展名规则:ARTICLE_EXTS = ['md'] PAGE_EXTS = ['md']检查第三方插件
若启用了第三方插件,部分插件可能会强制复制源文件,需检查插件文档并调整相关设置,或暂时禁用插件验证问题是否解决。
内容的提问来源于stack exchange,提问作者Greg Wilson
相关产品推荐
相关产品推荐

