jsbundling-rails 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9005a58fceabb06503796890d306f26c1b57b95e98199f6e93c3a9be9656b320
4
- data.tar.gz: defe5a30a7543ed3ff40b5d97a493c123fb565bedac270ba2c3a80ee360f58d0
3
+ metadata.gz: d5a44be3ec3ce6c70cdea6a949eb1161de8d93fc862fea729d6c69fd75507540
4
+ data.tar.gz: 8ac2566fb564e1b0f7c705c923bdd4cf19db68559d2549690ce388057aa56100
5
5
  SHA512:
6
- metadata.gz: 1537371737cd78411eacd67683eae126ad912d283bae982da54de5c79104d3c176ebaa4275f5d487d81837c12434b63f9edbcefeacad496c705f9d0bdb9e1f38
7
- data.tar.gz: 6da1db4850966e8a74f5be4526ff43b2b9dfbe7839848d091b24062c738168a5fc97875c84c406216b4140a45aec7e7c31c9a5e919f8c971b7e89669d0df0a1e
6
+ metadata.gz: a1fc1a7e5b48df676886d33b078a44b261312867ab16257900881924908ff5a669d27859673ece993c194e923e9d8d085da2ac101ee29928f648941382b87be2
7
+ data.tar.gz: '059d18f58411a82e4e68f2b2484232bb4da9135e0dcbf00cd64fc239ade89ff7bdbaabe199bf1fd48fc69af57414d55e60912201fe004c23be4e928f16140d13'
data/README.md CHANGED
@@ -24,9 +24,8 @@ If you want to use webpack features like [code splitting](https://webpack.js.org
24
24
 
25
25
  You must already have node and yarn installed on your system. You will also need npx version 7.1.0 or later. Then:
26
26
 
27
- 1. Add `jsbundling-rails` to your Gemfile with `gem 'jsbundling-rails'`
28
- 2. Run `./bin/bundle install`
29
- 3. Run `./bin/rails javascript:install:[esbuild|rollup|webpack]`
27
+ 1. Run `./bin/bundle add jsbundling-rails`
28
+ 2. Run `./bin/rails javascript:install:[esbuild|rollup|webpack]`
30
29
 
31
30
  Or, in Rails 7+, you can preconfigure your new application to use a specific bundler with `rails new myapp -j [esbuild|rollup|webpack]`.
32
31
 
@@ -37,10 +36,20 @@ Or, in Rails 7+, you can preconfigure your new application to use a specific bun
37
36
 
38
37
  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.
39
38
 
40
- ## Why does esbuild overwrite my application.css?
39
+ ### Why does esbuild overwrite my application.css?
41
40
 
42
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`.
43
42
 
43
+ ### How can I reference static assets in JavaScript code?
44
+
45
+ Suppose you have an image `app/javascript/images/example.png` that you need to reference in frontend code built with esbuild.
46
+
47
+ 1. Create the image at `app/javascript/images/example.png`.
48
+ 1. In `package.json`, under `"scripts"` and `"build"`, add the option `--loader:.png=file` to the esbuild script, which instructs esbuild to copy png files to the build directory.
49
+ 1. When esbuild runs, it will copy the png file to something like `app/assets/builds/example-5SRKKTLZ.png`.
50
+ 1. In frontend code, the image is available for import by its original name: `import Example from "../images/example.png"`.
51
+ 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.
44
53
 
45
54
  ## License
46
55
 
data/lib/install/dev CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
- if ! command -v foreman &> /dev/null
3
+ if ! foreman version &> /dev/null
4
4
  then
5
5
  echo "Installing foreman..."
6
6
  gem install foreman
@@ -2,7 +2,7 @@ say "Install esbuild"
2
2
  run "yarn add esbuild"
3
3
 
4
4
  say "Add build script"
5
- build_script = "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds"
5
+ build_script = "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds --public-path=assets"
6
6
 
7
7
  if (`npx -v`.to_f < 7.1 rescue "Missing")
8
8
  say %(Add "scripts": { "build": "#{build_script}" } to your package.json), :green
@@ -9,7 +9,7 @@ module.exports = {
9
9
  },
10
10
  output: {
11
11
  filename: "[name].js",
12
- sourceMapFilename: "[name].js.map",
12
+ sourceMapFilename: "[file].map",
13
13
  path: path.resolve(__dirname, "app/assets/builds"),
14
14
  },
15
15
  plugins: [
@@ -1,3 +1,3 @@
1
1
  module Jsbundling
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.3"
3
3
  end
@@ -1,7 +1,7 @@
1
1
  namespace :javascript do
2
2
  desc "Remove JavaScript builds"
3
3
  task :clobber do
4
- rm_rf Dir["app/assets/builds/[^.]*.js"], verbose: false
4
+ rm_rf Dir["app/assets/builds/[^.]*.{js,js.map}"], verbose: false
5
5
  end
6
6
  end
7
7
 
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.0.2
4
+ version: 1.0.3
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: 2022-02-26 00:00:00.000000000 Z
11
+ date: 2022-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -67,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  requirements: []
70
- rubygems_version: 3.2.32
70
+ rubygems_version: 3.3.14
71
71
  signing_key:
72
72
  specification_version: 4
73
73
  summary: Bundle and transpile JavaScript in Rails with esbuild, rollup.js, or Webpack.