Add rake preview task for testing /test during theme development

This commit is contained in:
Michael Rose 2016-11-16 11:21:56 -05:00
parent c4252b09af
commit 91afe6c2d8
3 changed files with 84 additions and 3 deletions

View File

@ -94,6 +94,12 @@ To help me out try to avoid creating pull requests on `master` and instead branc
Theme documentation and demo pages can be found in the [`/docs`](docs) if submitting improvements, typo corrections, etc. Theme documentation and demo pages can be found in the [`/docs`](docs) if submitting improvements, typo corrections, etc.
## Development
To set up your environment to develop this theme, run `bundle install`.
To test the theme, run `bundle exec rake preview` and open your browser at `http://localhost:4000/test/`. This starts a Jekyll server using your theme and the contents of the `test/` directory. As you make modifications to your theme and to the example site, your site will regenerate and you should see the changes in the browser after a refresh.
--- ---
## Credits ## Credits

75
Rakefile Normal file
View File

@ -0,0 +1,75 @@
require "bundler/gem_tasks"
require "jekyll"
require "listen"
def listen_ignore_paths(base, options)
[
/_config\.ya?ml/,
/_site/,
/\.jekyll-metadata/
]
end
def listen_handler(base, options)
site = Jekyll::Site.new(options)
Jekyll::Command.process_site(site)
proc do |modified, added, removed|
t = Time.now
c = modified + added + removed
n = c.length
relative_paths = c.map{ |p| Pathname.new(p).relative_path_from(base).to_s }
print Jekyll.logger.message("Regenerating:", "#{relative_paths.join(", ")} changed... ")
begin
Jekyll::Command.process_site(site)
puts "regenerated in #{Time.now - t} seconds."
rescue => e
puts "error:"
Jekyll.logger.warn "Error:", e.message
Jekyll.logger.warn "Error:", "Run jekyll build --trace for more information."
end
end
end
task :preview do
base = Pathname.new('.').expand_path
options = {
"source" => base.join('test').to_s,
"destination" => base.join('test/_site').to_s,
"force_polling" => false,
"serving" => true,
"theme" => "minimal-mistakes-jekyll"
}
options = Jekyll.configuration(options)
ENV["LISTEN_GEM_DEBUGGING"] = "1"
listener = Listen.to(
base.join("_includes"),
base.join("_layouts"),
base.join("_sass"),
base.join("assets"),
options["source"],
:ignore => listen_ignore_paths(base, options),
:force_polling => options['force_polling'],
&(listen_handler(base, options))
)
begin
listener.start
Jekyll.logger.info "Auto-regeneration:", "enabled for '#{options["source"]}'"
unless options['serving']
trap("INT") do
listener.stop
puts " Halting auto-regeneration."
exit 0
end
loop { sleep 1000 }
end
rescue ThreadError
# You pressed Ctrl-C, oh my!
end
Jekyll::Commands::Serve.process(options)
end

View File

@ -14,7 +14,7 @@ title_separator : "-"
name : "Your Name" name : "Your Name"
description : "Minimal Mistakes theme test." description : "Minimal Mistakes theme test."
url : # the base hostname & protocol for your site e.g. "https://mmistakes.github.io" url : # the base hostname & protocol for your site e.g. "https://mmistakes.github.io"
baseurl : # the subpath of your site, e.g. "/blog" baseurl : "/test"
repository : # GitHub username/repo-name e.g. "mmistakes/minimal-mistakes" repository : # GitHub username/repo-name e.g. "mmistakes/minimal-mistakes"
teaser : # path of fallback teaser image, e.g. "/assets/images/500x300.png" teaser : # path of fallback teaser image, e.g. "/assets/images/500x300.png"
# breadcrumbs : false # true, false (default) # breadcrumbs : false # true, false (default)
@ -57,7 +57,7 @@ yandex_site_verification :
# Social Sharing # Social Sharing
twitter: twitter:
username : username : "mmistakes"
facebook: facebook:
username : username :
app_id : app_id :
@ -102,7 +102,7 @@ author:
stackoverflow : # "123456/username" (the last part of your profile url, e.g. http://stackoverflow.com/users/123456/username) stackoverflow : # "123456/username" (the last part of your profile url, e.g. http://stackoverflow.com/users/123456/username)
steam : steam :
tumblr : tumblr :
twitter : twitter : "mmistakes"
vine : vine :
weibo : weibo :
xing : xing :