importmap-rails 0.5.1 → 0.5.2
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 +27 -1
- data/app/helpers/importmap/importmap_tags_helper.rb +7 -4
- data/lib/importmap/map.rb +1 -1
- data/lib/importmap/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19ceaae3202d5f82c6ef2b17bfc294b3330a792a809c575eb0f959bd0f57aba4
|
4
|
+
data.tar.gz: 136f545bb38d4076dd6314bb2d35cb706d64fe2903f552c0ce1bbbf977549794
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 332685ead888c7ea3c0de2187a6c34fbb0966e0806f31d6fa953483508623bdaec66add67f1a176fc74411530c76c2e1cfb465d1a95a5ce9b6a9163d57d24ecc
|
7
|
+
data.tar.gz: 1a8c37e746483245f90d8f3e763c321dca4bf363fdcd1a44802af48582637abafe05ac3af90fbd53e1cae1a612334a3ce9e15b06d4c11be9cea838448475732d
|
data/README.md
CHANGED
@@ -38,7 +38,7 @@ You can use the `./bin/importmap` command that's added as part of the install to
|
|
38
38
|
It works like so:
|
39
39
|
|
40
40
|
```bash
|
41
|
-
|
41
|
+
./bin/importmap pin react react-dom
|
42
42
|
Pinning "react" to https://ga.jspm.io/npm:react@17.0.2/index.js
|
43
43
|
Pinning "react-dom" to https://ga.jspm.io/npm:react-dom@17.0.2/index.js
|
44
44
|
Pinning "object-assign" to https://ga.jspm.io/npm:object-assign@4.1.1/index.js
|
@@ -141,6 +141,32 @@ pin "md5", to: "https://cdn.jsdelivr.net/npm/md5@2.3.0/md5.js", preload: false
|
|
141
141
|
...
|
142
142
|
```
|
143
143
|
|
144
|
+
## Composing import maps
|
145
|
+
|
146
|
+
By default, Rails loads import map definition from the application's `config/importmap.rb` to the `Importmap::Map` object available at `Rails.application.config.importmap`.
|
147
|
+
|
148
|
+
You can combine multiple import maps by drawing their definitions onto the `Rails.application.config.importmap`. For example, appending import maps defined in Rails engines:
|
149
|
+
|
150
|
+
```ruby
|
151
|
+
# my_engine/lib/my_engine/engine.rb
|
152
|
+
|
153
|
+
module MyEngine
|
154
|
+
class Engine < ::Rails::Engine
|
155
|
+
# ...
|
156
|
+
initializer "my-engine.importmap" do |app|
|
157
|
+
app.config.importmap.draw(Engine.root.join("config/importmap.rb"))
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
```
|
162
|
+
|
163
|
+
And pinning JavaScript modules from the engine:
|
164
|
+
|
165
|
+
```ruby
|
166
|
+
# my_engine/config/importmap.rb
|
167
|
+
|
168
|
+
pin_all_from File.expand_path("../app/assets/javascripts", __dir__)
|
169
|
+
```
|
144
170
|
|
145
171
|
## Caching the import map and preload modules
|
146
172
|
|
@@ -12,7 +12,8 @@ module Importmap::ImportmapTagsHelper
|
|
12
12
|
# Generate an inline importmap tag using the passed `importmap_json` JSON string.
|
13
13
|
# By default, `Rails.application.config.importmap.to_json(resolver: self)` is used.
|
14
14
|
def javascript_inline_importmap_tag(importmap_json = Rails.application.config.importmap.to_json(resolver: self))
|
15
|
-
tag.script
|
15
|
+
tag.script importmap_json.html_safe,
|
16
|
+
type: "importmap", "data-turbo-track": "reload", nonce: content_security_policy_nonce
|
16
17
|
end
|
17
18
|
|
18
19
|
# Include the es-module-shim needed to make importmaps work in browsers without native support (like Firefox + Safari).
|
@@ -20,9 +21,11 @@ module Importmap::ImportmapTagsHelper
|
|
20
21
|
javascript_include_tag "es-module-shims", async: true, "data-turbo-track": "reload"
|
21
22
|
end
|
22
23
|
|
23
|
-
# Import a named JavaScript module using a script-module tag.
|
24
|
-
def javascript_import_module_tag(
|
25
|
-
|
24
|
+
# Import a named JavaScript module(s) using a script-module tag.
|
25
|
+
def javascript_import_module_tag(*module_names)
|
26
|
+
imports = Array(module_names).collect { |m| %(import "#{m}") }.join("\n")
|
27
|
+
tag.script imports.html_safe,
|
28
|
+
type: "module", nonce: content_security_policy_nonce
|
26
29
|
end
|
27
30
|
|
28
31
|
# Link tags for preloading all modules marked as preload: true in the `importmap`
|
data/lib/importmap/map.rb
CHANGED
@@ -11,7 +11,7 @@ class Importmap::Map
|
|
11
11
|
def draw(path = nil, &block)
|
12
12
|
if path && File.exist?(path)
|
13
13
|
begin
|
14
|
-
instance_eval(File.read(path))
|
14
|
+
instance_eval(File.read(path), path.to_s)
|
15
15
|
rescue Exception => e
|
16
16
|
Rails.logger.error "Unable to parse import map from #{path}: #{e.message}"
|
17
17
|
raise "Unable to parse import map from #{path}: #{e.message}"
|
data/lib/importmap/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: importmap-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|