jekyll-assets 3.0.7 → 3.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b782c8280d7d3a50234be8ed6923a652fd4fc64a9d48a73c0a6149ba488233ad
4
- data.tar.gz: c3ee8170a33b679ff744325d5a2edde5fb28185cb54ebf8b804e24990a1dd4a1
3
+ metadata.gz: 639668c433fd9e421070ad3440a0f5122302ac2cbccb63044ad82114bab51e36
4
+ data.tar.gz: 9fc98306dff4d217d4d0e09a32aa0a35f858125029b39e62b75eab6a7ed661b4
5
5
  SHA512:
6
- metadata.gz: 988839d356b82ff5487241eda8889fbb7cdcfc510f58369b41af37af503500099e1bd359a3f4909e13388804140294474c026080e2340bd3352c825ffb238276
7
- data.tar.gz: e4e3b85799a51f19575f1532c93f4871f47eea6121ae05b20dab5f2d3c0b79a3f04ca5b76b17d29d7959fc1fb24ce8a21d9eb2ba0b7c3bc9f60ccb8d30c71f28
6
+ metadata.gz: 1ff42694cde71c8521ef7f03e2f2fdf8cebb9513257f2ee9a18c0c61b55d5656c217ebbef80b30f068995f63f4fe7fea482dd1698b9188bf49c7dc654e4d202b
7
+ data.tar.gz: dd946a1a0015b3397e860e98133dc692f43d9e9bfd35ce7c15001b396e6c0cf1a6164bc5d58a54d259662ad288be7386f391200a7a6014033738f1dc86859c94
data/Gemfile CHANGED
@@ -20,7 +20,7 @@ group :development do
20
20
  group :test do
21
21
  gem "simplecov", require: false
22
22
  gem "luna-rspec-formatters", require: false
23
- gem "rubocop", require: false
23
+ gem "rubocop", "0.52", require: false
24
24
  end
25
25
  end
26
26
 
@@ -39,4 +39,5 @@ group :optionals do
39
39
  gem "babel-transpiler", require: false
40
40
  gem "bootstrap", require: false
41
41
  gem "sassc", require: false
