2017-01-25 82 views
0

我需要在生成時替換現場的文本字符串。Hexo如何使內容替換生成?

創建一個文件myGenerateWork.js並使用節點myGenerateWork.js執行但不起作用。

這是myGenerateWork.js

var Hexo = require('hexo'); 

var hexo = new Hexo(process.cwd(), {}); 

hexo.init().then(function() { 

    hexo.extend.filter.register('after_post_render', function(data){ 
     data.content = data.content.replace(/@(\d+)/, '<a href="http://twitter.com/$1">#$1</a>'); 
     return data; 
    }); 

    hexo.call('generate', {}).then(function(){ 
     return hexo.exit(); 
    }).catch(function(err){ 
     return hexo.exit(err); 
    }); 
}); 

回答

0

這是一個錯誤。

如果「hexo server」正在運行並執行「generate」,則執行「after_post_render」過濾器,內容替換正常工作,但帶有新數據的data.content被hexo忽略。

解決方案:在做一個生成之前執行「hexo clean」。