在哪里可以找到Rails 6 webpacker中Gems所需要的JS?

问题描述 投票:0回答:1

每次我需要在我的Rails 6应用程序(webpacker)上安装一个gem时,我都找不到像以前的Rails版本那样从gem中要求JS的位置。

以前的情况是这样的appassetsjavascriptsapplication.js。

//= require gem_name

但现在,作为 appassetsjavascripts 消失在资产中

我想我必须要求它从appjavascriptpacksapplication.js。 像这样

require("gem_name").start

但当我这样做的时候,尽管我有我的 宝石档案

gem 'gem_name'

并捆绑安装

它引发了一个未捕获的JS错误。

Uncaught Error: Cannot find module 'gem_name'

我应该如何和在哪里要求宝石JS?我真的不清楚,谢谢你。

ruby-on-rails ruby rubygems ruby-on-rails-6 webpacker
1个回答
1
投票

如果你想要一个黑客的答案,我们需要知道你正在尝试安装哪个 gem。

然而,特别是如果这是一个新的Rails-6项目,你最好花一些时间学习Rails 6如何使用webpacker。一旦你掌握了这个窍门,你就可以访问任何js包。

我发现 https:/hackernoon.comintegratebootstrap-4-font-awesome-5-in-rails-6-u87u32zd。 是一个很好的开始。

但同样的,如果你告诉我们你要安装的是哪个JS包(或者它的哪个gem封装器),我们可以更具体的回答。


1
投票

至于 webpacker 我们需要将js文件从gem中单独添加出来,这看起来像是一种倒退,因为在sprockets中我们已经从gem文件夹中添加了文件。Webpack 这给我们带来了很多强大的功能,同时也带来了一些麻烦。webpacker 是一个比较新的框架,很多宝石还没有换成新的格式。

如果宝石 增加对webpack的支持 将他们的js打包在es6模块中(简单的方法),我们只需将js安装在Yarn中,并按你上面提到的要求安装即可。

让我们看一个基于 i18n-js gem.在以前的版本(链轮),我们需要。

1 # add gem to the gemfile
=> gem "i18n-js"
2 # run gem install
=> gem install "i18n-js"
3 # require gem js inside aplication.js
=> //= require i18n.js

有了 webpacker 同样的过程会是这样的。

1 # install the js with Yarn # 
=> yarn add i18n-js

关于这一点,我有三点意见,首先,正如你所看到的那样: i18n-js 是完全的js gem,所以没有必要把这个添加到。gemfile (rails ujs是额外的完全的js文件,以前是在jQuery里面的。gemfile),其次,宝石可能内容为js、css和ruby,与 webpacker 我们主要是摆脱js宝石类型,并取决于你如何处理CSS,我们可能会摆脱CSS类型的宝石(如 bootstrap gem 是js和CSS gem)的反直觉,但我们可以用Yarn处理和安装包含js和CSS文件的模块\packges,以及 webpack 是可以很好的使用这两种方法。虽然按照惯例,它仍然建议使用链轮来处理CSS,所以我们只需在需要的时候将路由设置为node_modules.在最后的第三点,它的做法总是很好的,看看yarn的 yarnpkg.compackage 来查看gem是否有我们可以添加的包。

2 # added installed package to the pack\page you need the package
  import I18n from "i18n-js"
3 # now you can set the language for the package
  I18n.defaultLocal = 'he' 

好吧,但是如果 gem 没有模块/packege怎么办呢?这里只是有点复杂,取决于具体情况,有时你可以直接从 gem 中提取代码,然后在你的 javascript 文件夹中通过 import 添加,或者如果代码没有模块,你可以使用 exports-loader 包,将旧的js代码打包到模块中。

© www.soinside.com 2019 - 2024. All rights reserved.