Skip to main content
Moderne OnlyThis recipe is proprietary to Moderne and runs on the Moderne platform or CLI — it isn’t part of the open-source catalog. Available with a Moderne subscription.Contact Sales

Migrate source-map-support to Node.js native source maps

Recipe IDorg.openrewrite.node.migrate.source-map-support.migrate-source-map-support-to-native
Artifact@openrewrite/recipes-nodejs

Replaces the source-map-support package with Node.js's built-in source map support. Where Node is launched from package.json scripts or mocha/ava configuration, source-map-support/register becomes the --enable-source-maps flag; in code, install() and register imports become process.setSourceMapsEnabled(true) where that maps everything the module loads. Where it would not — in an ES module every import is evaluated before any statement runs — the flag goes on the launcher instead, in the package's bin shebang or a node script, and the entry point is removed as redundant. What Node has no equivalent for — install() with a custom retrieveSourceMap or retrieveFile, and wrapCallSite, getErrorSource, mapSourcePosition, retrieveSourceMap and resetRetrieveHandlers — is written into the file that uses it, on Node's own SourceMap, and an install() configured for a browser is removed. The dependency is removed from each package.json that declares it, with the lock file updated to match. Anything left in place, such as a webpack banner, is recorded in the SourceMapSupportManualMigrationSteps data table with a suggested replacement, and has to be migrated before building, since the dependency is removed regardless.

Composite recipeOpenRewritesource-map-supportModerne Proprietary License
Try in PlatformTry this recipe in the Moderne platform. Not a user yet? You’ll get a no-setup demo environment, with nothing to install or configure.

Usage​

Run this recipe

In order to run JavaScript recipes, you will need to use the Moderne CLI. For JavaScript specific configuration instructions, please see our configuring JavaScript guide.

This recipe calls into other OpenRewrite packages as it runs. You will need to install all of the following packages before running it:

RELEASE resolves to the newest release and LATEST to the newest build of any kind, including snapshots. Either one lets mod config recipes upgrade pull in later versions without editing this command; a pinned version stays where you put it.

Install the recipe packages
mod config recipes npm install @openrewrite/recipes-nodejs
mod config recipes jar install org.openrewrite:rewrite-javascript:RELEASE

Then, you can run the recipe via:

Run the recipe
mod run . --recipe org.openrewrite.node.migrate.source-map-support.migrate-source-map-support-to-native