Sprockets //= require with jsbundling-rails (esbuild) - 如何包含 gem 提供的 JS?

sma*_*iak 11 javascript rubygems ruby-on-rails sprockets asset-pipeline

基本上就如标题所说。我安装了一个 gem,它给了我一些 JS 来使用。以前这不是问题,因为我使用的是 Sprockets + Assets 管道。

现在,我迁移到 jsbundling-rails,但实际上不知道如何包含 gem 提供的 JS 代码。我花了大约 10 个小时进行搜索,但到目前为止还没有成功。

请帮我。

Ale*_*lex 15

gem 必须有一个 js 包,可以使用yarn/npm 安装,以便可以在application.js中导入它。如果没有,您可以设置一个js文件仅由sprocket处理处理,就像以前一样。

添加另一个将跳过esbuild并仅由sprockets处理的javascript 入口点。

更新清单:

// app/assets/config/manifest.js

//= link custom.js
Run Code Online (Sandbox Code Playgroud)

添加//= require指令:

// app/assets/javascripts/custom.js

//= require gem_javascript
Run Code Online (Sandbox Code Playgroud)

将其添加到布局中:

<!-- app/views/layouts/application.html.erb -->

<%= javascript_include_tag "application", "custom", "data-turbo-track": "reload", defer: true %>
Run Code Online (Sandbox Code Playgroud)

或者,不使用//= 需要将gem_javascript添加到javascript_include_tag:

<%= javascript_include_tag "application", "gem_javascript", "data-turbo-track": "reload", defer: true %>
Run Code Online (Sandbox Code Playgroud)

可能还需要将其添加到清单中以进行预编译:

// app/assets/config/manifest.js

//= link gem_javascript
Run Code Online (Sandbox Code Playgroud)

  • 没有足够多的赞成票! (2认同)