{"id":19195,"library":"babel-plugin-transform-export-default-name","title":"babel-plugin-transform-export-default-name","description":"Babel plugin that transforms export default of anonymous functions, arrow functions, and anonymous classes to named exports using the filename as the variable name. Version 2.1.0 is current. Released sporadically; last update was several years ago. Key differentiator: solves stack trace readability by assigning a derived name from the file (e.g., foo-bar.js becomes fooBar), improving debugging. Unlike other plugins that only handle function declarations, this targets anonymous/arrow function and class expressions. Works with Babel 6 and 7 (likely).","status":"maintenance","version":"2.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/gajus/babel-plugin-transform-export-default-name","tags":["javascript","babel-plugin"],"install":[{"cmd":"npm install babel-plugin-transform-export-default-name","lang":"bash","label":"npm"},{"cmd":"yarn add babel-plugin-transform-export-default-name","lang":"bash","label":"yarn"},{"cmd":"pnpm add babel-plugin-transform-export-default-name","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peerDependency required to function as a Babel plugin","package":"@babel/core","optional":false}],"imports":[{"note":"When using .babelrc, just use the short name without prefix","wrong":"module.exports = { plugins: ['babel-plugin-transform-export-default-name'] }","symbol":"plugin (default)","correct":"module.exports = { plugins: ['transform-export-default-name'] }"},{"note":"This is a traditional CJS module, no default export","wrong":"require('babel-plugin-transform-export-default-name').default","symbol":"plugin (programmatic API)","correct":"require('babel-plugin-transform-export-default-name')"},{"note":"The package does not ship ESM; named import will fail","wrong":"import { plugin } from 'babel-plugin-transform-export-default-name'","symbol":"ESM import","correct":"import plugin from 'babel-plugin-transform-export-default-name'"}],"quickstart":{"code":"// .babelrc\n{\n  \"plugins\": [\"transform-export-default-name\"]\n}\n\n// foo.js\n// Input: export default () => {};\n// Output: let foo = () => {}; export default foo;","lang":"javascript","description":"Shows how to enable the plugin and the transformation of an anonymous arrow function default export to a named variable."},"warnings":[{"fix":"Ensure this plugin is listed before any plugin that handles export-all or re-exporting.","message":"Plugin may conflict with other Babel plugins that also transform export default (e.g., @babel/plugin-proposal-export-default-from). Order matters: run this plugin before others that re-export.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Consider using @babel/plugin-proposal-export-default-from or monkey-patch Babel transform output for named functions.","message":"Package has not been updated in years; may not support Babel 7 clearify. It is not officially maintained.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Check transformed output for valid identifiers; avoid file names starting with digits or containing special chars.","message":"Uses lodash.camelCase; filenames with unusual characters may produce unexpected variable names (e.g., numbers, underscores).","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use only for anonymous default exports; for named exports, use other tools.","message":"Only transforms anonymous functions and arrow functions; named exports or non-function/class default exports remain unchanged.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Ensure the default export is truly anonymous; otherwise, no transformation occurs.","message":"Does not transform export default of anonymous class if the class is named in the same file (e.g., export default class Foo {} -> stays as Foo). Only unnamed classes are affected.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"npm install --save-dev babel-plugin-transform-export-default-name","cause":"Plugin not installed or missing from node_modules.","error":"Error: Cannot find module 'babel-plugin-transform-export-default-name'"},{"fix":"Install @babel/core@^7.0.0 and ensure compatibility; consider alternative plugin.","cause":"Using a very old Babel version that expects different plugin format (Babel 6 vs 7).","error":"Error: Plugin/Preset files are not allowed to export objects, only functions."},{"fix":"Ensure the default export is anonymous; remove any explicit name declaration.","cause":"Plugin incorrectly tries to assign name to a function that is already named; edge case with named default exports.","error":"TypeError: Cannot assign to read only property 'name' of function"},{"fix":"Ensure this plugin runs first in the plugin list before other export transforms.","cause":"Plugin corrupts export due to misordered plugins or conflicting transforms.","error":"Unexpected token, expected \"export\" (e.g., after transformation, syntax error)"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}