需求
每次新建文章时都要新建文件然后复制文章头,或者复制其他文件,很麻烦,因此弄一个命令直接生产一个文件带模板
脚本详解
前面几篇介绍过关于nodejs文件系统了这里就不介绍了,主要解释下脚本如何传参数
process.argv[2]
第一个参数,为什么是2,因为1是脚本文件本身所以第一个参数就是2,第二个参数就是3,依次叠加
关于文章默认创建时间以及更新时间都是以当前时间为准
命令使用
1 2 3 4 5
| filename <参数1> <参数2> <参数4>
|
eg: 假设脚本文件名字为new执行new 标题 java java,nodejs
会生成一个标题.md文件
内容如下
1 2 3 4 5 6 7
| --- title: 标题 date: 2018-01-30 00:07:03 updated: 2018-01-30 00:23:06 categories: java tags: [java,nodejs] ---
|
额外注意
如果脚本放的目录就是文章生产的目录,因此放入hexo时记得设置.gitignore
不要让这个文件也被上传编译了
脚本内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #!/usr/bin/env node
console.log("开始创建文章");
var title=process.argv[2]?process.argv[2]:""; var categories=process.argv[3]?process.argv[3]:""; var tags=process.argv[4]?process.argv[4]:""; var filename=process.argv[2]?process.argv[2]:"newfile";
var fs = require("fs"); var template=[]; template.push('---'+'\r'); template.push('title: '+title+'\r'); template.push('date: '+getFormatDate(Date.now())+'\r'); template.push('updated: '+getFormatDate(Date.now())+'\r'); template.push('categories: '+categories+'\r'); template.push('tags: ['+tags+']'+'\r'); template.push('---'+'\r'); var result=template.join(''); fs.writeFile(filename+'.md', result, 'utf8',function(err) { if (err) return console.log("写文件错误:",err); console.log("创建"+title+".md文件成功:",result); });
function getFormatDate(timeStr, dateSeparator, timeSeparator) { dateSeparator = dateSeparator ? dateSeparator : "-"; timeSeparator = timeSeparator ? timeSeparator : ":"; var date = new Date(timeStr), year = date.getFullYear(), month = date.getMonth(), day = date.getDate(), hour = date.getHours(), minute = date.getMinutes(), seconds = date.getSeconds(), Y = year + dateSeparator, M = ((month + 1) > 9 ? (month + 1) : ('0' + (month + 1))) + dateSeparator, D = (day > 9 ? day : ('0' + day)) + ' ', h = (hour > 9 ? hour : ('0' + hour)) + timeSeparator, m = (minute > 9 ? minute : ('0' + minute)) + timeSeparator, s = (seconds > 9 ? seconds : ('0' + seconds)), formatDate = Y + M + D + h + m + s; return formatDate; }
|