Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move Active Storage JS to ESM and drop Babel transpiling #42895

Merged
merged 9 commits into from
Jul 28, 2021

Conversation

dhh
Copy link
Member

@dhh dhh commented Jul 28, 2021

We should be using ESM for all JS published by Rails, as well as use ES2017 as the baseline. Less transpiling = more readable code + smaller packages.

This PR retains app/assets/javascripts/activestorage.js as a UMD package for backwards compatibility with bundling in the asset pipeline, but also adds app/assets/javascripts/activestorage.esm.js for use with ESM via importmap in the browser.

The npm package is tagged as a module package, and is no longer transpiled by Babel.

@rails-bot rails-bot bot added the actiontext label Jul 28, 2021
@dhh dhh merged commit 6c96e1c into main Jul 28, 2021
@dhh dhh deleted the activestorage-js-to-modern-es-and-esm branch July 28, 2021 19:17
mgrunberg added a commit to mgrunberg/rails that referenced this pull request Nov 7, 2023
actiontext.js is compiled as ESM bundle instead of UMD bundle.
This leads to issues when trying to use ActionText with sprockets because the ESM bundle declares variables like they are scoped to the file but sprockets will see them as scoped globally.
This is a problem, in particular, if you want to mix actiontext with
turbo-rails.

The problem got introduced in rails#46447.
I traced valid compilation back to
rails#42895.

This commit mimic changes made in
rails#42895 to ActiveStorage:
   Retains app/assets/javascripts/actiontext.js as a UMD package for backwards compatibility with
   bundling in the asset pipeline, but also adds app/assets/javascripts/actiontext.esm.js for use
   with ESM via importmap in the browser.
catlee pushed a commit to Shopify/rails that referenced this pull request Dec 4, 2023
actiontext.js is compiled as ESM bundle instead of UMD bundle.
This leads to issues when trying to use ActionText with sprockets because the ESM bundle declares variables like they are scoped to the file but sprockets will see them as scoped globally.
This is a problem, in particular, if you want to mix actiontext with
turbo-rails.

The problem got introduced in rails#46447.
I traced valid compilation back to
rails#42895.

This commit mimic changes made in
rails#42895 to ActiveStorage:
   Retains app/assets/javascripts/actiontext.js as a UMD package for backwards compatibility with
   bundling in the asset pipeline, but also adds app/assets/javascripts/actiontext.esm.js for use
   with ESM via importmap in the browser.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants