jekyll-js-converter 0.0.5 → 0.0.6
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/lib/jekyll-js-converter.rb +16 -0
- data/lib/jekyll-js-converter/version.rb +1 -1
- data/lib/jekyll/converters/js.rb +65 -20
- data/lib/jekyll/js_source_map_page.rb +29 -0
- metadata +4 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f975186d3b4d088fb3ee18595c6b6f43b1226defb8f44d06e2683663c60a611
|
4
|
+
data.tar.gz: fd7abf2439a6a69133cdd2c0e55ed3f30fa8d8e2dc95698d1b1314cb934e4a60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '086d6cef9f35f63debb0ff5a0bfead0c11cc69e45f1e543ba3191cd6a619a7d3f7a45b8ebe465348de2ee2bec04b3d2d1155f7f52645fbca394ce589f91f1941'
|
7
|
+
data.tar.gz: ee944a5a249415e7308a67488a6d2e0bc44a7f2a71153301444da9dd18265c03d0529be0b2d02125acc751dd06c08b3973c1aa39a2df0ea0b1888ccd51636a82
|
data/lib/jekyll-js-converter.rb
CHANGED
@@ -7,4 +7,20 @@ module JekyllJsConverter
|
|
7
7
|
@javascript_path ||= path_for '_javascript'
|
8
8
|
end
|
9
9
|
end
|
10
|
+
|
11
|
+
Jekyll::Hooks.register :pages, :pre_render do |page|
|
12
|
+
if page.is_a?(Jekyll::Page)
|
13
|
+
page.converters.each do |converter|
|
14
|
+
converter.associate_page(page) if converter.is_a?(Jekyll::Converters::Js)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
Jekyll::Hooks.register :pages, :post_render do |page|
|
20
|
+
if page.is_a?(Jekyll::Page)
|
21
|
+
page.converters.each do |converter|
|
22
|
+
converter.dissociate_page(page) if converter.is_a?(Jekyll::Converters::Js)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
10
26
|
end
|
data/lib/jekyll/converters/js.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'uglifier'
|
2
|
+
require 'jekyll/js_source_map_page'
|
2
3
|
|
3
4
|
module Jekyll
|
4
5
|
module Converters
|
@@ -8,21 +9,16 @@ module Jekyll
|
|
8
9
|
safe true
|
9
10
|
priority :low
|
10
11
|
|
11
|
-
def
|
12
|
-
@
|
13
|
-
|
12
|
+
def associate_page(page)
|
13
|
+
@page = page
|
14
|
+
@site = @page.site
|
15
|
+
@source_map_page = JsSourceMapPage.new(@page)
|
14
16
|
end
|
15
17
|
|
16
|
-
def
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
def output_ext(ext)
|
21
|
-
'.js'
|
22
|
-
end
|
23
|
-
|
24
|
-
def safe?
|
25
|
-
!!@config['safe']
|
18
|
+
def dissociate_page(page)
|
19
|
+
@page = nil
|
20
|
+
@site = nil
|
21
|
+
@source_map_page = nil
|
26
22
|
end
|
27
23
|
|
28
24
|
def javascript_config
|
@@ -60,21 +56,66 @@ module Jekyll
|
|
60
56
|
end
|
61
57
|
end
|
62
58
|
|
59
|
+
def matches(ext)
|
60
|
+
ext =~ /^\.js$/i
|
61
|
+
end
|
62
|
+
|
63
|
+
def output_ext(ext)
|
64
|
+
'.js'
|
65
|
+
end
|
66
|
+
|
67
|
+
def safe?
|
68
|
+
!!@config['safe']
|
69
|
+
end
|
70
|
+
|
63
71
|
def convert(content)
|
64
|
-
|
65
|
-
Jekyll::Utils.
|
66
|
-
|
67
|
-
|
72
|
+
if generate_source_map?
|
73
|
+
config = Jekyll::Utils.symbolize_hash_keys(
|
74
|
+
Jekyll::Utils.deep_merge_hashes(
|
75
|
+
{ :uglifer => {
|
76
|
+
:source_map => {
|
77
|
+
:map_url => @source_map_page.name,
|
78
|
+
:sources_content => true,
|
79
|
+
:filename => @page.name
|
80
|
+
}
|
81
|
+
}
|
82
|
+
},
|
83
|
+
javascript_config
|
84
|
+
)
|
85
|
+
)
|
86
|
+
|
87
|
+
uglified, source_map = Uglifier.new(config[:uglifer]).compile_with_map(insert_imports(content))
|
88
|
+
|
89
|
+
@source_map_page.source_map(source_map)
|
90
|
+
@site.pages << @source_map_page
|
91
|
+
|
92
|
+
uglified
|
93
|
+
else
|
94
|
+
config = Jekyll::Utils.symbolize_hash_keys(
|
95
|
+
Jekyll::Utils.deep_merge_hashes(
|
96
|
+
{ :uglifer => {} },
|
97
|
+
javascript_config
|
98
|
+
)
|
68
99
|
)
|
69
|
-
)
|
70
100
|
|
71
|
-
|
101
|
+
Uglifier.new(config[:uglifer]).compile(insert_imports(content))
|
102
|
+
end
|
72
103
|
end
|
73
104
|
|
74
105
|
private
|
75
106
|
|
107
|
+
def generate_source_map?
|
108
|
+
if @page.nil? || source_map_option.eql?(:never)
|
109
|
+
false
|
110
|
+
elsif source_map_option.eql?(:always)
|
111
|
+
true
|
112
|
+
else
|
113
|
+
:development == source_map_option == Jekyll.env.to_sym
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
76
117
|
def insert_imports(content)
|
77
|
-
content.enum_for(:scan,
|
118
|
+
content.enum_for(:scan, /^\/\/=\s*(\w+)\s+([\w\/\\\-\.:]+)\W*$/).map {
|
78
119
|
{ directive: Regexp.last_match[1],
|
79
120
|
path: Regexp.last_match[2],
|
80
121
|
insert_at: Regexp.last_match.end(0) }
|
@@ -109,6 +150,10 @@ module Jekyll
|
|
109
150
|
|
110
151
|
content
|
111
152
|
end
|
153
|
+
|
154
|
+
def source_map_option
|
155
|
+
javascript_config.fetch('source_map', :always).to_sym
|
156
|
+
end
|
112
157
|
end
|
113
158
|
end
|
114
159
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Jekyll
|
2
|
+
class JsSourceMapPage < Page
|
3
|
+
def initialize(js_page)
|
4
|
+
@site = js_page.site
|
5
|
+
@dir = js_page.dir
|
6
|
+
@data = js_page.data
|
7
|
+
@name = js_page.basename + '.js.map'
|
8
|
+
|
9
|
+
process(@name)
|
10
|
+
Jekyll::Hooks.trigger :pages, :post_init, self
|
11
|
+
end
|
12
|
+
|
13
|
+
def source_map(map)
|
14
|
+
self.content = map
|
15
|
+
end
|
16
|
+
|
17
|
+
def ext
|
18
|
+
'.map'
|
19
|
+
end
|
20
|
+
|
21
|
+
def asset_file?
|
22
|
+
true
|
23
|
+
end
|
24
|
+
|
25
|
+
def inspect
|
26
|
+
"#<#{self.class} @name=#{name.inspect}>"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-js-converter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Susco
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-03-
|
11
|
+
date: 2021-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: jekyll
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 4.2.0
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 4.2.0
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: uglifier
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -103,6 +89,7 @@ files:
|
|
103
89
|
- lib/jekyll-js-converter.rb
|
104
90
|
- lib/jekyll-js-converter/version.rb
|
105
91
|
- lib/jekyll/converters/js.rb
|
92
|
+
- lib/jekyll/js_source_map_page.rb
|
106
93
|
homepage: https://github.com/dsusco/jekyll-js-converter
|
107
94
|
licenses:
|
108
95
|
- MIT
|
@@ -122,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
109
|
- !ruby/object:Gem::Version
|
123
110
|
version: '0'
|
124
111
|
requirements: []
|
125
|
-
rubygems_version: 3.
|
112
|
+
rubygems_version: 3.1.4
|
126
113
|
signing_key:
|
127
114
|
specification_version: 4
|
128
115
|
summary: A JavaScript converter for Jekyll.
|