UNPKG

toosolo

Version:

基于Node.js的静态博客程序

79 lines (56 loc) 2.15 kB
var path = require('path'), fs = require('fs'), moment = require('moment'), jade = require('jade'), markdown = require('markdown-js').markdown, util = require('../util.js'), tooSolo = global.tooSolo, tmplPath = tooSolo.config.skinPath, indexPath = tooSolo.config.distPath; var buildIndex = function(){ util.mkdirSyncRecursive(indexPath); // 删除旧首页文件 fs.readdirSync(indexPath).forEach(function(indexItem){ if(!/^index.*\.html$/.test(indexItem))return; fs.unlinkSync(indexPath + '/' + indexItem); }); var indexTmpl = fs.readFileSync(tmplPath + '/html/index.jade','utf-8'), indexCompileFunc = jade.compile(indexTmpl,{filename:tmplPath + '/html/index.jade',pretty:true}), compileLocals = {}, blogList, pageCount = Math.ceil(tooSolo.blog.blogs.length / 5); compileLocals.basePath = '.'; compileLocals.blogName = tooSolo.config.blogName; compileLocals.pageTitle = compileLocals.blogName; compileLocals.blogSubTitle = tooSolo.config.blogSubTitle; compileLocals.blogKeywords = tooSolo.config.blogKeywords; compileLocals.blogDescription = tooSolo.config.blogDescription; compileLocals.pages = tooSolo.blog.pages; compileLocals.categories = tooSolo.blog.categories; compileLocals.pageCount = pageCount; blogList = tooSolo.blog.blogs.slice(); blogList.sort(function(blog1,blog2){ var date1 = +blog1.date, date2 = +blog2.date; return date1<date2 ? 1:-1; }); for(var i=0;i < pageCount;i++){ var fileName = 'index' + (i?('_page'+(i+1)):'') + '.html'; console.log(' ' + fileName); compileLocals.blogList = blogList.slice().splice(5*i,5); _buildIndexFile(fileName,indexCompileFunc,compileLocals); } // console.log(compileLocals.category); } function _buildIndexFile(fileName,indexCompileFunc,compileLocals){ compileLocals.blogList.forEach(function(blogItem){ blogItem.summary = markdown(blogItem.summary); blogItem.pubDate = moment(blogItem.date).format('YYYY-MM-DD') }); fs.writeFileSync(indexPath + '/' + fileName,indexCompileFunc(compileLocals)); } module.exports = function(callback){ console.log('\n 首页构建……'); buildIndex(); callback(); }