importmap-rails 1.2.3 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +22 -106
- data/app/helpers/importmap/importmap_tags_helper.rb +3 -20
- data/lib/importmap/commands.rb +11 -19
- data/lib/importmap/engine.rb +0 -1
- data/lib/importmap/map.rb +3 -3
- data/lib/importmap/version.rb +1 -1
- data/lib/install/config/importmap.rb +1 -1
- data/lib/tasks/importmap_tasks.rake +1 -1
- metadata +3 -7
- data/app/assets/javascripts/es-module-shims.js +0 -926
- data/app/assets/javascripts/es-module-shims.js.map +0 -1
- data/app/assets/javascripts/es-module-shims.min.js +0 -3
- data/lib/shim.js +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2982ac627b45a58939dff654237280b6edb07d0d5868ebff97d58cb06393847e
|
4
|
+
data.tar.gz: '09f7c5943268424c73125ce1c936547c721bf5369de92fbe4ac1e02353d2ce08'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27baab095f5369dde0e0b52f6fdcee6978f507f69826d3d97fd1a21d764dc7bee3d44f1052287b16304908ec1c28adcfce413498caa2d0dd0d8fc163fac13b44
|
7
|
+
data.tar.gz: b99c733c5dcf6cf37f455ece71f549a60a97f23e9142b78a438d9a26e7d59948d64ba1e5735520dff60384b1da765e6c9cb790b170a47661f94f5446f0f37f11
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
With this approach you'll ship many small JavaScript files instead of one big JavaScript file. Thanks to HTTP/2 that no longer carries a material performance penalty during the initial transport, and in fact offers substantial benefits over the long run due to better caching dynamics. Whereas before any change to any JavaScript file included in your big bundle would invalidate the cache for the whole bundle, now only the cache for that single file is invalidated.
|
6
6
|
|
7
|
-
|
7
|
+
[Import maps are supported natively in all major, modern browsers](https://caniuse.com/?search=importmap). If you need to work with legacy browsers without native support, you can explore using [the shim available](https://github.com/guybedford/es-module-shims).
|
8
8
|
|
9
9
|
|
10
10
|
## Installation
|
@@ -16,6 +16,15 @@ Importmap for Rails is automatically included in Rails 7+ for new applications,
|
|
16
16
|
|
17
17
|
Note: In order to use JavaScript from Rails frameworks like Action Cable, Action Text, and Active Storage, you must be running Rails 7.0+. This was the first version that shipped with ESM compatible builds of these libraries.
|
18
18
|
|
19
|
+
You can pin those libraries manually by relying on the compiled versions included in Rails like this:
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
pin "@rails/actioncable", to: "actioncable.esm.js"
|
23
|
+
pin "@rails/activestorage", to: "activestorage.esm.js"
|
24
|
+
pin "@rails/actiontext", to: "actiontext.esm.js"
|
25
|
+
pin "trix"
|
26
|
+
```
|
27
|
+
|
19
28
|
## How do importmaps work?
|
20
29
|
|
21
30
|
At their core, importmaps are essentially a string substitution for what are referred to as "bare module specifiers". A "bare module specifier" looks like this: `import React from "react"`. This is not compatible with the ES Module loader spec. Instead, to be ESM compatible, you must provide 1 of the 3 following types of specifiers:
|
@@ -57,7 +66,7 @@ import React from "react"
|
|
57
66
|
|
58
67
|
The import map is setup through `Rails.application.importmap` via the configuration in `config/importmap.rb`. This file is automatically reloaded in development upon changes, but note that you must restart the server if you remove pins and need them gone from the rendered importmap or list of preloads.
|
59
68
|
|
60
|
-
This import map is inlined in the `<head>` of your application layout using `<%= javascript_importmap_tags %>`, which will setup the JSON configuration inside a `<script type="importmap">` tag.
|
69
|
+
This import map is inlined in the `<head>` of your application layout using `<%= javascript_importmap_tags %>`, which will setup the JSON configuration inside a `<script type="importmap">` tag. Then the application entrypoint is imported via `<script type="module">import "application"</script>`. That logical entrypoint, `application`, is mapped in the importmap script tag to the file `app/javascript/application.js`.
|
61
70
|
|
62
71
|
It's in `app/javascript/application.js` you setup your application by importing any of the modules that have been defined in the import map. You can use the full ESM functionality of importing any particular export of the modules or everything.
|
63
72
|
|
@@ -65,12 +74,11 @@ It makes sense to use logical names that match the package names used by npm, su
|
|
65
74
|
|
66
75
|
### Local modules
|
67
76
|
|
68
|
-
If you want to import local js module files from `app/javascript/src` or other sub-folders of `app/javascript` (such as `channels`), you must pin these to be able to import them.
|
69
|
-
You can use `pin_all_from` to pick all files in a specific folder, so you don't have to `pin` each module individually.
|
77
|
+
If you want to import local js module files from `app/javascript/src` or other sub-folders of `app/javascript` (such as `channels`), you must pin these to be able to import them. You can use `pin_all_from` to pick all files in a specific folder, so you don't have to `pin` each module individually.
|
70
78
|
|
71
79
|
```rb
|
72
80
|
# config/importmap.rb
|
73
|
-
pin_all_from 'app/javascript/src
|
81
|
+
pin_all_from 'app/javascript/src', under: 'src', to: 'src'
|
74
82
|
```
|
75
83
|
|
76
84
|
The `:to` parameter is only required if you want to change the destination logical import name. If you drop the :to option, you must place the :under option directly after the first parameter.
|
@@ -87,91 +95,12 @@ Note: Sprockets used to serve assets (albeit without filename digests) it couldn
|
|
87
95
|
|
88
96
|
## Using npm packages via JavaScript CDNs
|
89
97
|
|
90
|
-
Importmap for Rails
|
98
|
+
Importmap for Rails downloads and vendors your npm package dependencies via JavaScript CDNs that provide pre-compiled distribution versions.
|
91
99
|
|
92
100
|
You can use the `./bin/importmap` command that's added as part of the install to pin, unpin, or update npm packages in your import map. This command uses an API from [JSPM.org](https://jspm.org) to resolve your package dependencies efficiently, and then add the pins to your `config/importmap.rb` file. It can resolve these dependencies from JSPM itself, but also from other CDNs, like [unpkg.com](https://unpkg.com) and [jsdelivr.com](https://www.jsdelivr.com).
|
93
101
|
|
94
|
-
It works like so:
|
95
|
-
|
96
|
-
```bash
|
97
|
-
./bin/importmap pin react react-dom
|
98
|
-
Pinning "react" to https://ga.jspm.io/npm:react@17.0.2/index.js
|
99
|
-
Pinning "react-dom" to https://ga.jspm.io/npm:react-dom@17.0.2/index.js
|
100
|
-
Pinning "object-assign" to https://ga.jspm.io/npm:object-assign@4.1.1/index.js
|
101
|
-
Pinning "scheduler" to https://ga.jspm.io/npm:scheduler@0.20.2/index.js
|
102
|
-
|
103
|
-
./bin/importmap json
|
104
|
-
|
105
|
-
{
|
106
|
-
"imports": {
|
107
|
-
"application": "/assets/application-37f365cbecf1fa2810a8303f4b6571676fa1f9c56c248528bc14ddb857531b95.js",
|
108
|
-
"react": "https://ga.jspm.io/npm:react@17.0.2/index.js",
|
109
|
-
"react-dom": "https://ga.jspm.io/npm:react-dom@17.0.2/index.js",
|
110
|
-
"object-assign": "https://ga.jspm.io/npm:object-assign@4.1.1/index.js",
|
111
|
-
"scheduler": "https://ga.jspm.io/npm:scheduler@0.20.2/index.js"
|
112
|
-
}
|
113
|
-
}
|
114
|
-
```
|
115
|
-
|
116
|
-
As you can see, the two packages react and react-dom resolve to a total of four dependencies, when resolved via the jspm default.
|
117
|
-
|
118
|
-
Now you can use these in your application.js entrypoint like you would any other module:
|
119
|
-
|
120
|
-
```js
|
121
|
-
import React from "react"
|
122
|
-
import ReactDOM from "react-dom"
|
123
|
-
```
|
124
|
-
|
125
|
-
You can also designate a specific version to pin:
|
126
|
-
|
127
|
-
```bash
|
128
|
-
./bin/importmap pin react@17.0.1
|
129
|
-
Pinning "react" to https://ga.jspm.io/npm:react@17.0.1/index.js
|
130
|
-
Pinning "object-assign" to https://ga.jspm.io/npm:object-assign@4.1.1/index.js
|
131
|
-
```
|
132
|
-
|
133
|
-
Or even remove pins:
|
134
|
-
|
135
|
-
```bash
|
136
|
-
./bin/importmap unpin react
|
137
|
-
Unpinning "react"
|
138
|
-
Unpinning "object-assign"
|
139
|
-
```
|
140
|
-
|
141
|
-
If you pin a package that has already been pinned, it'll be updated inline, along with its dependencies.
|
142
|
-
|
143
|
-
You can control the environment of the package for packages with separate "production" (the default) and "development" builds:
|
144
|
-
|
145
102
|
```bash
|
146
|
-
./bin/importmap pin react
|
147
|
-
Pinning "react" to https://ga.jspm.io/npm:react@17.0.2/dev.index.js
|
148
|
-
Pinning "object-assign" to https://ga.jspm.io/npm:object-assign@4.1.1/index.js
|
149
|
-
```
|
150
|
-
|
151
|
-
You can also pick an alternative, supported CDN provider when pinning, like `unpkg` or `jsdelivr` (`jspm` is the default):
|
152
|
-
|
153
|
-
```bash
|
154
|
-
./bin/importmap pin react --from jsdelivr
|
155
|
-
Pinning "react" to https://cdn.jsdelivr.net/npm/react@17.0.2/index.js
|
156
|
-
```
|
157
|
-
|
158
|
-
Remember, though, that if you switch a pin from one provider to another, you may have to clean up dependencies added by the first provider that isn't used by the second provider.
|
159
|
-
|
160
|
-
Run `./bin/importmap` to see all options.
|
161
|
-
|
162
|
-
Note that this command is merely a convenience wrapper to resolving logical package names to CDN URLs. You can also just lookup the CDN URLs yourself, and then pin those. For example, if you wanted to use Skypack for React, you could just add the following to `config/importmap.rb`:
|
163
|
-
|
164
|
-
```ruby
|
165
|
-
pin "react", to: "https://cdn.skypack.dev/react"
|
166
|
-
```
|
167
|
-
|
168
|
-
|
169
|
-
## Downloading vendor files from the JavaScript CDN
|
170
|
-
|
171
|
-
If you don't want to use a JavaScript CDN in production, you can also download vendored files from the CDN when you're setting up your pins:
|
172
|
-
|
173
|
-
```bash
|
174
|
-
./bin/importmap pin react --download
|
103
|
+
./bin/importmap pin react
|
175
104
|
Pinning "react" to vendor/react.js via download from https://ga.jspm.io/npm:react@17.0.2/index.js
|
176
105
|
Pinning "object-assign" to vendor/object-assign.js via download from https://ga.jspm.io/npm:object-assign@4.1.1/index.js
|
177
106
|
```
|
@@ -185,33 +114,30 @@ pin "object-assign" # https://ga.jspm.io/npm:object-assign@4.1.1/index.js
|
|
185
114
|
|
186
115
|
The packages are downloaded to `vendor/javascript`, which you can check into your source control, and they'll be available through your application's own asset pipeline serving.
|
187
116
|
|
188
|
-
If you later wish to remove a downloaded pin
|
117
|
+
If you later wish to remove a downloaded pin:
|
189
118
|
|
190
119
|
```bash
|
191
|
-
./bin/importmap unpin react
|
120
|
+
./bin/importmap unpin react
|
192
121
|
Unpinning and removing "react"
|
193
122
|
Unpinning and removing "object-assign"
|
194
123
|
```
|
195
124
|
|
196
|
-
Just like with a normal pin, you can also update a pin by running the `pin --download` command again.
|
197
|
-
|
198
|
-
|
199
125
|
## Preloading pinned modules
|
200
126
|
|
201
|
-
To avoid the waterfall effect where the browser has to load one file after another before it can get to the deepest nested import, importmap-rails
|
127
|
+
To avoid the waterfall effect where the browser has to load one file after another before it can get to the deepest nested import, importmap-rails uses [modulepreload links](https://developers.google.com/web/updates/2017/12/modulepreload) by default. If you don't want to preload a dependency, because you want to load it on-demand for efficiency, append `preload: false` to the pin.
|
202
128
|
|
203
129
|
Example:
|
204
130
|
|
205
131
|
```ruby
|
206
132
|
# config/importmap.rb
|
207
|
-
pin "@github/hotkey", to: "
|
208
|
-
pin "md5",
|
133
|
+
pin "@github/hotkey", to: "@github--hotkey.js" # file lives in vendor/javascript/@github--hotkey.js
|
134
|
+
pin "md5", preload: false # file lives in vendor/javascript/md5.js
|
209
135
|
|
210
136
|
# app/views/layouts/application.html.erb
|
211
137
|
<%= javascript_importmap_tags %>
|
212
138
|
|
213
139
|
# will include the following link before the importmap is setup:
|
214
|
-
<link rel="modulepreload" href="
|
140
|
+
<link rel="modulepreload" href="/assets/javascript/@github--hotkey.js">
|
215
141
|
...
|
216
142
|
```
|
217
143
|
|
@@ -260,7 +186,7 @@ Pin your js file:
|
|
260
186
|
```rb
|
261
187
|
# config/importmap.rb
|
262
188
|
# ... other pins...
|
263
|
-
pin "checkout"
|
189
|
+
pin "checkout", preload: false
|
264
190
|
```
|
265
191
|
|
266
192
|
Import your module on the specific page. Note: you'll likely want to use a `content_for` block on the specifc page/partial, then yield it in your layout.
|
@@ -310,16 +236,6 @@ module MyEngine
|
|
310
236
|
end
|
311
237
|
```
|
312
238
|
|
313
|
-
## Expected errors from using the es-module-shim
|
314
|
-
|
315
|
-
While import maps are native in Chrome, Edge, and Firefox, they need a shim in other browsers that'll produce a JavaScript console error like `TypeError: Module specifier, 'application' does not start with "/", "./", or "../".`. This error is normal and does not have any user-facing consequences.
|
316
|
-
|
317
|
-
In Firefox. when opening the browser console, the asm.js module lexer build will run in unoptimized mode due to the debugger attaching. This gives a warning message `"asm.js type error: Disabled because no suitable wasm compiler is available"` which is as expected. When the console is closed again, the asm.js optimizations are fully applied, and this can even be verified with the console open by disabling the debugger in `about:config` and reloading the page.
|
318
|
-
|
319
|
-
## Turning off the shim
|
320
|
-
|
321
|
-
Under certain circumstances, like running system tests using chromedriver under CI (which may be resource constrained and trigger errors in certain cases), you may want to explicitly turn off including the shim. You can do this by calling the bulk tag helper with `javascript_importmap_tags("application", shim: false)`. Thus you can pass in something like `shim: !ENV["CI"]`. If you want, and are sure you're not doing any full-page caching, you can also connect this directive to a user agent check (using a gem like `useragent`) to check whether the browser is chrome/edge 89+/firefox 108+. But you really shouldn't have to, as the shim is designed to gracefully work with natively compatible drivers.
|
322
|
-
|
323
239
|
## Checking for outdated or vulnerable packages
|
324
240
|
|
325
241
|
Importmap for Rails provides two commands to check your pinned packages:
|
@@ -1,13 +1,11 @@
|
|
1
1
|
module Importmap::ImportmapTagsHelper
|
2
2
|
# Setup all script tags needed to use an importmap-powered entrypoint (which defaults to application.js)
|
3
|
-
def javascript_importmap_tags(entry_point = "application",
|
3
|
+
def javascript_importmap_tags(entry_point = "application", importmap: Rails.application.importmap)
|
4
4
|
safe_join [
|
5
5
|
javascript_inline_importmap_tag(importmap.to_json(resolver: self)),
|
6
6
|
javascript_importmap_module_preload_tags(importmap),
|
7
|
-
(javascript_importmap_shim_nonce_configuration_tag if shim),
|
8
|
-
(javascript_importmap_shim_tag if shim),
|
9
7
|
javascript_import_module_tag(entry_point)
|
10
|
-
]
|
8
|
+
], "\n"
|
11
9
|
end
|
12
10
|
|
13
11
|
# Generate an inline importmap tag using the passed `importmap_json` JSON string.
|
@@ -17,25 +15,10 @@ module Importmap::ImportmapTagsHelper
|
|
17
15
|
type: "importmap", "data-turbo-track": "reload", nonce: request&.content_security_policy_nonce
|
18
16
|
end
|
19
17
|
|
20
|
-
# Configure es-modules-shim with nonce support if the application is using a content security policy.
|
21
|
-
def javascript_importmap_shim_nonce_configuration_tag
|
22
|
-
if request&.content_security_policy
|
23
|
-
tag.script({ nonce: request.content_security_policy_nonce }.to_json.html_safe,
|
24
|
-
type: "esms-options", nonce: request.content_security_policy_nonce)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# Include the es-modules-shim needed to make importmaps work in browsers without native support (like Firefox + Safari).
|
29
|
-
def javascript_importmap_shim_tag(minimized: true)
|
30
|
-
javascript_include_tag minimized ? "es-module-shims.min.js" : "es-module-shims.js",
|
31
|
-
async: true, "data-turbo-track": "reload", nonce: request&.content_security_policy_nonce
|
32
|
-
end
|
33
|
-
|
34
18
|
# Import a named JavaScript module(s) using a script-module tag.
|
35
19
|
def javascript_import_module_tag(*module_names)
|
36
20
|
imports = Array(module_names).collect { |m| %(import "#{m}") }.join("\n")
|
37
|
-
tag.script imports.html_safe,
|
38
|
-
type: "module", nonce: request&.content_security_policy_nonce
|
21
|
+
tag.script imports.html_safe, type: "module", nonce: request&.content_security_policy_nonce
|
39
22
|
end
|
40
23
|
|
41
24
|
# Link tags for preloading all modules marked as preload: true in the `importmap`
|
data/lib/importmap/commands.rb
CHANGED
@@ -12,18 +12,12 @@ class Importmap::Commands < Thor
|
|
12
12
|
desc "pin [*PACKAGES]", "Pin new packages"
|
13
13
|
option :env, type: :string, aliases: :e, default: "production"
|
14
14
|
option :from, type: :string, aliases: :f, default: "jspm"
|
15
|
-
option :download, type: :boolean, aliases: :d, default: false
|
16
15
|
def pin(*packages)
|
17
16
|
if imports = packager.import(*packages, env: options[:env], from: options[:from])
|
18
17
|
imports.each do |package, url|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
pin = packager.vendored_pin_for(package, url)
|
23
|
-
else
|
24
|
-
puts %(Pinning "#{package}" to #{url})
|
25
|
-
pin = packager.pin_for(package, url)
|
26
|
-
end
|
18
|
+
puts %(Pinning "#{package}" to #{packager.vendor_path}/#{package}.js via download from #{url})
|
19
|
+
packager.download(package, url)
|
20
|
+
pin = packager.vendored_pin_for(package, url)
|
27
21
|
|
28
22
|
if packager.packaged?(package)
|
29
23
|
gsub_file("config/importmap.rb", /^pin "#{package}".*$/, pin, verbose: false)
|
@@ -39,17 +33,11 @@ class Importmap::Commands < Thor
|
|
39
33
|
desc "unpin [*PACKAGES]", "Unpin existing packages"
|
40
34
|
option :env, type: :string, aliases: :e, default: "production"
|
41
35
|
option :from, type: :string, aliases: :f, default: "jspm"
|
42
|
-
option :download, type: :boolean, aliases: :d, default: false
|
43
36
|
def unpin(*packages)
|
44
37
|
if imports = packager.import(*packages, env: options[:env], from: options[:from])
|
45
38
|
imports.each do |package, url|
|
46
39
|
if packager.packaged?(package)
|
47
|
-
|
48
|
-
puts %(Unpinning and removing "#{package}")
|
49
|
-
else
|
50
|
-
puts %(Unpinning "#{package}")
|
51
|
-
end
|
52
|
-
|
40
|
+
puts %(Unpinning and removing "#{package}")
|
53
41
|
packager.remove(package)
|
54
42
|
end
|
55
43
|
end
|
@@ -103,6 +91,11 @@ class Importmap::Commands < Thor
|
|
103
91
|
end
|
104
92
|
end
|
105
93
|
|
94
|
+
desc "update", "Update outdated package pins"
|
95
|
+
def update
|
96
|
+
pin npm.outdated_packages.map(&:name)
|
97
|
+
end
|
98
|
+
|
106
99
|
desc "packages", "Print out packages with version numbers"
|
107
100
|
def packages
|
108
101
|
puts npm.packages_with_versions.map { |x| x.join(' ') }
|
@@ -133,14 +126,13 @@ class Importmap::Commands < Thor
|
|
133
126
|
row.each_with_index.map{ |iterand, index| [lengths[index] || 0, iterand.to_s.length].max }
|
134
127
|
end
|
135
128
|
|
136
|
-
|
129
|
+
divider = "|" + (column_sizes.map { |s| "-" * (s + 2) }.join('|')) + '|'
|
137
130
|
array.each_with_index do |row, row_number|
|
138
131
|
row = row.fill(nil, row.size..(column_sizes.size - 1))
|
139
132
|
row = row.each_with_index.map { |v, i| v.to_s + " " * (column_sizes[i] - v.to_s.length) }
|
140
133
|
puts "| " + row.join(" | ") + " |"
|
141
|
-
puts
|
134
|
+
puts divider if row_number == 0
|
142
135
|
end
|
143
|
-
puts head
|
144
136
|
end
|
145
137
|
end
|
146
138
|
|
data/lib/importmap/engine.rb
CHANGED
@@ -43,7 +43,6 @@ module Importmap
|
|
43
43
|
|
44
44
|
initializer "importmap.assets" do |app|
|
45
45
|
if app.config.respond_to?(:assets)
|
46
|
-
app.config.assets.precompile += %w( es-module-shims.js es-module-shims.min.js es-module-shims.js.map )
|
47
46
|
app.config.assets.paths << Rails.root.join("app/javascript")
|
48
47
|
app.config.assets.paths << Rails.root.join("vendor/javascript")
|
49
48
|
end
|
data/lib/importmap/map.rb
CHANGED
@@ -25,12 +25,12 @@ class Importmap::Map
|
|
25
25
|
self
|
26
26
|
end
|
27
27
|
|
28
|
-
def pin(name, to: nil, preload:
|
28
|
+
def pin(name, to: nil, preload: true)
|
29
29
|
clear_cache
|
30
30
|
@packages[name] = MappedFile.new(name: name, path: to || "#{name}.js", preload: preload)
|
31
31
|
end
|
32
32
|
|
33
|
-
def pin_all_from(dir, under: nil, to: nil, preload:
|
33
|
+
def pin_all_from(dir, under: nil, to: nil, preload: true)
|
34
34
|
clear_cache
|
35
35
|
@directories[dir] = MappedDir.new(dir: dir, under: under, path: to, preload: preload)
|
36
36
|
end
|
@@ -149,7 +149,7 @@ class Importmap::Map
|
|
149
149
|
end
|
150
150
|
|
151
151
|
def find_javascript_files_in_tree(path)
|
152
|
-
Dir[path.join("**/*.js{,m}")].collect { |file| Pathname.new(file) }.select(&:file?)
|
152
|
+
Dir[path.join("**/*.js{,m}")].sort.collect { |file| Pathname.new(file) }.select(&:file?)
|
153
153
|
end
|
154
154
|
|
155
155
|
def absolute_root_of(path)
|
data/lib/importmap/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
namespace :importmap do
|
2
2
|
desc "Setup Importmap for the app"
|
3
3
|
task :install do
|
4
|
-
system
|
4
|
+
system RbConfig.ruby, "./bin/rails", "app:template", "LOCATION=#{File.expand_path("../install/install.rb", __dir__)}"
|
5
5
|
end
|
6
6
|
end
|
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:
|
4
|
+
version: 2.0.0
|
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:
|
11
|
+
date: 2024-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -61,9 +61,6 @@ files:
|
|
61
61
|
- MIT-LICENSE
|
62
62
|
- README.md
|
63
63
|
- Rakefile
|
64
|
-
- app/assets/javascripts/es-module-shims.js
|
65
|
-
- app/assets/javascripts/es-module-shims.js.map
|
66
|
-
- app/assets/javascripts/es-module-shims.min.js
|
67
64
|
- app/helpers/importmap/importmap_tags_helper.rb
|
68
65
|
- lib/importmap-rails.rb
|
69
66
|
- lib/importmap/commands.rb
|
@@ -76,7 +73,6 @@ files:
|
|
76
73
|
- lib/install/bin/importmap
|
77
74
|
- lib/install/config/importmap.rb
|
78
75
|
- lib/install/install.rb
|
79
|
-
- lib/shim.js
|
80
76
|
- lib/tasks/importmap_tasks.rake
|
81
77
|
homepage: https://github.com/rails/importmap-rails
|
82
78
|
licenses:
|
@@ -99,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
95
|
- !ruby/object:Gem::Version
|
100
96
|
version: '0'
|
101
97
|
requirements: []
|
102
|
-
rubygems_version: 3.4.
|
98
|
+
rubygems_version: 3.4.14
|
103
99
|
signing_key:
|
104
100
|
specification_version: 4
|
105
101
|
summary: Use ESM with importmap to manage modern JavaScript in Rails without transpiling
|