使用rake生成jekyll静态博客新文章

使用了Jekyll也有9个月了,虽然写的博文不多,但也是会觉得每次写新文章是痛苦的。复制粘贴再更改也是显得不够条理,一个字一个字的敲也是痛苦的,索性搜索一下有没有好的方法,终于找到了一个好办法,利用ruby插件rake来完成。

下面就讲一下怎么实现。

安装rake

利用gem包管理工具进行安装rake模块,国内的话要将gem安装源更改为taobao的,详 Fedora Linux下安装Jekyll

# gem 安装 rake
sudo gem install rake

编写Rakefile

我们可以编写Rakefile,按照一定规则生成我们的博文,需要将Rakefile放到Jekyll博客工程的根目录下,如下是示例Rakefile的内容:

task :default => :new

require 'fileutils'

desc "创建新 post"
task :new do
  puts "请输入要创建的 post URL:"
	@url = STDIN.gets.chomp
	puts "请输入 post 标题:"
	@name = STDIN.gets.chomp
	puts "请输入 post 分类,以空格分隔:"
	@categories = STDIN.gets.chomp
	@slug = "#{@url}"
	@slug = @slug.downcase.strip.gsub(' ', '-')
	@date = Time.now.strftime("%F")
	@post_name = "_posts/#{@date}-#{@slug}.markdown"
	@author = "5km(十里)"
	if File.exist?(@post_name)
			abort("文件名已经存在!创建失败")
	end
	FileUtils.touch(@post_name)
	open(@post_name, 'a') do |file|
			file.puts "---"
			file.puts "layout:     post"
			file.puts "title:      \"#{@name}\""
			file.puts "date:       #{Time.now}"
			file.puts "author:     \"#{@author}\""
			file.puts "categories: #{@categories}"
			file.puts "---"
	end
	exec "vim #{@post_name}"
end

看上面的Ruby代码,应该能看出实现思路,可以根据自己的需求作出修改,其中@author变量改成自己的就可以了。

生成新文章

使用rake new命令,生成新的post,new与上述ruby代码中task命名对应起来,也可以修改。执行命令的时候要在jekyll的工程目录中,执行rake new命令,执行过程如下:

-> % rake new
请输入要创建的 post URL:
rake-new-post
请输入 post 标题:
使用rake生成jekyll新文章  
请输入 post 分类,以空格分隔:
Jekyll