jekyll-srcset 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +25 -1
- data/lib/jekyll/srcset/tag.rb +39 -3
- data/lib/jekyll/srcset/version.rb +1 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74e4d89dfd0daf04636020c81d779621b0dd6805
|
4
|
+
data.tar.gz: 836bc3fe5b51204eec502cc53902d2ff5d3aeb5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50b14dec5105e4ac4646e469408f177a34d34536333b706340450d13f56069ba829fbc277f5cedd78c73d20a2607343bc2cf9603cc8de509a43b95f58377a992
|
7
|
+
data.tar.gz: ca2679922586949b654d1292e2b0bf1634a82460fef76f5bc82381abd94624303b832dfbddb524b7db87d429abf8865c6167a03c51e33ec79a66e550361a21ae
|
data/README.md
CHANGED
@@ -59,10 +59,28 @@ To use variables for the image or the dimensions, simply leave out the quotes:
|
|
59
59
|
|
60
60
|
## Optipng
|
61
61
|
|
62
|
-
If you have `optipng` installed and in your PATH, the plugin
|
62
|
+
If you have `optipng` installed and in your PATH, you can tell the plugin to run it on all generated png images.
|
63
|
+
|
64
|
+
Just add:
|
65
|
+
|
66
|
+
```
|
67
|
+
srcset:
|
68
|
+
optipng: true
|
69
|
+
```
|
70
|
+
|
71
|
+
To your \_config.yml
|
63
72
|
|
64
73
|
Currently the plugin doesn't optimize other image formats, except for stripping color palettes.
|
65
74
|
|
75
|
+
## Caching images
|
76
|
+
|
77
|
+
Optimizing and resizing can take a while for some images. You can specify a cache folder in your Jekyll config to let jekyll-srcset cache images between runs.
|
78
|
+
|
79
|
+
```
|
80
|
+
srcset:
|
81
|
+
cache: "/tmp/images"
|
82
|
+
```
|
83
|
+
|
66
84
|
## Contributing
|
67
85
|
|
68
86
|
1. Fork it ( https://github.com/[my-github-username]/jekyll-srcset/fork )
|
@@ -70,3 +88,9 @@ Currently the plugin doesn't optimize other image formats, except for stripping
|
|
70
88
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
71
89
|
4. Push to the branch (`git push origin my-new-feature`)
|
72
90
|
5. Create a new Pull Request
|
91
|
+
|
92
|
+
## Host your Jekyll sites with netlify
|
93
|
+
|
94
|
+
This plugin is developed by netlify, [the premium hosting for static websites](https://www.netlify.com).
|
95
|
+
|
96
|
+
You can use netlify if you're using custom plugins with your Jekyll sites. When you push to git, netlify will build your Jekyll site and deploy the result to a global CDN, while handling asset fingerprinting, caching headers, bundling, minification and true instant cache invalidation. A 1-click operation with no other setup needed.
|
data/lib/jekyll/srcset/tag.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "RMagick"
|
2
|
+
require "digest/sha1"
|
2
3
|
|
3
4
|
module Jekyll
|
4
5
|
class SrcsetTag < Liquid::Tag
|
@@ -44,7 +45,31 @@ module Jekyll
|
|
44
45
|
options
|
45
46
|
end
|
46
47
|
|
48
|
+
def config(site)
|
49
|
+
site.config['srcset'] || {}
|
50
|
+
end
|
51
|
+
|
52
|
+
def optimize?(site)
|
53
|
+
config(site)['optipng']
|
54
|
+
end
|
55
|
+
|
56
|
+
def cache_dir(site)
|
57
|
+
config(site)['cache']
|
58
|
+
end
|
59
|
+
|
47
60
|
def generate_image(site, src, attrs)
|
61
|
+
cache = cache_dir(site)
|
62
|
+
sha = cache && Digest::SHA1.hexdigest(attrs.sort.inspect + File.read(File.join(site.source, src)) + (optimize?(site) ? "optimize" : ""))
|
63
|
+
if sha
|
64
|
+
if File.exists?(File.join(cache, sha))
|
65
|
+
img_attrs = JSON.parse(File.read(File.join(cache,sha,"json")))
|
66
|
+
filename = img_attrs["src"].sub(/^\//, '')
|
67
|
+
dest = File.join(site.dest, filename)
|
68
|
+
FileUtils.cp(File.join(cache,sha,"img"), dest)
|
69
|
+
return img_attrs
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
48
73
|
img = Image.read(File.join(site.source, src)).first
|
49
74
|
img_attrs = {}
|
50
75
|
|
@@ -56,22 +81,33 @@ module Jekyll
|
|
56
81
|
scale = attrs["factor"] || 1
|
57
82
|
end
|
58
83
|
|
59
|
-
img.scale!(scale) if scale <= 1
|
60
84
|
img_attrs["height"] = attrs["height"] if attrs["height"]
|
61
85
|
img_attrs["width"] = attrs["width"] if attrs["width"]
|
62
|
-
|
63
86
|
img_attrs["src"] = src.sub(/(\.\w+)$/, "-#{img.columns}x#{img.rows}" + '\1')
|
87
|
+
|
64
88
|
filename = img_attrs["src"].sub(/^\//, '')
|
65
89
|
dest = File.join(site.dest, filename)
|
66
90
|
FileUtils.mkdir_p(File.dirname(dest))
|
91
|
+
|
67
92
|
unless File.exist?(dest)
|
93
|
+
puts "Resizing image #{dest}"
|
94
|
+
img.scale!(scale) if scale <= 1
|
68
95
|
img.strip!
|
69
96
|
img.write(dest)
|
70
|
-
if dest.match(/\.png$/) && self.class.optipng?
|
97
|
+
if dest.match(/\.png$/) && optimize?(site) && self.class.optipng?
|
71
98
|
`optipng #{dest}`
|
72
99
|
end
|
73
100
|
end
|
74
101
|
site.config['keep_files'] << filename unless site.config['keep_files'].include?(filename)
|
102
|
+
|
103
|
+
if sha
|
104
|
+
FileUtils.mkdir_p(File.join(cache, sha))
|
105
|
+
FileUtils.cp(dest, File.join(cache, sha, "img"))
|
106
|
+
File.open(File.join(cache, sha, "json"), "w") do |f|
|
107
|
+
f.write(JSON.generate(img_attrs))
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
75
111
|
img_attrs
|
76
112
|
end
|
77
113
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-srcset
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mathias Biilmann Christensen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rmagick
|
@@ -114,4 +114,3 @@ signing_key:
|
|
114
114
|
specification_version: 4
|
115
115
|
summary: This Jekyll plugin ads an image_tag that will generate responsive img tags
|
116
116
|
test_files: []
|
117
|
-
has_rdoc:
|