sprockets_uglifier_with_source_maps 1.0.0 → 1.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 +16 -1
- data/lib/sprockets_uglifier_with_source_maps/compressor.rb +26 -2
- data/lib/sprockets_uglifier_with_source_maps/railtie.rb +2 -0
- data/lib/sprockets_uglifier_with_source_maps/version.rb +1 -1
- data/{uglifier_with_source_maps.gemspec → sprockets_uglifier_with_source_maps.gemspec} +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3de26fb885769b727d3482302529e5387b87f2cb
|
4
|
+
data.tar.gz: 05e46c1acfe11a7c7da62df1c221373b12a661c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c5c1418015b92e5725cf1268dc0b31dc10cd454d7f7fecf1d97e2525e3d4cc727b70dac990c852d281e8d7c0607d0edee85296e06bc9f03d2165726a6fc7a1f
|
7
|
+
data.tar.gz: 5735157d5a94f232900da0cbc1414c2a5ba362b608b2fe81928824ebd1353aedc1d443b0722c92eab9f205a1761dd6dc33fb35f051e023e35b9fa1033d5f62ab
|
data/README.md
CHANGED
@@ -8,6 +8,7 @@ It is meant to be used as a replacement for javascript compressor.
|
|
8
8
|
Source maps are useful for debugging javascript and many errors monitoring services utilize them,
|
9
9
|
for example [Rollbar](https://rollbar.com/docs/source-maps/).
|
10
10
|
|
11
|
+
For Rails 3.2 see: https://github.com/leifcr/uglifier_with_source_maps
|
11
12
|
|
12
13
|
## Installation
|
13
14
|
|
@@ -32,7 +33,7 @@ In your Rails applications environment configuration:
|
|
32
33
|
|
33
34
|
If you need to pass options to uglifier:
|
34
35
|
|
35
|
-
config.assets.uglifier = {output: {beautify: true, indent_level: 2}, compress: {angular: true}}
|
36
|
+
config.assets.uglifier = {output: {beautify: true, indent_level: 2}, compress: {angular: true}}
|
36
37
|
|
37
38
|
Your assets will be built as normal, also maps and concatenated sources will be provided as well in `public/assets/maps` and `public/assets/sources`.
|
38
39
|
These subdirs may be configured:
|
@@ -40,6 +41,20 @@ These subdirs may be configured:
|
|
40
41
|
config.assets.sourcemaps_prefix = 'my_maps'
|
41
42
|
config.assets.uncompressed_prefix = 'my_sources'
|
42
43
|
|
44
|
+
You can optionally gzip your maps and sources as well (since these files live outside of the assets pipeline this won't happen automatically):
|
45
|
+
|
46
|
+
config.assets.sourcemaps_gzip = true
|
47
|
+
|
48
|
+
By default maps and sources are defined relatively and will be fetched from the same domain your js file is served from. If you are using a CDN you may not want this - instead you might want to use a direct link to your site so you can more easily implement IP or Basic Auth protection:
|
49
|
+
|
50
|
+
# set to a url - js will be served from 'http://cdn.host.com' but source map links will use 'http://some.host.com/'
|
51
|
+
|
52
|
+
config.assets.sourcemaps_url_root = 'http://some.host.com/'
|
53
|
+
|
54
|
+
If you use CloudFront you might want to generate a signed url for these files that limits access based on IP address. You can do that by setting sourcemaps_url_root to a Proc and handling your URL signing there:
|
55
|
+
|
56
|
+
# using a Proc - see the AWS SDK docs for everything required to make this work
|
57
|
+
config.assets.sourcemaps_url_root = Proc.new { |file| MyApp.generate_a_signed_url_for file }
|
43
58
|
|
44
59
|
## Example
|
45
60
|
|
@@ -6,10 +6,11 @@ module SprocketsUglifierWithSM
|
|
6
6
|
compressed_data, sourcemap = Uglifier.new(options).compile_with_map(data)
|
7
7
|
|
8
8
|
uncompressed_filename = File.join(Rails.application.config.assets.prefix, Rails.application.config.assets.uncompressed_prefix, "#{context.logical_path}-#{digest(data)}.js")
|
9
|
+
uncompressed_url = filename_to_url uncompressed_filename
|
9
10
|
|
10
11
|
sourcemap = JSON.parse(sourcemap)
|
11
12
|
sourcemap['file'] = "#{context.logical_path}.js"
|
12
|
-
sourcemap['sources'] = [
|
13
|
+
sourcemap['sources'] = [uncompressed_url]
|
13
14
|
sourcemap = sourcemap.to_json
|
14
15
|
|
15
16
|
sourcemap_filename = File.join(Rails.application.config.assets.prefix, Rails.application.config.assets.sourcemaps_prefix, "#{context.logical_path}-#{digest(sourcemap)}.js.map")
|
@@ -20,11 +21,34 @@ module SprocketsUglifierWithSM
|
|
20
21
|
File.open(sourcemap_path, 'w') { |f| f.write sourcemap }
|
21
22
|
File.open(uncompressed_path, 'w') { |f| f.write data }
|
22
23
|
|
23
|
-
|
24
|
+
if Rails.application.config.assets.sourcemaps_gzip
|
25
|
+
[sourcemap_path,uncompressed_path ].each do |f|
|
26
|
+
Zlib::GzipWriter.open("#{f}.gz") do |gz|
|
27
|
+
gz.mtime = File.mtime(f)
|
28
|
+
gz.orig_name = f
|
29
|
+
gz.write IO.binread(f)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
sourcemap_url = filename_to_url sourcemap_filename
|
35
|
+
compressed_data.concat "\n//# sourceMappingURL=#{sourcemap_url}\n"
|
24
36
|
end
|
25
37
|
|
26
38
|
private
|
27
39
|
|
40
|
+
def filename_to_url(filename)
|
41
|
+
url_root = Rails.application.config.assets.sourcemaps_url_root
|
42
|
+
case url_root
|
43
|
+
when FalseClass
|
44
|
+
filename
|
45
|
+
when Proc
|
46
|
+
url_root.call filename
|
47
|
+
else
|
48
|
+
File.join url_root.to_s, filename
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
28
52
|
def digest(io)
|
29
53
|
Rails.application.assets.digest.update(io).hexdigest
|
30
54
|
end
|
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.email = ['alerticus@gmail.com']
|
10
10
|
spec.summary = %q{Create javascript source maps for your Rails 4.2 applications}
|
11
11
|
spec.description = %q{sprockets_uglifier_with_source_maps creates source maps for your javascript assets along with their compression using uglifier.}
|
12
|
-
spec.homepage = 'https://github.com/AlexanderPavlenko/
|
12
|
+
spec.homepage = 'https://github.com/AlexanderPavlenko/sprockets_uglifier_with_source_maps'
|
13
13
|
spec.license = 'MIT'
|
14
14
|
|
15
15
|
spec.files = `git ls-files -z`.split("\x0")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sprockets_uglifier_with_source_maps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Pavlenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sprockets-rails
|
@@ -83,8 +83,8 @@ files:
|
|
83
83
|
- lib/sprockets_uglifier_with_source_maps/compressor.rb
|
84
84
|
- lib/sprockets_uglifier_with_source_maps/railtie.rb
|
85
85
|
- lib/sprockets_uglifier_with_source_maps/version.rb
|
86
|
-
-
|
87
|
-
homepage: https://github.com/AlexanderPavlenko/
|
86
|
+
- sprockets_uglifier_with_source_maps.gemspec
|
87
|
+
homepage: https://github.com/AlexanderPavlenko/sprockets_uglifier_with_source_maps
|
88
88
|
licenses:
|
89
89
|
- MIT
|
90
90
|
metadata: {}
|
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
104
|
version: '0'
|
105
105
|
requirements: []
|
106
106
|
rubyforge_project:
|
107
|
-
rubygems_version: 2.
|
107
|
+
rubygems_version: 2.4.5
|
108
108
|
signing_key:
|
109
109
|
specification_version: 4
|
110
110
|
summary: Create javascript source maps for your Rails 4.2 applications
|