Run jscodeshift with --no-babel#270
Merged
kategengler merged 1 commit intorwjblue:masterfrom Sep 30, 2025
Merged
Conversation
By default, jscodeshift use babel to transform the transform files (i.e. the "plugins") themselves before running them in Node. The motivation of this seems to be to allow using more modern features in the transform plugins. In the "old days" this may be necessary/desirable, but with modern Node versions having pretty good support for modern features/syntaxes, this benefit seems margin/dubious, and it can sometimes cause problem. One example is that we tried to use `@embroider/core` in our transform, which depends on a fairly old package called `sourcemap-validator`. The source code of the package is NOT written with strict mode in mind, but the default settings for jscodeshift's babel transform blindly adds the `"use strict";` declaration on top of each file, including dependencies in node_modules. This ultimately causes a hard error when running the codemod, in this case a `ReferenceError: createBuffer is not defined` when loading the file. Coincidentally the `jscodeshift` set up of running things in workers and babel overriding `require()` in Node also makes it harder to discover the root cause of the problem. It's unclear what can be done about this – I tried adding an empty `.babelrc` on the transform plugin side but that doesn't seem to be picked up. I am not sure how we are supposed to customize the babel options used for this purpose (which also further diminishes its utility). Ultimately, given the utility of this seems dubious on modern node, most transforms probably do not take advantage of this and most authors and consumers probably aren't aware of this little-known feature on `jscodeshift`, it's easier to just disable that which would probably make things run a little faster. It's also unclear if this ever worked "correctly" given that the template transforms don't get the same babel treatment.
This was referenced Sep 30, 2025
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is just rebasing #266 so go look at that PR for more details.
Closes #266