在Rails引擎中使用webpacker的最佳方法是什么?

Pro*_*der 8 ruby-on-rails rails-engines webpacker

我意识到在Rails引擎中使用webpacker存在争议,但我有一个简单的用例,目前有一个解决方法.想知道一个更好的(最好的?)解决方案.

在这个rails引擎中,我在"spec/dummy"目录中设置了webpacker,一切都在dev中运行良好:https: //github.com/RealEstateWebTools/property_web_scraper/tree/master/spec/dummy/config/webpack

当rails应用程序使用该引擎时,它将找不到已编译的webpack文件,因此每次我准备好发布时,我都会编译webpack文件并手动将它们复制到供应商目录:https: //github.com/RealEstateWebTools/ property_web_scraper /树/主/供应商/资产/ JavaScript的

然后我在这里要求该文件:https: //github.com/RealEstateWebTools/property_web_scraper/blob/master/app/assets/javascripts/property_web_scraper/spp_vuetify.js

在我的布局中,我使用上面的文件使用旧的链轮"javascript_include_tag":https://github.com/RealEstateWebTools/property_web_scraper/blob/master/app/views/layouts/property_web_scraper/spp_vuetify.html.erb

在布局中有一个检查,看看我是否正在运行"spec/dummy"应用程序,在这种情况下,我将使用webpacker,因为它通常在dev中使用.

必须有比这更好的方法.

Dor*_*ian 1

\n

Webpacker 已退役

\n
\n

https://github.com/rails/webpacker

\n

展望未来,最好切换到jsbundling-railswith webpack

\n

(我宁愿建议 esbuild 因为它的“10\xc3\x97-100\xc3\x97 更快”

\n

但让我们用 webpack 来做:

\n
rails new webpack-in-engine --javascript webpack --css tailwind --database postgresql\n
Run Code Online (Sandbox Code Playgroud)\n

app/javascript/application.js我做的:

\n
console.log("hello from application.js")                                                                    \n
Run Code Online (Sandbox Code Playgroud)\n

它有效。

\n

现在有了引擎:

\n
rails plugin new admin --mountable\n
Run Code Online (Sandbox Code Playgroud)\n

那么取决于:

\n

单独的JS

\n

添加一个条目到您的webpack.config.js

\n
rails new webpack-in-engine --javascript webpack --css tailwind --database postgresql\n
Run Code Online (Sandbox Code Playgroud)\n
    <%= javascript_include_tag "admin", "data-turbo-track": "reload", defer: true %>\n
Run Code Online (Sandbox Code Playgroud)\n

共享JS

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

在你的app/javascript/application.js

\n
console.log("hello from application.js")                                                                    \n
Run Code Online (Sandbox Code Playgroud)\n

查看完整的仓库https://github.com/dorianmariefr/webpack-in-engine

\n

旁白:另外,我宁愿在主应用程序中使用命名空间,也不愿拥有引擎。我认为引擎适用于非常特定的用例,而不是命名空间。

\n