如何防止hexo渲染某个文件夹
Updated:
问题
我在学术主页里放了一些 paper 相关的 project 网页。因为 hexo 编译的时候,会把 source
文件夹下的所有 md
文件和 html
文件都给渲染了。结果就把我的一个 html
文件给渲染出错了,导致关键的可视化图表没显示出来。这个问题隐藏地很深,费了好一番功夫才找到原因。
怎么解决呢?最直接的方法就是每次编译后,把这个不想更改的文件夹手动 copy 到 public 文件夹下了。因为常常要编译,即使可以用命令行来完成 copy,也还是太麻烦了。拖了好久,今天我要立志解决这个问题!
经过一番检索,发现官方解决方案是用
|
|
来防止单个 html
被渲染,但是,经测试,只是在一定程度上减少了渲染,但是还是有渲染!不行!
解决方案
再经过一番更深的检索,发现如下方法:
方案 A
http://riny.net/2014/move-blog-to-github/
修改 hexo 的源码
原作者测试用的 hexo 版本是 2.5.2
具体方法:
在 node 安装目录 \node_modules\hexo\lib\plugins\generator
下有个 page.js
文件 (ps: 测试的系统是win7 64
位),找到以下代码:
|
|
将其修改为:
|
|
notRender 中的 test1
, test2
目录即为不需要被 render 的目录,保存后,重新执行 hexo g
命令就会发现 source
中的 test1
和test2
目录下的 html
文件没有被 render.
提示:其实在我的系统中,这个文件在 C:\Users\Yourname\AppData\Roaming\npm\node_modules\hexo\lib\plugins\generator
下。我都不记得当初安装的时候是怎么安装到这个文件夹下的了。
方案 B
http://xuanwo.org/2014/08/14/hexo-usual-problem/
放在主题的source
目录下。
利用主题的 source
目录,也就是 themes/themes-name/source
。因为这个文件夹里面的所有文件都会被复制到网站的根目录中去,正好满足我们的需求。
其实这个解决方案可以这么理解,那些不需要编译的页面是我们想要直接展示给用户的,这跟主题的目标是一样的。
方案 C
https://github.com/f111fei/hexo-processor-copyassets
Processor CopyAssets Plugin
这是最终采用的解决方案
This is a processor copyAssets plugin for Hexo.You can customize what files are not rendered but can direct copy while executing hexo generate
.
Install
$ npm install hexo-processor-copyassets --save
Options
You can configure this plugin in _config.yml
. ForExample:
|
|
or
|
|
- copyAssets - The files or folders path in source folder that you want to direct copy to public folder.
为保持原 README.md
的结构,也附上中文:
这是一个 Hexo 的文件处理插件,能自定义 source
中的指定文件或文件夹,在执行 generate
命令的时候能直接复制到 public
文件夹中而不经过渲染。比如,这个文件source/project/index.html
,我不想被渲染,那么你就可以使用这个插件。
安装
$ npm install hexo-processor-copyassets --save
配置插件
你可以在 _config.yml
中配置这个插件,例如:
|
|
或者
|
|
总结:方案选择
至此,问题解决。优劣分析:方案 A 每次添加新的目录,都要修改底层的东西,不太好。方案 B 和 C 都很省事儿。不过方案 B,把文件放在 themes
的source
文件夹下,换主题就会不方便。
推荐方案 C
如果觉得帮到了你,打赏一下吧!