Что касается webpacker
, нам нужно добавить файлы js отдельно от гема, это может показаться своего рода регрессом, поскольку со звездочками мы добавили файлы из папки гема. 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 гем, поэтому нет необходимости добавлять его в gemfile
(rails u js - это дополнительные полностью js файлы, которые ранее находились внутри gemfile
), во-вторых, драгоценные камни может содержать js, CSS и ruby, с webpacker
мы в основном избавляемся от js драгоценных камней, и в зависимости от того, как вы обрабатываете CSS, мы можем избавиться от CSS типов драгоценные камни (например, bootstrap gem
, то есть js и CSS драгоценный камень) нелогично, но мы можем обрабатывать и устанавливать модули \ пакеты с помощью Yarn, которые включают файлы js и CSS, а webpack
работает хорошо с обоими. Хотя по соглашению все еще предлагалось использовать звездочки для CSS, поэтому мы просто устанавливаем маршруты для node_modules, когда это необходимо. В последнем третьем пункте всегда полезно посмотреть на пряжу yarnpkg.com / package , чтобы увидеть, есть ли у драгоценного камня пакет, который мы можем добавить.
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'
Хорошо, но что делать, если у гема нет модуля \ packege? здесь это немного сложно, зависит от случая, иногда вы можете просто взять код из драгоценного камня и добавить его через импорт в свою папку javascript, или, если в коде нет модуля, вы можете использовать пакет exports-loader
для упаковки старого js код для модулей.