Я довольно новичок в Rails 6 и Webpacker. Сценарий состоит в том, что я добавил пакет через пряжу с именем 'slick-carousel'. И я использую
require('slick-carousel')
, чтобы потребовать пакет. И у меня есть пользовательский файл js 'custom-slick.js'
, который использует функцию из файла slick.js
в пакете slick-carousel
. И я попробовал перестановку и комбинацию обоих ниже -
import './slick-custom.js'
и
require('./slick.js');
Кажется, ничего не работает и говорит Uncaught TypeError: $(...).slick is not a function
. Полагаю, и я уверен, что 'custom-slick.js'
определяется до инициализации slick.js
. Я также пытался сначала запросить только пакет и добавить нижеприведенный тег перед тегом конца тела. а также импортировать пакет в пользовательский файл. Но, похоже, не работает.
<%= javascript_pack_tag 'slick-custom' %>
Я нашел два способа заставить его работать.
- Вставьте библиотеку
slick.js
в apps/javascripts/packs
, добавьте custom-slick.js
работает с slick.js
и добавляется ниже перед тегом body в html .erb <%= javascript_pack_tag 'slick' %>
- Требуется библиотека как обычно. Поместите
custom-slick.js
в app/assets/javascripts
, добавьте его в конвейер ресурсов рельсов, например Rails.application.config.assets.precompile += %w[slick-custom.js]
, а затем <%= javascript_include_tag 'slick-custom' %>
Они оба работают, но немного грязно. Есть ли лучший способ и rails-webpacker-y добиться этого?