- Nainstalujte jsbundling-rails
- Vyměňte pack_tag za include_tag
- Importujte ovladače stimulů
- Migrujte vstupní bod JS
- Odeberte webový balíček
- Akce Github
- Heroku
1. Nainstalujte jsbundling-rails
Přidat do gemfile:
gem 'jsbundling-rails'
V terminálu spusťte:
bundle install
rails javascript:install:esbuild
2. Vyměňte pack_tag za include_tag
Soubor jsbundling:install příkaz vloží javascript_include_tag
značku nad značkou ve vašem application.html.erb
soubor. Tato značka bude obsahovat nový vstupní bod javascriptu javascript/application.js
aby byl váš sestavení skript zahrnut do vaší aplikace.
Odstraňte starší webový balíček stylesheet_pack_tag
:
# old
<%= javascript_pack_tag 'application', 'data-turbo-track': 'reload' %>
# new
<%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>
Pokud vaše aplikace vykresluje více rozvržení, nezapomeňte odstranit všechna javascript_pack_tag
tam taky.
3. Importujte ovladače stimulů
I když jste již nainstalovali stimul, spusťte příkaz install znovu ve svém terminálu a přepište všechny konfliktní změny. Tím se správně naimportuje veškerý váš stávající regulátor stimulů.
rails stimulus:install
Nyní, po přidání nebo odebrání nového ovladače stimulů, můžete použít příkaz, který automaticky vygeneruje controllers/index.js
soubor.
rails stimulus:manifest:update
4. Migrace vstupního bodu JS
Přesunout obsah z javascript/packs/application.js
na
javascript/application.js
. Po migraci souboru odstraňte složku javascript/packs, kterou používal Webpacker.
Ujistěte se, že importujete adresáře v javascriptu složku s relativní cestou.
// old
require("channels")
//new
import "./channels"
import "./controllers"
5. Odeberte webpack
Webpack a jeho chapadla lze konečně odstranit z aplikace.
A. Odstraňte drahokam webpacker
gem 'webpacker', '~> 5.4'
B. Odeberte balíčky webpack
Balíčky a zásuvné moduly Webpack, které se časem nashromáždily, lze také odstranit. Pro mě to zahrnovalo:
- @rails/webpacker
- webový balíček
- webpack-cli
- webpack-cli/serve
- webpack-dev-server
- clean-webpack-plugin
- @hotwired/stimulus-webpack-helpers
C. Odeberte soubory webpack
Nakonec odstraňte všechny konfigurační a spouštěcí soubory:
- bin/webpack
- bin/webpack-dev-server
- config/webpacker.yml
- config/webpack (adresář)
6. Akce Github
Pokud používáte Github Actions jako CI/CD, nezapomeňte přidat další krok sestavení, abyste spustili sestavení příze. Sestavení příze spustí krok sestavení definovaný ve vašem package.json
soubor:"build": "esbuild app/javascript/*.* --bundle --outdir=app/assets/builds"
. Před spuštěním testů v souboru pracovního postupu je třeba sbalit všechny soubory javascriptu.
- name: Build Esbuild
run: yarn build
7. Heroku
AKTUALIZACE tento krok je nyní nadbytečný, jak uvádí @jrochkind v komentářích. Viz https://devcenter.heroku.com/changelog-items/2284.
Pokud k nasazení aplikace používáte heroku, Heroku NE automaticky nainstaluje přízi jako u Webpacku!**
Proto musíme explicitně nastavit buildpack uzlu před ruby. Můžete to udělat v terminálu nebo na Heroku Dashboard.
- Terminál
heroku buildpacks:clear
heroku buildpacks:set heroku/nodejs
heroku buildpacks:add heroku/ruby
- Hlavní panel
Zdroje:
- ** Děkujeme Robovi za blogování o kroku chybějící příze
- Jak používat ESBuild s JS Bundling in Rails