jekyll-sitemap 0.12.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/.travis.yml +15 -6
- data/History.markdown +19 -0
- data/LICENSE.md +1 -1
- data/README.md +16 -5
- data/jekyll-sitemap.gemspec +1 -1
- data/lib/jekyll/jekyll-sitemap.rb +29 -27
- data/lib/robots.txt +1 -0
- data/lib/sitemap.xml +27 -33
- data/spec/jekyll-sitemap_spec.rb +21 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 545a5dae100fc813cfc730407cc0d3bf3656d008
|
4
|
+
data.tar.gz: 5840efbad8ffbe12ec88479e5b9ba9517055618b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ea2addd12b55152f253503281d60b7453969b7133cc680dffdd471aa80cde89c1782f3cb704707bddb9bd71830249d39616a7ffa4c0c574435ec0d68d456431
|
7
|
+
data.tar.gz: ed2f2f20b26e9445347b3c729b60096930862a33034e6314a30c0323d66a0f716eb94d164c0f518cee54a1c76e451d008815252eeafa11311bd3978000ca6735
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
@@ -7,15 +7,16 @@ rvm:
|
|
7
7
|
- 2.2
|
8
8
|
matrix:
|
9
9
|
include:
|
10
|
-
|
11
|
-
|
12
|
-
env: JEKYLL_VERSION=3.3.0
|
10
|
+
- rvm: 2.3.1
|
11
|
+
env: JEKYLL_VERSION=3.3.0
|
13
12
|
env:
|
14
13
|
matrix:
|
15
|
-
|
14
|
+
- JEKYLL_VERSION=3.3
|
16
15
|
branches:
|
17
16
|
only:
|
18
|
-
|
17
|
+
- master
|
18
|
+
git:
|
19
|
+
depth: 1000
|
19
20
|
install:
|
20
21
|
- travis_retry script/bootstrap
|
21
22
|
script: script/cibuild
|
@@ -26,7 +27,15 @@ notifications:
|
|
26
27
|
channels:
|
27
28
|
- irc.freenode.org#jekyll
|
28
29
|
template:
|
29
|
-
-
|
30
|
+
- "%{repository}#%{build_number} %{message} %{build_url}"
|
30
31
|
email:
|
31
32
|
on_success: never
|
32
33
|
on_failure: change
|
34
|
+
deploy:
|
35
|
+
provider: rubygems
|
36
|
+
api_key:
|
37
|
+
secure: O8fGRnM6OJCqC2BlVE1BqYfq5aR19ulpiHhQwRiHbtSCh8H4rYt7FLsuOwSTtRQjhWYRRSpdRt2ilfQ6PY6Jx1UkxZq5zo9QAPQ9tKxiFTm7gBpZAiAgb06eyaMBSzyQ8qe2qccaFI6CiZhsiaGMsdKsWuYpuoPmdLPd7aDyYJs=
|
38
|
+
gem: jekyll-sitemap
|
39
|
+
on:
|
40
|
+
tags: true
|
41
|
+
repo: jekyll/jekyll-sitemap
|
data/History.markdown
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
## 0.13.0 / 2017-01-05
|
2
|
+
|
3
|
+
### Minor Enhancements
|
4
|
+
|
5
|
+
* Add sitemap.xsl if exists (#143)
|
6
|
+
* Add robots.txt when none exists (#146)
|
7
|
+
* Refactor and add sitemap to `site.pages` (#137)
|
8
|
+
* DRY in sitemap.xml (#136)
|
9
|
+
|
10
|
+
### Documentation
|
11
|
+
|
12
|
+
* Fix #134: Rename "Issues" to "Known Issues" (#135)
|
13
|
+
* Fix #104: Add explanation in README for <lastmod> tag (#139)
|
14
|
+
* Update copyright attribution (#149)
|
15
|
+
|
16
|
+
### Development Fixes
|
17
|
+
|
18
|
+
* Travis should do a deep clone (#147)
|
19
|
+
|
1
20
|
## 0.12.0 / 2016-10-06
|
2
21
|
|
3
22
|
### Minor Enhancements
|
data/LICENSE.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2014 GitHub, inc.
|
3
|
+
Copyright (c) 2014-2017, GitHub, inc. and the jekyll-sitemap contributors
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -22,6 +22,17 @@ those other gems if you *want* the sitemap to include the generated
|
|
22
22
|
content, or *before* those other gems if you *don't want* the sitemap to
|
23
23
|
include the generated content from the gems. (Programming is *hard*.)
|
24
24
|
|
25
|
+
Because the sitemap is added to `site.pages`, you may have to modify any
|
26
|
+
templates that iterate through all pages (for example, to build a menu of
|
27
|
+
all of the site's content).
|
28
|
+
|
29
|
+
## `<lastmod>` tag
|
30
|
+
The `<lastmod>` tag in the `sitemap.xml` will reflect by priority:
|
31
|
+
|
32
|
+
1. The modified date of the file as reported by the filesystem if you have `jekyll-last-modified-at` plugin installed (not compatible with Github Pages auto building)
|
33
|
+
2. A personnalised date if you add the variable `last_modified_at:` with a date in the Front Matter
|
34
|
+
3. The creation date of your post (correspondig to the `post.date` variable)
|
35
|
+
|
25
36
|
## Exclusions
|
26
37
|
|
27
38
|
If you would like to exclude specific pages/posts from the sitemap set the
|
@@ -42,14 +53,14 @@ Use `script/console` to load a local IRB console with the Gem.
|
|
42
53
|
1. `script/bootstrap`
|
43
54
|
2. `script/cibuild`
|
44
55
|
|
56
|
+
## Known Issues
|
57
|
+
|
58
|
+
1. If the `sitemap.xml` doesn't generate in the `_site` folder, ensure `_config.yml` doesn't have `safe: true`. That prevents all plugins from working.
|
59
|
+
2. If the `sitemap.xml` doesn't generate in the `_site` folder, ensure that you don't have a sitemap generator plugin in your `_plugin` folder.
|
60
|
+
|
45
61
|
## Contributing
|
46
62
|
|
47
63
|
1. Fork the project
|
48
64
|
2. Create a descriptively named feature branch
|
49
65
|
3. Add your feature
|
50
66
|
4. Submit a pull request
|
51
|
-
|
52
|
-
## Issues
|
53
|
-
|
54
|
-
1. If the `sitemap.xml` doesn't generate in the `_site` folder, ensure `_config.yml` doesn't have `safe: true`. That prevents all plugins from working.
|
55
|
-
2. If the `sitemap.xml` doesn't generate in the `_site` folder, ensure that you don't have a sitemap generator plugin in your `_plugin` folder.
|
data/jekyll-sitemap.gemspec
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "jekyll-sitemap"
|
5
5
|
spec.summary = "Automatically generate a sitemap.xml for your Jekyll site."
|
6
|
-
spec.version = "0.
|
6
|
+
spec.version = "0.13.0"
|
7
7
|
spec.authors = ["GitHub, Inc."]
|
8
8
|
spec.email = "support@github.com"
|
9
9
|
spec.homepage = "https://github.com/jekyll/jekyll-sitemap"
|
@@ -8,13 +8,12 @@ module Jekyll
|
|
8
8
|
# Main plugin action, called by Jekyll-core
|
9
9
|
def generate(site)
|
10
10
|
@site = site
|
11
|
-
unless
|
12
|
-
|
13
|
-
@site.keep_files ||= []
|
14
|
-
@site.keep_files << "sitemap.xml"
|
15
|
-
end
|
11
|
+
@site.pages << sitemap unless file_exists?("sitemap.xml")
|
12
|
+
@site.pages << robots unless file_exists?("robots.txt")
|
16
13
|
end
|
17
14
|
|
15
|
+
private
|
16
|
+
|
18
17
|
INCLUDED_EXTENSIONS = %W(
|
19
18
|
.htm
|
20
19
|
.html
|
@@ -22,46 +21,49 @@ module Jekyll
|
|
22
21
|
.pdf
|
23
22
|
).freeze
|
24
23
|
|
24
|
+
# Matches all whitespace that follows
|
25
|
+
# 1. A '>' followed by a newline or
|
26
|
+
# 2. A '}' which closes a Liquid tag
|
27
|
+
# We will strip all of this whitespace to minify the template
|
28
|
+
MINIFY_REGEX = %r!(?<=>\n|})\s+!
|
29
|
+
|
25
30
|
# Array of all non-jekyll site files with an HTML extension
|
26
31
|
def static_files
|
27
32
|
@site.static_files.select { |file| INCLUDED_EXTENSIONS.include? file.extname }
|
28
33
|
end
|
29
34
|
|
30
35
|
# Path to sitemap.xml template file
|
31
|
-
def source_path
|
32
|
-
File.expand_path "
|
36
|
+
def source_path(file = "sitemap.xml")
|
37
|
+
File.expand_path "../#{file}", File.dirname(__FILE__)
|
33
38
|
end
|
34
39
|
|
35
40
|
# Destination for sitemap.xml file within the site source directory
|
36
|
-
def destination_path
|
37
|
-
|
38
|
-
@site.in_dest_dir("sitemap.xml")
|
39
|
-
else
|
40
|
-
Jekyll.sanitized_path(@site.dest, "sitemap.xml")
|
41
|
-
end
|
41
|
+
def destination_path(file = "sitemap.xml")
|
42
|
+
@site.in_dest_dir(file)
|
42
43
|
end
|
43
44
|
|
44
|
-
|
45
|
-
def write
|
46
|
-
FileUtils.mkdir_p File.dirname(destination_path)
|
47
|
-
File.open(destination_path, "w") { |f| f.write(sitemap_content) }
|
48
|
-
end
|
49
|
-
|
50
|
-
def sitemap_content
|
45
|
+
def sitemap
|
51
46
|
site_map = PageWithoutAFile.new(@site, File.dirname(__FILE__), "", "sitemap.xml")
|
52
|
-
site_map.content = File.read(source_path)
|
47
|
+
site_map.content = File.read(source_path).gsub(MINIFY_REGEX, "")
|
53
48
|
site_map.data["layout"] = nil
|
54
49
|
site_map.data["static_files"] = static_files.map(&:to_liquid)
|
55
|
-
site_map.
|
56
|
-
site_map
|
50
|
+
site_map.data["xsl"] = file_exists?("sitemap.xsl")
|
51
|
+
site_map
|
52
|
+
end
|
53
|
+
|
54
|
+
def robots
|
55
|
+
robots = PageWithoutAFile.new(@site, File.dirname(__FILE__), "", "robots.txt")
|
56
|
+
robots.content = File.read(source_path("robots.txt"))
|
57
|
+
robots.data["layout"] = nil
|
58
|
+
robots
|
57
59
|
end
|
58
60
|
|
59
|
-
# Checks if a
|
60
|
-
def
|
61
|
+
# Checks if a file already exists in the site source
|
62
|
+
def file_exists?(file_path)
|
61
63
|
if @site.respond_to?(:in_source_dir)
|
62
|
-
File.exist? @site.in_source_dir(
|
64
|
+
File.exist? @site.in_source_dir(file_path)
|
63
65
|
else
|
64
|
-
File.exist? Jekyll.sanitized_path(@site.source,
|
66
|
+
File.exist? Jekyll.sanitized_path(@site.source, file_path)
|
65
67
|
end
|
66
68
|
end
|
67
69
|
end
|
data/lib/robots.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Sitemap: {{ "sitemap.xml" | absolute_url }}
|
data/lib/sitemap.xml
CHANGED
@@ -1,41 +1,35 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
{% if page.xsl %}
|
3
|
+
<?xml-stylesheet type="text/xsl" href="{{ "/sitemap.xsl" | absolute_url }}"?>
|
4
|
+
{% endif %}
|
2
5
|
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
3
|
-
{%
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
{%
|
17
|
-
{% for
|
18
|
-
{% for doc in collection.last.docs %}{% unless doc.sitemap == false %}
|
19
|
-
<url>
|
20
|
-
<loc>{{ doc.url | replace:'/index.html','/' | absolute_url }}</loc>
|
21
|
-
{% if doc.last_modified_at %}
|
22
|
-
<lastmod>{{ doc.last_modified_at | date_to_xmlschema }}</lastmod>
|
23
|
-
{% endif %}
|
24
|
-
</url>
|
25
|
-
{% endunless %}{% endfor %}
|
26
|
-
{% for doc in collection.docs %}{% unless doc.sitemap == false %}
|
6
|
+
{% assign collections = site.collections | where_exp:'collection','collection.output != false' %}
|
7
|
+
{% for collection in collections %}
|
8
|
+
{% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %}
|
9
|
+
{% for doc in docs %}
|
10
|
+
<url>
|
11
|
+
<loc>{{ doc.url | replace:'/index.html','/' | absolute_url }}</loc>
|
12
|
+
{% if doc.last_modified_at or doc.date %}
|
13
|
+
<lastmod>{{ doc.last_modified_at | default: doc.date | date_to_xmlschema }}</lastmod>
|
14
|
+
{% endif %}
|
15
|
+
</url>
|
16
|
+
{% endfor %}
|
17
|
+
{% endfor %}
|
18
|
+
|
19
|
+
{% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' %}
|
20
|
+
{% for page in pages %}
|
27
21
|
<url>
|
28
|
-
<loc>{{
|
29
|
-
{% if
|
30
|
-
|
22
|
+
<loc>{{ page.url | replace:'/index.html','/' | absolute_url }}</loc>
|
23
|
+
{% if page.last_modified_at %}
|
24
|
+
<lastmod>{{ page.last_modified_at | date_to_xmlschema }}</lastmod>
|
31
25
|
{% endif %}
|
32
26
|
</url>
|
33
|
-
{%
|
34
|
-
|
27
|
+
{% endfor %}
|
28
|
+
|
35
29
|
{% for file in page.static_files %}
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
30
|
+
<url>
|
31
|
+
<loc>{{ file.path | absolute_url }}</loc>
|
32
|
+
<lastmod>{{ file.modified_time | date_to_xmlschema }}</lastmod>
|
33
|
+
</url>
|
40
34
|
{% endfor %}
|
41
35
|
</urlset>
|
data/spec/jekyll-sitemap_spec.rb
CHANGED
@@ -136,6 +136,11 @@ describe(Jekyll::JekyllSitemap) do
|
|
136
136
|
expect(contents).to match /<loc>http:\/\/example\.org\/bass\/2014\/03\/02\/march-the-second\.html<\/loc>/
|
137
137
|
expect(contents).to match /<loc>http:\/\/example\.org\/bass\/2013\/12\/12\/dec-the-second\.html<\/loc>/
|
138
138
|
end
|
139
|
+
|
140
|
+
it "adds baseurl to robots.txt" do
|
141
|
+
content = File.read(dest_dir("robots.txt"))
|
142
|
+
expect(content).to match("Sitemap: http://example.org/bass/sitemap.xml")
|
143
|
+
end
|
139
144
|
end
|
140
145
|
|
141
146
|
context "with urls that needs URI encoding" do
|
@@ -155,5 +160,21 @@ describe(Jekyll::JekyllSitemap) do
|
|
155
160
|
it "does not double-escape urls" do
|
156
161
|
expect(contents).to_not match /%25/
|
157
162
|
end
|
163
|
+
|
164
|
+
context "readme" do
|
165
|
+
let(:contents) { File.read(dest_dir("robots.txt")) }
|
166
|
+
|
167
|
+
it "has no layout" do
|
168
|
+
expect(contents).not_to match(/\ATHIS IS MY LAYOUT/)
|
169
|
+
end
|
170
|
+
|
171
|
+
it "creates a sitemap.xml file" do
|
172
|
+
expect(File.exist?(dest_dir("robots.txt"))).to be_truthy
|
173
|
+
end
|
174
|
+
|
175
|
+
it "renders liquid" do
|
176
|
+
expect(contents).to match("Sitemap: http://xn--mlaut-jva.example.org/sitemap.xml")
|
177
|
+
end
|
178
|
+
end
|
158
179
|
end
|
159
180
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-sitemap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -113,6 +113,7 @@ files:
|
|
113
113
|
- lib/jekyll-sitemap.rb
|
114
114
|
- lib/jekyll/jekyll-sitemap.rb
|
115
115
|
- lib/jekyll/page_without_a_file.rb
|
116
|
+
- lib/robots.txt
|
116
117
|
- lib/sitemap.xml
|
117
118
|
- script/bootstrap
|
118
119
|
- script/cibuild
|
@@ -167,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
168
|
version: '0'
|
168
169
|
requirements: []
|
169
170
|
rubyforge_project:
|
170
|
-
rubygems_version: 2.6.
|
171
|
+
rubygems_version: 2.6.8
|
171
172
|
signing_key:
|
172
173
|
specification_version: 4
|
173
174
|
summary: Automatically generate a sitemap.xml for your Jekyll site.
|