jsbundling-rails 1.1.1 → 1.3.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 +24 -15
- data/lib/install/Procfile.dev +1 -1
- data/lib/install/bun/Procfile.dev +2 -0
- data/lib/install/bun/bun.config.js +37 -0
- data/lib/install/bun/install.rb +30 -0
- data/lib/install/dev +4 -1
- data/lib/install/esbuild/install.rb +4 -1
- data/lib/install/install.rb +2 -12
- data/lib/install/install_procfile.rb +9 -0
- data/lib/install/package.json +1 -1
- data/lib/install/rollup/install.rb +3 -0
- data/lib/install/rollup/rollup.config.js +1 -1
- data/lib/install/webpack/install.rb +3 -0
- data/lib/install/webpack/webpack.config.js +1 -0
- data/lib/jsbundling/version.rb +1 -1
- data/lib/tasks/jsbundling/build.rake +67 -11
- data/lib/tasks/jsbundling/install.rake +6 -6
- metadata +9 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5eb0a7f2f82b82a508d4640babe1980234db73e9f97f2bcdd08db417ad1dfee
|
4
|
+
data.tar.gz: 9ba266bcf549a314d0968705626021566c993a1c7e771ecf886627c307c0300a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9f055b3a8a676d91e3fb421e757a5e81e6b01b4c165c8f45f889de1a2c0bbdcf574c6934d17c7b39006ad05a87b52be9e5c4429f0265ddd87888129fc472c3c
|
7
|
+
data.tar.gz: a07320167dc646b5b9792e8d02c770b2e4c40283a5219baf92cfca6b29ae04c54b2d2ab7e0c995514b4bf646b092272f9a3133cd46b0571ebd9190d57682a3d2
|
data/README.md
CHANGED
@@ -1,33 +1,40 @@
|
|
1
1
|
# JavaScript Bundling for Rails
|
2
2
|
|
3
|
-
Use [esbuild](https://esbuild.github.io), [rollup.js](https://rollupjs.org), or [Webpack](https://webpack.js.org) to bundle your JavaScript, then deliver it via the asset pipeline in Rails. This gem provides installers to get you going with the bundler of your choice in a new Rails application, and a convention to use `app/assets/builds` to hold your bundled output as artifacts that are not checked into source control (the installer adds this directory to `.gitignore` by default).
|
3
|
+
Use [Bun](https://bun.sh), [esbuild](https://esbuild.github.io), [rollup.js](https://rollupjs.org), or [Webpack](https://webpack.js.org) to bundle your JavaScript, then deliver it via the asset pipeline in Rails. This gem provides installers to get you going with the bundler of your choice in a new Rails application, and a convention to use `app/assets/builds` to hold your bundled output as artifacts that are not checked into source control (the installer adds this directory to `.gitignore` by default).
|
4
4
|
|
5
5
|
You develop using this approach by running the bundler in watch mode in a terminal with `yarn build --watch` (and your Rails server in another, if you're not using something like [puma-dev](https://github.com/puma/puma-dev)). You can also use `./bin/dev`, which will start both the Rails server and the JS build watcher (along with a CSS build watcher, if you're also using `cssbundling-rails`).
|
6
6
|
|
7
7
|
Whenever the bundler detects changes to any of the JavaScript files in your project, it'll bundle `app/javascript/application.js` into `app/assets/builds/application.js` (and all other entry points configured). You can refer to the build output in your layout using the standard asset pipeline approach with `<%= javascript_include_tag "application", defer: true %>`.
|
8
8
|
|
9
|
-
When you deploy your application to production, the `javascript:build` task attaches to the `assets:precompile` task to ensure that all your package dependencies from `package.json` have been installed via yarn, and then runs
|
9
|
+
When you deploy your application to production, the `javascript:build` task attaches to the `assets:precompile` task to ensure that all your package dependencies from `package.json` have been installed via your javascript package manager ([bun](https://bun.sh), [npm](https://www.npmjs.com), [pnpm](https://pnpm.io), or [yarn](https://yarnpkg.com)), and then runs the build script defined in `package.json` to process all the entry points, as it would in development. The latter files are then picked up by the asset pipeline, digested, and copied into public/assets, as any other asset pipeline file.
|
10
10
|
|
11
|
-
This also happens in testing where the bundler attaches to the `test:prepare` task to ensure the JavaScript has been bundled before testing commences.
|
12
|
-
|
13
|
-
If your testing library of choice does not define a `test:prepare` Rake task, ensure that your test suite runs `javascript:build` to bundle JavaScript before testing commences.
|
11
|
+
This also happens in testing where the bundler attaches to the `test:prepare` task to ensure the JavaScript has been bundled before testing commences. If your testing library of choice does not call the `test:prepare` Rake task, ensure that your test suite runs `javascript:build` to bundle JavaScript before testing commences.
|
14
12
|
|
15
13
|
That's it!
|
16
14
|
|
17
|
-
You can configure your bundler options in the `build` script in `package.json` or via the installer-generated `rollup.config.js` for rollup.js or `webpack.config.json` for Webpack (esbuild does not have a default configuration format, and we don't intend to use esbuild as an API in order to hack around it).
|
15
|
+
You can configure your bundler options in the `build` script in `package.json` or via the installer-generated `bun.config.js` for Bun, `rollup.config.js` for rollup.js or `webpack.config.json` for Webpack (esbuild does not have a default configuration format, and we don't intend to use esbuild as an API in order to hack around it).
|
18
16
|
|
19
17
|
If you're already using [`webpacker`](https://github.com/rails/webpacker) and you're wondering if you should migrate to `jsbundling-rails`, have a look at [the high-level comparison](./docs/comparison_with_webpacker.md). If you're looking to migrate from webpacker, see the [migration guide](https://github.com/rails/jsbundling-rails/blob/main/docs/switch_from_webpacker.md).
|
20
18
|
|
21
19
|
If you want to use webpack features like [code splitting](https://webpack.js.org/guides/code-splitting/) and [hot module reloading](https://webpack.js.org/concepts/hot-module-replacement/), consider using the official fork of `webpacker`, [`shakapacker`](https://github.com/shakacode/shakapacker).
|
22
20
|
|
23
21
|
## Installation
|
22
|
+
If you are installing esbuild, rollup, or webpack, you must already have node installed on your system. You will also need npx version 7.1.0 or later.
|
23
|
+
|
24
|
+
If you are using Bun, then you must have the Bun runtime already installed on
|
25
|
+
your system.
|
26
|
+
|
27
|
+
To get started run:
|
24
28
|
|
25
|
-
|
29
|
+
```
|
30
|
+
./bin/bundle add jsbundling-rails
|
31
|
+
```
|
26
32
|
|
27
|
-
|
28
|
-
|
33
|
+
```
|
34
|
+
./bin/rails javascript:install:[bun|esbuild|rollup|webpack]
|
35
|
+
```
|
29
36
|
|
30
|
-
Or, in Rails 7+, you can preconfigure your new application to use a specific bundler with `rails new myapp -j [esbuild|rollup|webpack]`.
|
37
|
+
Or, in Rails 7+, you can preconfigure your new application to use a specific bundler with `rails new myapp -j [bun|esbuild|rollup|webpack]`.
|
31
38
|
|
32
39
|
|
33
40
|
## FAQ
|
@@ -36,20 +43,22 @@ Or, in Rails 7+, you can preconfigure your new application to use a specific bun
|
|
36
43
|
|
37
44
|
The default build script for esbuild relies on the `app/javascript/*.*` glob pattern to compile multiple entrypoints automatically. This glob pattern is not available by default on Windows, so you need to change the build script in `package.json` to manually list the entrypoints you wish to compile.
|
38
45
|
|
39
|
-
### Why does esbuild overwrite my application.css?
|
46
|
+
### Why does bun/esbuild overwrite my application.css?
|
40
47
|
|
41
|
-
If you [import CSS](https://esbuild.github.io/content-types/#css-from-js) in your application.js while using esbuild, you'll be creating both an `app/assets/builds/application.js` _and_ `app/assets/builds/application.css` file when bundling. The latter can conflict with the `app/assets/builds/application.css` produced by [cssbundling-rails](https://github.com/rails/cssbundling-rails). The solution is to either change the output file for esbuild (and the references for that) or for cssbundling. Both are specified in `package.json`.
|
48
|
+
If you [import CSS](https://esbuild.github.io/content-types/#css-from-js) in your application.js while using esbuild or Bun, you'll be creating both an `app/assets/builds/application.js` _and_ `app/assets/builds/application.css` file when bundling. The latter can conflict with the `app/assets/builds/application.css` produced by [cssbundling-rails](https://github.com/rails/cssbundling-rails). The solution is to either change the output file for bun/esbuild (and the references for that) or for cssbundling. Both are specified in `package.json`.
|
42
49
|
|
43
50
|
### How can I reference static assets in JavaScript code?
|
44
51
|
|
45
52
|
Suppose you have an image `app/javascript/images/example.png` that you need to reference in frontend code built with esbuild.
|
46
53
|
|
47
54
|
1. Create the image at `app/javascript/images/example.png`.
|
48
|
-
1. In `package.json`, under `"scripts"` and `"build"`, add the
|
49
|
-
|
55
|
+
1. In `package.json`, under `"scripts"` and `"build"`, add the additional arguments:
|
56
|
+
* `--loader:.png=file` This instructs esbuild to copy png files to the build directory.
|
57
|
+
* `--asset-names=[name]-[hash].digested` This tells esbuild to append `.digested` to the file name so that sprockets or propshaft will not append an additional digest hash to the file.
|
58
|
+
1. When esbuild runs, it will copy the png file to something like `app/assets/builds/example-5SRKKTLZ.digested.png`.
|
50
59
|
1. In frontend code, the image is available for import by its original name: `import Example from "../images/example.png"`.
|
51
60
|
1. The image itself can now be referenced by its imported name, e.g. in React, `<img src={Example} />`.
|
52
|
-
1. The path of the image resolves to `/assets/example-5SRKKTLZ.png`, which is served by the asset pipeline.
|
61
|
+
1. The path of the image resolves to `/assets/example-5SRKKTLZ.digested.png`, which is served by the asset pipeline.
|
53
62
|
|
54
63
|
## License
|
55
64
|
|
data/lib/install/Procfile.dev
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
web:
|
1
|
+
web: env RUBY_DEBUG_OPEN=true bin/rails server
|
2
2
|
js: yarn build --watch
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import path from 'path';
|
2
|
+
import fs from 'fs';
|
3
|
+
|
4
|
+
const config = {
|
5
|
+
sourcemap: "external",
|
6
|
+
entrypoints: ["app/javascript/application.js"],
|
7
|
+
outdir: path.join(process.cwd(), "app/assets/builds"),
|
8
|
+
};
|
9
|
+
|
10
|
+
const build = async (config) => {
|
11
|
+
const result = await Bun.build(config);
|
12
|
+
|
13
|
+
if (!result.success) {
|
14
|
+
if (process.argv.includes('--watch')) {
|
15
|
+
console.error("Build failed");
|
16
|
+
for (const message of result.logs) {
|
17
|
+
console.error(message);
|
18
|
+
}
|
19
|
+
return;
|
20
|
+
} else {
|
21
|
+
throw new AggregateError(result.logs, "Build failed");
|
22
|
+
}
|
23
|
+
}
|
24
|
+
};
|
25
|
+
|
26
|
+
(async () => {
|
27
|
+
await build(config);
|
28
|
+
|
29
|
+
if (process.argv.includes('--watch')) {
|
30
|
+
fs.watch(path.join(process.cwd(), "app/javascript"), { recursive: true }, (eventType, filename) => {
|
31
|
+
console.log(`File changed: ${filename}. Rebuilding...`);
|
32
|
+
build(config);
|
33
|
+
});
|
34
|
+
} else {
|
35
|
+
process.exit(0);
|
36
|
+
}
|
37
|
+
})();
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
apply "#{__dir__}/../install.rb"
|
4
|
+
|
5
|
+
if Rails.root.join("Procfile.dev").exist?
|
6
|
+
append_to_file "Procfile.dev", "js: bun run build --watch\n"
|
7
|
+
else
|
8
|
+
say "Add default Procfile.dev"
|
9
|
+
copy_file "#{__dir__}/Procfile.dev", "Procfile.dev"
|
10
|
+
|
11
|
+
say "Ensure foreman is installed"
|
12
|
+
run "gem install foreman"
|
13
|
+
end
|
14
|
+
|
15
|
+
say "Add default bun.config.js"
|
16
|
+
copy_file "#{__dir__}/bun.config.js", "bun.config.js"
|
17
|
+
|
18
|
+
say "Add build script to package.json"
|
19
|
+
package_json = JSON.parse(File.read("package.json"))
|
20
|
+
package_json["scripts"] ||= {}
|
21
|
+
package_json["scripts"]["build"] = "bun bun.config.js"
|
22
|
+
File.write("package.json", JSON.pretty_generate(package_json))
|
23
|
+
|
24
|
+
say "Add ability to diff lockb to .gitattributes"
|
25
|
+
if Rails.root.join(".gitattributes").exist?
|
26
|
+
append_to_file ".gitattributes", "\n# See https://bun.sh/docs/install/lockfile\n*.lockb diff=lockb\n"
|
27
|
+
else
|
28
|
+
copy_file "#{__dir__}/.gitattributes", ".gitattributes"
|
29
|
+
end
|
30
|
+
say %(Run `git config diff.lockb.textconv bun && git config diff.lockb.binary true` to enable pretty diffs for Bun's .lockb file), :green
|
data/lib/install/dev
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
#!/usr/bin/env sh
|
2
2
|
|
3
|
-
if
|
3
|
+
if gem list --no-installed --exact --silent foreman; then
|
4
4
|
echo "Installing foreman..."
|
5
5
|
gem install foreman
|
6
6
|
fi
|
7
7
|
|
8
|
+
# Default to port 3000 if not specified
|
9
|
+
export PORT="${PORT:-3000}"
|
10
|
+
|
8
11
|
exec foreman start -f Procfile.dev "$@"
|
@@ -1,8 +1,11 @@
|
|
1
|
+
apply "#{__dir__}/../install.rb"
|
2
|
+
apply "#{__dir__}/../install_procfile.rb"
|
3
|
+
|
1
4
|
say "Install esbuild"
|
2
5
|
run "yarn add esbuild"
|
3
6
|
|
4
7
|
say "Add build script"
|
5
|
-
build_script = "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds --public-path
|
8
|
+
build_script = "esbuild app/javascript/*.* --bundle --sourcemap --format=esm --outdir=app/assets/builds --public-path=/assets"
|
6
9
|
|
7
10
|
case `npx -v`.to_f
|
8
11
|
when 7.1...8.0
|
data/lib/install/install.rb
CHANGED
@@ -14,10 +14,10 @@ end
|
|
14
14
|
if (app_layout_path = Rails.root.join("app/views/layouts/application.html.erb")).exist?
|
15
15
|
say "Add JavaScript include tag in application layout"
|
16
16
|
insert_into_file app_layout_path.to_s,
|
17
|
-
%(\n <%= javascript_include_tag "application", "data-turbo-track": "reload",
|
17
|
+
%(\n <%= javascript_include_tag "application", "data-turbo-track": "reload", type: "module" %>), before: /\s*<\/head>/
|
18
18
|
else
|
19
19
|
say "Default application.html.erb is missing!", :red
|
20
|
-
say %( Add <%= javascript_include_tag "application", "data-turbo-track": "reload",
|
20
|
+
say %( Add <%= javascript_include_tag "application", "data-turbo-track": "reload", type: "module" %> within the <head> tag in your custom layout.)
|
21
21
|
end
|
22
22
|
|
23
23
|
unless (app_js_entrypoint_path = Rails.root.join("app/javascript/application.js")).exist?
|
@@ -31,16 +31,6 @@ unless Rails.root.join("package.json").exist?
|
|
31
31
|
copy_file "#{__dir__}/package.json", "package.json"
|
32
32
|
end
|
33
33
|
|
34
|
-
if Rails.root.join("Procfile.dev").exist?
|
35
|
-
append_to_file "Procfile.dev", "js: yarn build --watch\n"
|
36
|
-
else
|
37
|
-
say "Add default Procfile.dev"
|
38
|
-
copy_file "#{__dir__}/Procfile.dev", "Procfile.dev"
|
39
|
-
|
40
|
-
say "Ensure foreman is installed"
|
41
|
-
run "gem install foreman"
|
42
|
-
end
|
43
|
-
|
44
34
|
say "Add bin/dev to start foreman"
|
45
35
|
copy_file "#{__dir__}/dev", "bin/dev"
|
46
36
|
chmod "bin/dev", 0755, verbose: false
|
@@ -0,0 +1,9 @@
|
|
1
|
+
if Rails.root.join("Procfile.dev").exist?
|
2
|
+
append_to_file "Procfile.dev", "js: yarn build --watch\n"
|
3
|
+
else
|
4
|
+
say "Add default Procfile.dev"
|
5
|
+
copy_file "#{__dir__}/Procfile.dev", "Procfile.dev"
|
6
|
+
|
7
|
+
say "Ensure foreman is installed"
|
8
|
+
run "gem install foreman"
|
9
|
+
end
|
data/lib/install/package.json
CHANGED
data/lib/jsbundling/version.rb
CHANGED
@@ -1,20 +1,76 @@
|
|
1
1
|
namespace :javascript do
|
2
|
+
desc "Install JavaScript dependencies"
|
3
|
+
task :install do
|
4
|
+
command = Jsbundling::Tasks.install_command
|
5
|
+
unless system(command)
|
6
|
+
raise "jsbundling-rails: Command install failed, ensure #{command.split.first} is installed"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
2
10
|
desc "Build your JavaScript bundle"
|
3
|
-
task :build do
|
4
|
-
|
5
|
-
|
11
|
+
build_task = task :build do
|
12
|
+
command = Jsbundling::Tasks.build_command
|
13
|
+
unless system(command)
|
14
|
+
raise "jsbundling-rails: Command build failed, ensure `#{command}` runs without errors"
|
6
15
|
end
|
7
16
|
end
|
17
|
+
|
18
|
+
build_task.prereqs << :install unless ENV["SKIP_YARN_INSTALL"] || ENV["SKIP_BUN_INSTALL"]
|
8
19
|
end
|
9
20
|
|
10
|
-
|
11
|
-
|
21
|
+
module Jsbundling
|
22
|
+
module Tasks
|
23
|
+
extend self
|
24
|
+
|
25
|
+
def install_command
|
26
|
+
case tool
|
27
|
+
when :bun then "bun install"
|
28
|
+
when :yarn then "yarn install"
|
29
|
+
when :pnpm then "pnpm install"
|
30
|
+
when :npm then "npm install"
|
31
|
+
else raise "jsbundling-rails: No suitable tool found for installing JavaScript dependencies"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def build_command
|
36
|
+
case tool
|
37
|
+
when :bun then "bun run build"
|
38
|
+
when :yarn then "yarn build"
|
39
|
+
when :pnpm then "pnpm build"
|
40
|
+
when :npm then "npm run build"
|
41
|
+
else raise "jsbundling-rails: No suitable tool found for building JavaScript"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def tool_exists?(tool)
|
46
|
+
system "command -v #{tool} > /dev/null"
|
47
|
+
end
|
48
|
+
|
49
|
+
def tool
|
50
|
+
case
|
51
|
+
when File.exist?('bun.lockb') then :bun
|
52
|
+
when File.exist?('yarn.lock') then :yarn
|
53
|
+
when File.exist?('pnpm-lock.yaml') then :pnpm
|
54
|
+
when File.exist?('package-lock.json') then :npm
|
55
|
+
when tool_exists?('bun') then :bun
|
56
|
+
when tool_exists?('yarn') then :yarn
|
57
|
+
when tool_exists?('pnpm') then :pnpm
|
58
|
+
when tool_exists?('npm') then :npm
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
12
62
|
end
|
13
63
|
|
14
|
-
|
15
|
-
Rake::Task
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
Rake::Task
|
64
|
+
unless ENV["SKIP_JS_BUILD"]
|
65
|
+
if Rake::Task.task_defined?("assets:precompile")
|
66
|
+
Rake::Task["assets:precompile"].enhance(["javascript:build"])
|
67
|
+
end
|
68
|
+
|
69
|
+
if Rake::Task.task_defined?("test:prepare")
|
70
|
+
Rake::Task["test:prepare"].enhance(["javascript:build"])
|
71
|
+
elsif Rake::Task.task_defined?("spec:prepare")
|
72
|
+
Rake::Task["spec:prepare"].enhance(["javascript:build"])
|
73
|
+
elsif Rake::Task.task_defined?("db:test:prepare")
|
74
|
+
Rake::Task["db:test:prepare"].enhance(["javascript:build"])
|
75
|
+
end
|
20
76
|
end
|
@@ -1,22 +1,22 @@
|
|
1
1
|
namespace :javascript do
|
2
2
|
namespace :install do
|
3
|
-
desc "Install
|
4
|
-
task :
|
5
|
-
system "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{File.expand_path("../../install/install.rb", __dir__)}"
|
3
|
+
desc "Install Bun"
|
4
|
+
task :bun do
|
5
|
+
system "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{File.expand_path("../../install/bun/install.rb", __dir__)}"
|
6
6
|
end
|
7
7
|
|
8
8
|
desc "Install esbuild"
|
9
|
-
task esbuild
|
9
|
+
task :esbuild do
|
10
10
|
system "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{File.expand_path("../../install/esbuild/install.rb", __dir__)}"
|
11
11
|
end
|
12
12
|
|
13
13
|
desc "Install rollup.js"
|
14
|
-
task rollup
|
14
|
+
task :rollup do
|
15
15
|
system "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{File.expand_path("../../install/rollup/install.rb", __dir__)}"
|
16
16
|
end
|
17
17
|
|
18
18
|
desc "Install Webpack"
|
19
|
-
task webpack
|
19
|
+
task :webpack do
|
20
20
|
system "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{File.expand_path("../../install/webpack/install.rb", __dir__)}"
|
21
21
|
end
|
22
22
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsbundling-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.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-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -34,9 +34,13 @@ files:
|
|
34
34
|
- README.md
|
35
35
|
- lib/install/Procfile.dev
|
36
36
|
- lib/install/application.js
|
37
|
+
- lib/install/bun/Procfile.dev
|
38
|
+
- lib/install/bun/bun.config.js
|
39
|
+
- lib/install/bun/install.rb
|
37
40
|
- lib/install/dev
|
38
41
|
- lib/install/esbuild/install.rb
|
39
42
|
- lib/install/install.rb
|
43
|
+
- lib/install/install_procfile.rb
|
40
44
|
- lib/install/package.json
|
41
45
|
- lib/install/rollup/install.rb
|
42
46
|
- lib/install/rollup/rollup.config.js
|
@@ -67,8 +71,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
71
|
- !ruby/object:Gem::Version
|
68
72
|
version: '0'
|
69
73
|
requirements: []
|
70
|
-
rubygems_version: 3.
|
74
|
+
rubygems_version: 3.4.20
|
71
75
|
signing_key:
|
72
76
|
specification_version: 4
|
73
|
-
summary: Bundle and transpile JavaScript in Rails with esbuild, rollup.js, or
|
77
|
+
summary: Bundle and transpile JavaScript in Rails with bun, esbuild, rollup.js, or
|
78
|
+
Webpack.
|
74
79
|
test_files: []
|