jekyll-assets 3.0.5 → 3.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile +2 -1
- data/LICENSE +1 -1
- data/README.md +136 -149
- data/Rakefile +37 -5
- data/lib/jekyll-assets.rb +1 -1
- data/lib/jekyll/assets.rb +14 -3
- data/lib/jekyll/assets/config.rb +1 -1
- data/lib/jekyll/assets/context.rb +1 -1
- data/lib/jekyll/assets/default.rb +1 -1
- data/lib/jekyll/assets/drop.rb +1 -1
- data/lib/jekyll/assets/env.rb +52 -19
- data/lib/jekyll/assets/extensible.rb +1 -1
- data/lib/jekyll/assets/filters.rb +1 -1
- data/lib/jekyll/assets/hook.rb +31 -3
- data/lib/jekyll/assets/html.rb +1 -1
- data/lib/jekyll/assets/logger.rb +52 -10
- data/lib/jekyll/assets/manifest.rb +1 -1
- data/lib/jekyll/assets/map.rb +2 -2
- data/lib/jekyll/assets/map/css.rb +1 -1
- data/lib/jekyll/assets/map/javascript.rb +1 -1
- data/lib/jekyll/assets/map/writer.rb +2 -2
- data/lib/jekyll/assets/patches/asset.rb +1 -1
- data/lib/jekyll/assets/patches/cached.rb +4 -4
- data/lib/jekyll/assets/patches/find_asset.rb +1 -1
- data/lib/jekyll/assets/patches/functions.rb +1 -1
- data/lib/jekyll/assets/patches/obsolete.rb +1 -1
- data/lib/jekyll/assets/patches/site.rb +1 -1
- data/lib/jekyll/assets/plugins.rb +1 -1
- data/lib/jekyll/assets/plugins/bootstrap.rb +3 -3
- data/lib/jekyll/assets/plugins/closure_comments.rb +32 -0
- data/lib/jekyll/assets/plugins/font-awesome.rb +2 -2
- data/lib/jekyll/assets/plugins/frontmatter.rb +1 -1
- data/lib/jekyll/assets/plugins/html/audio.rb +1 -1
- data/lib/jekyll/assets/plugins/html/component.rb +1 -1
- data/lib/jekyll/assets/plugins/html/css.rb +1 -1
- data/lib/jekyll/assets/plugins/html/defaults/audio.rb +1 -1
- data/lib/jekyll/assets/plugins/html/defaults/component.rb +1 -1
- data/lib/jekyll/assets/plugins/html/defaults/css.rb +1 -1
- data/lib/jekyll/assets/plugins/html/defaults/favicon.rb +1 -1
- data/lib/jekyll/assets/plugins/html/defaults/img.rb +2 -2
- data/lib/jekyll/assets/plugins/html/defaults/js.rb +1 -1
- data/lib/jekyll/assets/plugins/html/defaults/vid.rb +1 -1
- data/lib/jekyll/assets/plugins/html/favicon.rb +1 -1
- data/lib/jekyll/assets/plugins/html/img.rb +2 -2
- data/lib/jekyll/assets/plugins/html/js.rb +1 -1
- data/lib/jekyll/assets/plugins/html/pic.rb +1 -1
- data/lib/jekyll/assets/plugins/html/svg.rb +1 -1
- data/lib/jekyll/assets/plugins/html/vid.rb +1 -1
- data/lib/jekyll/assets/plugins/liquid.rb +1 -1
- data/lib/jekyll/assets/plugins/magick.rb +2 -2
- data/lib/jekyll/assets/plugins/optim.rb +2 -2
- data/lib/jekyll/assets/plugins/prefixer.rb +2 -2
- data/lib/jekyll/assets/plugins/proxy/magick.rb +1 -1
- data/lib/jekyll/assets/plugins/proxy/optim.rb +1 -1
- data/lib/jekyll/assets/plugins/searcher.rb +17 -3
- data/lib/jekyll/assets/proxy.rb +1 -1
- data/lib/jekyll/assets/reader.rb +33 -0
- data/lib/jekyll/assets/tag.rb +54 -13
- data/lib/jekyll/assets/url.rb +2 -7
- data/lib/jekyll/assets/utils.rb +16 -23
- data/lib/jekyll/assets/version.rb +2 -2
- data/lib/jekyll/assets/writer.rb +46 -0
- metadata +6 -3
data/Rakefile
CHANGED
@@ -1,8 +1,40 @@
|
|
1
1
|
# Frozen-string-literal: true
|
2
|
-
# Copyright:
|
2
|
+
# Copyright: 2017 - 2018 - MIT License
|
3
|
+
# Author: Jordon Bedwell
|
3
4
|
# Encoding: utf-8
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
# --
|
7
|
+
# 🔖
|
8
|
+
# RSpec, MiniTest, Whatever.
|
9
|
+
# --
|
10
|
+
task :spec do
|
11
|
+
exec "script/test"
|
12
|
+
end
|
13
|
+
# --
|
14
|
+
# 🔖
|
15
|
+
# RSpec, MiniTest, Whatever.
|
16
|
+
# --
|
17
|
+
task :test do
|
18
|
+
exec "script/test"
|
19
|
+
end
|
20
|
+
# --
|
21
|
+
# 🔖
|
22
|
+
# @see .rubocop.yml
|
23
|
+
# Rubocop.
|
24
|
+
# --
|
25
|
+
task :rubocop do
|
26
|
+
exec "script/lint"
|
27
|
+
end
|
28
|
+
# --
|
29
|
+
# 🔖
|
30
|
+
# @see .rubocop.yml
|
31
|
+
# Rubocop.
|
32
|
+
# --
|
33
|
+
task :lint do
|
34
|
+
exec "script/lint"
|
35
|
+
end
|
36
|
+
|
37
|
+
# --
|
38
|
+
Dir.glob("script/rake.d/*.rake").each do |v|
|
39
|
+
load v
|
40
|
+
end
|
data/lib/jekyll-assets.rb
CHANGED
data/lib/jekyll/assets.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Frozen-string-literal: true
|
2
|
-
# Copyright: 2012 -
|
2
|
+
# Copyright: 2012 - 2018 - MIT License
|
3
3
|
# Encoding: utf-8
|
4
4
|
|
5
5
|
require "pathutil"
|
@@ -18,7 +18,18 @@ def require_all(*globs)
|
|
18
18
|
end
|
19
19
|
|
20
20
|
require_relative "assets/env"
|
21
|
-
Jekyll::Hooks.register
|
22
|
-
|
21
|
+
Jekyll::Hooks.register :site, :post_read, priority: 99 do |o|
|
22
|
+
unless o.sprockets
|
23
|
+
Jekyll::Assets::Env.new(o)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# --
|
28
|
+
# Post render hook.
|
29
|
+
# We need to run really early because we want to have our
|
30
|
+
# stuff block and be done just incase something else relies
|
31
|
+
# on our stuff to do their stuff. Such as reloaders.
|
32
|
+
# --
|
33
|
+
Jekyll::Hooks.register :site, :post_render, priority: 99 do |o|
|
23
34
|
o&.sprockets&.write_all
|
24
35
|
end
|
data/lib/jekyll/assets/config.rb
CHANGED
data/lib/jekyll/assets/drop.rb
CHANGED
data/lib/jekyll/assets/env.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Frozen-string-literal: true
|
2
|
-
# Copyright: 2012 -
|
2
|
+
# Copyright: 2012 - 2018 - MIT License
|
3
3
|
# Encoding: utf-8
|
4
4
|
|
5
5
|
require "pathutil"
|
@@ -14,6 +14,8 @@ require_relative "drop"
|
|
14
14
|
require_relative "version"
|
15
15
|
require_relative "filters"
|
16
16
|
require_relative "manifest"
|
17
|
+
require_relative "writer"
|
18
|
+
require_relative "reader"
|
17
19
|
require_relative "config"
|
18
20
|
require_relative "logger"
|
19
21
|
require_relative "hook"
|
@@ -32,13 +34,17 @@ module Jekyll
|
|
32
34
|
attr_reader :asset_config
|
33
35
|
attr_reader :jekyll
|
34
36
|
|
37
|
+
# --
|
38
|
+
rb_delegate :old?, to: :"self.class"
|
39
|
+
rb_delegate :old_sprockets?, {
|
40
|
+
to: :"self.class",
|
41
|
+
}
|
42
|
+
|
35
43
|
# --
|
36
44
|
def initialize(jekyll = nil)
|
37
45
|
@asset_config = Config.new(jekyll.config["assets"] ||= {})
|
38
|
-
|
39
|
-
|
40
|
-
instance_eval(&h)
|
41
|
-
end
|
46
|
+
Hook.trigger :env, :before_init do |h|
|
47
|
+
instance_eval(&h)
|
42
48
|
end
|
43
49
|
|
44
50
|
super()
|
@@ -46,6 +52,7 @@ module Jekyll
|
|
46
52
|
@assets_to_write = []
|
47
53
|
@manifest = Manifest.new(self, in_dest_dir)
|
48
54
|
@jekyll.sprockets = self
|
55
|
+
@total_time = 0.000000
|
49
56
|
@logger = Logger
|
50
57
|
@cache = nil
|
51
58
|
|
@@ -56,10 +63,8 @@ module Jekyll
|
|
56
63
|
precompile!
|
57
64
|
copy_raw!
|
58
65
|
|
59
|
-
|
60
|
-
|
61
|
-
instance_eval(&h)
|
62
|
-
end
|
66
|
+
Hook.trigger :env, :after_init do |h|
|
67
|
+
instance_eval(&h)
|
63
68
|
end
|
64
69
|
end
|
65
70
|
|
@@ -68,6 +73,30 @@ module Jekyll
|
|
68
73
|
!asset_config[:gzip]
|
69
74
|
end
|
70
75
|
|
76
|
+
# --
|
77
|
+
def find_asset(v, *a)
|
78
|
+
msg = "Searched for, and rendered #{v} in %<time>s"
|
79
|
+
out = Logger.with_timed_logging msg do
|
80
|
+
super(v, *a)
|
81
|
+
end
|
82
|
+
|
83
|
+
# We keep track.
|
84
|
+
@total_time += out[:time]
|
85
|
+
out[:result]
|
86
|
+
end
|
87
|
+
|
88
|
+
# --
|
89
|
+
def find_asset!(v, *a)
|
90
|
+
msg = "Searched for, and rendered #{v} in %<time>s"
|
91
|
+
out = Logger.with_timed_logging msg do
|
92
|
+
super(v, *a)
|
93
|
+
end
|
94
|
+
|
95
|
+
# We keep track.
|
96
|
+
@total_time += out[:time]
|
97
|
+
out[:result]
|
98
|
+
end
|
99
|
+
|
71
100
|
# --
|
72
101
|
# @note this is configurable with :caching -> :type
|
73
102
|
# Create a cache, or a null cache (if no caching) for caching.
|
@@ -118,17 +147,18 @@ module Jekyll
|
|
118
147
|
end
|
119
148
|
end
|
120
149
|
|
150
|
+
# --
|
151
|
+
class << self
|
152
|
+
alias old? old_sprockets?
|
153
|
+
end
|
154
|
+
|
121
155
|
# --
|
122
156
|
def write_all
|
123
157
|
remove_old_assets unless asset_config[:digest]
|
124
158
|
manifest.compile(*assets_to_write); @asset_to_write = []
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
true
|
159
|
+
Hook.trigger(:env, :after_write) { |h| instance_eval(&h) }
|
160
|
+
Logger.debug "took #{format(@total_time.round(2).to_s,
|
161
|
+
'%.2f')}s"
|
132
162
|
end
|
133
163
|
|
134
164
|
# ---
|
@@ -149,10 +179,13 @@ module Jekyll
|
|
149
179
|
# --
|
150
180
|
private
|
151
181
|
def enable_compression!
|
182
|
+
self.js_compressor, self.css_compressor = nil, nil
|
183
|
+
|
152
184
|
return unless asset_config[:compression]
|
153
185
|
config = asset_config[:compressors][:uglifier].symbolize_keys
|
154
186
|
self. js_compressor = Sprockets::UglifierCompressor.new(config)
|
155
|
-
self.css_compressor = :
|
187
|
+
Utils.activate("sassc") { self.css_compressor = :scssc } unless old?
|
188
|
+
self.css_compressor ||= :scss
|
156
189
|
end
|
157
190
|
|
158
191
|
# --
|
@@ -169,7 +202,7 @@ module Jekyll
|
|
169
202
|
def precompile!
|
170
203
|
assets = asset_config[:precompile]
|
171
204
|
assets.map do |v|
|
172
|
-
v !~ %r!\*! ? @assets_to_write |= [
|
205
|
+
v !~ %r!\*! ? @assets_to_write |= [v] : glob_paths(v).each do |sv|
|
173
206
|
@assets_to_write |= [sv]
|
174
207
|
end
|
175
208
|
end
|
@@ -207,7 +240,7 @@ module Jekyll
|
|
207
240
|
|
208
241
|
require_relative "map" unless old_sprockets?
|
209
242
|
Hook.register :env, :after_init, priority: 3 do
|
210
|
-
unless
|
243
|
+
unless old?
|
211
244
|
Map.register_on(self)
|
212
245
|
end
|
213
246
|
end
|
data/lib/jekyll/assets/hook.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Frozen-string-literal: true
|
2
|
-
# Copyright: 2012 -
|
2
|
+
# Copyright: 2012 - 2018 - MIT License
|
3
3
|
# Encoding: utf-8
|
4
4
|
|
5
5
|
module Jekyll
|
@@ -52,10 +52,34 @@ module Jekyll
|
|
52
52
|
2 => [],
|
53
53
|
3 => [],
|
54
54
|
},
|
55
|
+
|
56
|
+
before_read: {
|
57
|
+
1 => [],
|
58
|
+
2 => [],
|
59
|
+
3 => [],
|
60
|
+
},
|
61
|
+
|
62
|
+
after_read: {
|
63
|
+
1 => [],
|
64
|
+
2 => [],
|
65
|
+
3 => [],
|
66
|
+
},
|
67
|
+
|
68
|
+
before_write: {
|
69
|
+
1 => [],
|
70
|
+
2 => [],
|
71
|
+
3 => [],
|
72
|
+
},
|
73
|
+
|
74
|
+
after_write: {
|
75
|
+
1 => [],
|
76
|
+
2 => [],
|
77
|
+
3 => [],
|
78
|
+
},
|
55
79
|
},
|
56
80
|
|
57
81
|
liquid: {
|
58
|
-
|
82
|
+
before_render: {
|
59
83
|
1 => [],
|
60
84
|
2 => [],
|
61
85
|
3 => [],
|
@@ -110,7 +134,11 @@ module Jekyll
|
|
110
134
|
# @return [nil]
|
111
135
|
# --
|
112
136
|
def self.trigger(*point, &block)
|
113
|
-
get_point(*point)
|
137
|
+
hooks = get_point(*point)
|
138
|
+
Logger.debug "messaging hooks on #{point.last} " \
|
139
|
+
"through #{point.first}"
|
140
|
+
|
141
|
+
hooks.map do |v|
|
114
142
|
block.call(v)
|
115
143
|
end
|
116
144
|
end
|
data/lib/jekyll/assets/html.rb
CHANGED
data/lib/jekyll/assets/logger.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Frozen-string-literal: true
|
2
|
-
# Copyright: 2012 -
|
2
|
+
# Copyright: 2012 - 2018 - MIT License
|
3
3
|
# Encoding: utf-8
|
4
4
|
|
5
5
|
require "jekyll"
|
@@ -8,26 +8,68 @@ module Jekyll
|
|
8
8
|
module Assets
|
9
9
|
class Logger
|
10
10
|
PREFIX = "Assets: "
|
11
|
+
COLORS = {
|
12
|
+
error: :red,
|
13
|
+
debug: :yellow,
|
14
|
+
info: :cyan,
|
15
|
+
}.freeze
|
16
|
+
|
17
|
+
# --
|
11
18
|
def self.logger
|
12
19
|
self
|
13
20
|
end
|
14
21
|
|
15
22
|
# --
|
16
|
-
|
17
|
-
|
18
|
-
|
23
|
+
def self.with_timed_logging(msg, type: :debug)
|
24
|
+
s, t, out = Time.now, nil, yield; Logger.send(type) do
|
25
|
+
format("\n#{msg}", {
|
26
|
+
time: "#{t = Time.now - s}s",
|
27
|
+
})
|
28
|
+
end
|
29
|
+
|
30
|
+
{
|
31
|
+
result: out, time: t
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
# --
|
36
|
+
def self.err_file(file)
|
37
|
+
Jekyll.logger.error("Asset File", file)
|
38
|
+
end
|
39
|
+
|
40
|
+
# --
|
41
|
+
def self.colorize?
|
42
|
+
@color ||= begin
|
43
|
+
Jekyll.env == "development" && system("test -t 2")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# --
|
48
|
+
# Makes a logging method
|
49
|
+
# @param type [Symbol] the type of logger.
|
19
50
|
# @return nil
|
20
51
|
# --
|
21
|
-
|
22
|
-
define_singleton_method
|
23
|
-
|
24
|
-
|
52
|
+
def self.make_logger(type:)
|
53
|
+
define_singleton_method type do |m = nil, &b|
|
54
|
+
m = (b ? b.call : m).gsub(Pathutil.pwd + "/", "")
|
55
|
+
r = m =~ %r!writing\s+!i ? :debug : type
|
56
|
+
Jekyll.logger.send(r, PREFIX, m)
|
25
57
|
end
|
26
58
|
end
|
27
59
|
|
28
60
|
# --
|
29
|
-
|
30
|
-
|
61
|
+
private_class_method :make_logger
|
62
|
+
|
63
|
+
# --
|
64
|
+
# @note this is to be removed after 3.6.
|
65
|
+
# Creates self methods so that we can accept blocks.
|
66
|
+
# @param [String,Proc] message the message that to log.
|
67
|
+
# @return nil
|
68
|
+
# --
|
69
|
+
%i(warn error info debug).each do |v|
|
70
|
+
make_logger({
|
71
|
+
type: v,
|
72
|
+
})
|
31
73
|
end
|
32
74
|
end
|
33
75
|
end
|
data/lib/jekyll/assets/map.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Frozen-string-literal: true
|
2
|
-
# Copyright: 2012 -
|
2
|
+
# Copyright: 2012 - 2018 - MIT License
|
3
3
|
# Encoding: utf-8
|
4
4
|
|
5
5
|
require_relative "map/css"
|
@@ -10,7 +10,7 @@ require "pathutil"
|
|
10
10
|
module Jekyll
|
11
11
|
module Assets
|
12
12
|
module Map
|
13
|
-
NAME = "
|
13
|
+
NAME = "%<name>s.map"
|
14
14
|
DIR_NAME = "source-maps"
|
15
15
|
DIR = Pathutil.new(DIR_NAME)
|
16
16
|
EXT = ".map"
|