42
+ gem "crass", require: false
42
43
  end
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  [![Code Climate](https://img.shields.io/codeclimate/maintainability/envygeeks/jekyll-assets.svg?style=for-the-badge)](https://codeclimate.com/github/envygeeks/jekyll-assets/maintainability)
2
2
  [![Code Climate](https://img.shields.io/codeclimate/c/envygeeks/jekyll-assets.svg?style=for-the-badge)](https://codeclimate.com/github/envygeeks/jekyll-assets/coverage)
3
3
  [![Travis CI](https://img.shields.io/travis/envygeeks/jekyll-assets/master.svg?style=for-the-badge)](https://travis-ci.org/envygeeks/jekyll-assets)
4
- [![Donate](https://img.shields.io/badge/-DONATE-yellow.svg?style=for-the-badge)](https://www.paypal.com/donate/?token=2YE-4wLE2dSgtPaQqTlQgcD2BvKv_tkHUD7GJYs4OskLI0l6XFEAKpNc5rIG6-bAeMFdom)
4
+ [![Donate](https://img.shields.io/badge/-DONATE-yellow.svg?style=for-the-badge)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LKGZAWXLZ8ZPG)
5
5
  ![Gem Version](https://img.shields.io/gem/v/jekyll-assets.svg?style=for-the-badge)
6
6
  ![Gem DL](https://img.shields.io/gem/dt/jekyll-assets.svg?style=for-the-badge)
7
7
 
@@ -358,13 +358,14 @@ We have basic support for WebComponents when using Sprockets `~> 4.0.0.beta`, th
358
358
 
359
359
  ## Hooks
360
360
 
361
- | Point | Name | Instance | Args |
362
- | --------- | ----------------- | -------- | ------------------- |
363
- | `:env` | `:before_init` | ✔ | ✗ |
364
- | `:env` | `:after_init` | ✔ | ✗ |
365
- | `:env` | `:after_write` | ✔ | ✗ |
366
- | `:config` | `:before_merge` | ✗ | `Config{}` |
367
- | `asset` | `:before_compile` | ✗ | `Asset`, `Manifest` |
361
+ | Point | Name | Instance | Args |
362
+ | ---| --- | --- | --- |
363
+ | `:env` | `:before_init` | ✔ | ✗ |
364
+ | `:env` | `:after_init` | ✔ | ✗ |
365
+ | `:env` | `:after_write` | ✔ | ✗ |
366
+ | `:config` | `:before_merge` | ✗ | `Config{}` |
367
+ | `:asset` | `:before_compile` | ✗ | `Asset`, `Manifest` |
368
+ | `:asset` | `:after_compression` | ✗ | input{}, output{}, type=*/* |
368
369
 
369
370
  ### Example
370
371
 
@@ -402,6 +403,13 @@ end
402
403
  ```
403
404
 
404
405
  ## Default Plugins
406
+ ### Google Closure Alternates
407
+ ```
408
+ gem "crass"
409
+ ```
410
+
411
+ Once crass is added, we will detect vendor prefixes, and add `/* @alternate */` to them, with or without compression enabled, and with protections against compression stripping.
412
+
405
413
  ### Font Awesome
406
414
 
407
415
  ```ruby
@@ -444,6 +452,11 @@ html {
444
452
  }
445
453
  ```
446
454
 
455
+ ```scss
456
+ //=require _bootstrap.css
457
+ //=require bootstrap/_reboot.css
458
+ ```
459
+
447
460
  ### ImageMagick
448
461
 
449
462
  ```ruby
@@ -518,3 +531,53 @@ assets:
518
531
  | ------ | -------------------------- | --------------- |
519
532
  | `@doc` | `Nokogiri:: XML::Document` | `image/svg+xml` |
520
533
  | `@doc` | `Nokogiri::HTML::Document` | `image/*` |
534
+
535
+ ## Migrating from Earlier Versions
536
+ ### Configuration
537
+
538
+ *Before*
539
+
540
+ ```yaml
541
+ cdn: https://example.com
542
+ ```
543
+
544
+ *After*
545
+
546
+ ```yaml
547
+ cdn:
548
+ url: https://example.com
549
+ ```
550
+
551
+ ### Images/CSS/JS
552
+
553
+ *Before*
554
+
555
+ ```liquid
556
+ {% css css.css %}
557
+ {% img image.jpg width:60 class:image %}
558
+ {% js js.js %}
559
+ ```
560
+
561
+ *After*
562
+
563
+ ```liquid
564
+ {% asset css.css %}
565
+ {% asset image.jpg width=60 class=image %}
566
+ {% asset js.js %}
567
+ ```
568
+
569
+ ### Custom Tags
570
+
571
+ *Before*
572
+
573
+ ```liquid
574
+ <link rel="apple-touch-icon-precomposed" href="{% asset_path icon.png %}">
575
+ <link rel="apple-touch-icon-precomposed" href="{% asset_data icon.png %}">
576
+ ```
577
+
578
+ *After*
579
+
580
+ ```liquid
581
+ <link rel="apple-touch-icon-precomposed" href="{% asset icon.png @path %}">
582
+ <link rel="apple-touch-icon-precomposed" href="{% asset icon.png @data %}">
583
+ ```
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  # Frozen-string-literal: true
2
2
  # Copyright: 2017 - 2018 - MIT License
3
+ # Source: https://github.com/envygeeks/devfiles
3
4
  # Author: Jordon Bedwell
4
5
  # Encoding: utf-8
5
6
 
@@ -1,6 +1,5 @@
1
- # rubocop:disable Naming/FileName
2
- # Copyright: 2012 - 2018 - MIT License
3
1
  # Frozen-string-literal: true
2
+ # Copyright: 2012 - 2018 - MIT License
4
3
  # Encoding: utf-8
5
4
 
6
5
  require_relative "jekyll/assets"
@@ -0,0 +1,32 @@
1
+ # Frozen-string-literal: true
2
+ # Copyright: 2017 - 2018 - MIT License
3
+ # Author: Jordon Bedwell
4
+ # Encoding: utf-8
5
+
6
+ if defined?(Sprockets::SasscCompressor)
7
+ module Jekyll
8
+ module Assets
9
+ module Compressors
10
+ class SassC < Sprockets::SasscCompressor
11
+ def call(input)
12
+ out = super(input)
13
+ Hook.trigger :asset, :after_compression do |h|
14
+ h.call(input, out, "text/css")
15
+ end
16
+ out
17
+ end
18
+ end
19
+
20
+ # --
21
+ Sprockets.register_compressor "text/css", :assets_sassc, SassC
22
+ Hook.register :env, :after_init, priority: 3 do |e|
23
+ e.css_compressor = nil
24
+ next unless e.asset_config[:compression]
25
+ Utils.activate("sassc") do
26
+ e.css_compressor = :assets_sassc
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,30 @@
1
+ # Frozen-string-literal: true
2
+ # Copyright: 2017 - 2018 - MIT License
3
+ # Author: Jordon Bedwell
4
+ # Encoding: utf-8
5
+
6
+ module Jekyll
7
+ module Assets
8
+ module Compressors
9
+ class Scss < Sprockets::SassCompressor
10
+ def call(input)
11
+ out = super(input)
12
+ Hook.trigger :asset, :after_compression do |h|
13
+ h.call(input, out, "text/css")
14
+ end
15
+ out
16
+ end
17
+ end
18
+
19
+ # --
20
+ Sprockets.register_compressor "text/css", :assets_scss, Scss
21
+ Hook.register :env, :after_init, priority: 3 do |e|
22
+ next if Utils.activate("sassc") && !Utils.old_sprockets?
23
+
24
+ e.css_compressor = nil
25
+ next unless e.asset_config[:compression]
26
+ e.css_compressor = :assets_scss
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ # Frozen-string-literal: true
2
+ # Copyright: 2017 - 2018 - MIT License
3
+ # Author: Jordon Bedwell
4
+ # Encoding: utf-8
5
+
6
+ module Jekyll
7
+ module Assets
8
+ module Compressors
9
+ class Uglify < Sprockets::UglifierCompressor
10
+ def call(input)
11
+ out = super(input)
12
+ Hook.trigger :asset, :after_compression do |h|
13
+ h.call(input, out, "application/javascript")
14
+ end
15
+ out
16
+ end
17
+ end
18
+
19
+ # rubocop:disable Metrics/LineLength
20
+ Sprockets.register_compressor "application/javascript", :assets_uglify, Uglify
21
+ Hook.register :env, :after_init, priority: 3 do |e|
22
+ e.js_compressor = nil
23
+ next unless e.asset_config[:compression]
24
+ if Utils.javascript?
25
+ e.js_compressor = :assets_uglify
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -24,7 +24,7 @@ module Jekyll
24
24
  compressors: {
25
25
  uglifier: {
26
26
  comments: false,
27
- harmony: true,
27
+ harmony: Utils.new_uglifier?,
28
28
  },
29
29
  },
30
30
 
@@ -24,9 +24,8 @@ module Jekyll
24
24
  })
25
25
  end
26
26
 
27
- rtn = rtn.sort_by(&:internal?)
28
27
  ida = HashWithIndifferentAccess.new
29
- rtn.each_with_object(ida) do |v, h|
28
+ rtn.sort { |v| v.internal? ? 1 : - 1 }.each_with_object(ida) do |v, h|
30
29
  h.deep_merge!(v.static)
31
30
  end
32
31
  end
@@ -21,6 +21,7 @@ require_relative "logger"
21
21
  require_relative "hook"
22
22
  require_relative "tag"
23
23
  require_relative "url"
24
+ require_all "compressors/*"
24
25
 
25
26
  module Jekyll
26
27
  module Assets
@@ -34,12 +35,6 @@ module Jekyll
34
35
  attr_reader :asset_config
35
36
  attr_reader :jekyll
36
37
 
37
- # --
38
- rb_delegate :old?, to: :"self.class"
39
- rb_delegate :old_sprockets?, {
40
- to: :"self.class",
41
- }
42
-
43
38
  # --
44
39
  def initialize(jekyll = nil)
45
40
  @asset_config = Config.new(jekyll.config["assets"] ||= {})
@@ -57,7 +52,6 @@ module Jekyll
57
52
  @cache = nil
58
53
 
59
54
  setup_sources!
60
- enable_compression!
61
55
  ignore_caches!
62
56
  setup_drops!
63
57
  precompile!
@@ -140,18 +134,6 @@ module Jekyll
140
134
  end
141
135
  end
142
136
 
143
- # --
144
- def self.old_sprockets?
145
- @old_sprockets ||= begin
146
- Gem::Version.new(Sprockets::VERSION) < Gem::Version.new("4.0.beta")
147
- end
148
- end
149
-
150
- # --
151
- class << self
152
- alias old? old_sprockets?
153
- end
154
-
155
137
  # --
156
138
  def write_all
157
139
  remove_old_assets unless asset_config[:digest]
@@ -176,18 +158,6 @@ module Jekyll
176
158
  jekyll.config["exclude"].uniq!
177
159
  end
178
160
 
179
- # --
180
- private
181
- def enable_compression!
182
- self.js_compressor, self.css_compressor = nil, nil
183
-
184
- return unless asset_config[:compression]
185
- config = asset_config[:compressors][:uglifier].symbolize_keys
186
- self. js_compressor = Sprockets::UglifierCompressor.new(config)
187
- Utils.activate("sassc") { self.css_compressor = :scssc } unless old?
188
- self.css_compressor ||= :scss
189
- end
190
-
191
161
  # --
192
162
  def copy_raw!
193
163
  raw_precompiles.each do |v|
@@ -238,13 +208,6 @@ module Jekyll
238
208
  require_all "plugins/html/*"
239
209
  require_relative "context"
240
210
 
241
- require_relative "map" unless old_sprockets?
242
- Hook.register :env, :after_init, priority: 3 do
243
- unless old?
244
- Map.register_on(self)
245
- end
246
- end
247
-
248
211
  # --
249
212
  # @see https://github.com/rails/sprockets/pull/523
250
213
  # Registers a few MimeTypes since I don't think
@@ -35,6 +35,7 @@ module Jekyll
35
35
  # --
36
36
  def self.requirements
37
37
  @requirements ||= {
38
+ internal: false,
38
39
  args: [], types: [
39
40
  #
40
41
  ]
@@ -11,6 +11,21 @@ module Jekyll
11
11
  end
12
12
  end
13
13
 
14
+ # --
15
+ class Point
16
+ attr_accessor :block, :priority
17
+
18
+ # --
19
+ # A hook point only holds data for later, it
20
+ # really serves no other purpose for now, other
21
+ # than to make live easier for handling hooks
22
+ # and their sorting, later in stream.
23
+ # --
24
+ def initialize(priority, &block)
25
+ @priority, @block = priority, block
26
+ end
27
+ end
28
+
14
29
  # --
15
30
  class << self
16
31
  attr_reader :points
@@ -19,71 +34,26 @@ module Jekyll
19
34
  # --
20
35
  @points = {
21
36
  env: {
22
- before_init: {
23
- 1 => [],
24
- 2 => [],
25
- 3 => [],
26
- },
27
-
28
- after_init: {
29
- 1 => [],
30
- 2 => [],
31
- 3 => [],
32
- },
33
-
34
- after_write: {
35
- 1 => [],
36
- 2 => [],
37
- 3 => [],
38
- },
37
+ before_init: [],
38
+ after_init: [],
39
+ after_write: [],
39
40
  },
40
41
 
41
42
  config: {
42
- before_merge: {
43
- 1 => [],
44
- 2 => [],
45
- 3 => [],
46
- },
43
+ before_merge: [],
47
44
  },
48
45
 
49
46
  asset: {
50
- before_compile: {
51
- 1 => [],
52
- 2 => [],
53
- 3 => [],
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
- },
47
+ before_compile: [],
48
+ before_read: [],
49
+ after_read: [],
50
+ after_compression: [],
51
+ before_write: [],
52
+ after_write: [],
79
53
  },
80
54
 
81
55
  liquid: {
82
- before_render: {
83
- 1 => [],
84
- 2 => [],
85
- 3 => [],
86
- },
56
+ before_render: [],
87
57
  },
88
58
  }
89
59
 
@@ -97,16 +67,7 @@ module Jekyll
97
67
  raise ArgumentError, "only give 2 points" if point.count > 2
98
68
 
99
69
  @points[point[0]] ||= {}
100
- @points[point[0]][point[1]] ||= {
101
- #
102
- }
103
-
104
- 1.upto(3).each do |i|
105
- @points[point[0]][point[1]][i] ||= [
106
- #
107
- ]
108
- end
109
-
70
+ @points[point[0]][point[1]] ||= {}
110
71
  @points
111
72
  end
112
73
 
@@ -118,11 +79,8 @@ module Jekyll
118
79
  # --
119
80
  def self.get_point(*point)
120
81
  check_point(*point)
121
-
122
82
  @points[point[0]][point[1]]
123
- .each_with_object([]) do |(_, v), a|
124
- a.concat(v)
125
- end
83
+ .sort_by(&:priority)
126
84
  end
127
85
 
128
86
  # --
@@ -139,7 +97,7 @@ module Jekyll
139
97
  "through #{point.first}"
140
98
 
141
99
  hooks.map do |v|
142
- block.call(v)
100
+ block.call(v.block)
143
101
  end
144
102
  end
145
103
 
@@ -150,17 +108,12 @@ module Jekyll
150
108
  # @note this is what plugins should use.
151
109
  # @return [nil]
152
110
  # --
153
- def self.register(*point, priority: 2, &block)
154
- if priority > 3
155
- raise ArgumentError,
156
- "priority must be between 1 and 3"
157
- end
158
-
111
+ def self.register(*point, priority: 48, &block)
159
112
  check_point(*point)
113
+ point_ = Point.new(priority, &block)
160
114
  out = @points[point[0]]
161
115
  out = out[point[1]]
162
- out = out[priority]
163
- out << block
116
+ out << point_
164
117
  end
165
118
 
166
119
  # --