关于如何让Hexo不忽略.开头的文件一事

俺尝试搞点小事情:想办法让这个部署在Netlify上的博客在国内访问时走Cloudflare。(CF HKG节点yyds!)

但是有一点小麻烦:HTTPS肯定是要开的,但CF采取CNAME接入时边缘证书签发需要手动校验(HTTP Challenge),比如:

1
Let "http://cms42.top/.well-known/pki-validation/ca3-0c24cbfcd6f9411d99eee77c30299ca4.txt" BE "ca3-e434456a18334cbebb5fd67297f544ae"

这看上去是个容易实现的目标:按要求创建/sourece/.well-known/xxx.txthexo g; hexo d,然后你就会惊讶地发现hexo并没有为你提交任何更改————甚至连/public文件夹下都没有出现.well-known

查阅资料可知:

Hexo 默认会忽略隐藏文件和文件夹(包括名称以下划线和 . 开头的文件和文件夹,Hexo 的 _posts_data 等目录除外)。

按照文档要求,我们设置/_config.yml中的include选项:

1
2
include:
- ".well-known/**/*"

是不是问题就得到解决了呢?

很遗憾,这次你确实会在/public目录下找到你的.well-known,但hexo d一跑,它还是没被提交!

那就只能是deploy插件hexo-deployer-git的锅了。但由于我太菜懒得找官方文档,咱直接翻代码:

1
2
3
4
5
6
7
8
9
10
11
/node_modules/hexo-deployer-git/lib/deployer.js, line 18-27:
module.exports = function(args) {
const baseDir = this.base_dir;
const deployDir = pathFn.join(baseDir, '.deploy_git');
const publicDir = this.public_dir;
let extendDirs = args.extend_dirs;
const ignoreHidden = args.ignore_hidden;
const ignorePattern = args.ignore_pattern;
const log = this.log;
const message = commitMessage(args);
const verbose = !args.silent;

好了这不就显然了吗。_config.yml里再来一条ignoreHidden:false,搞定。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.