{"id":18997,"library":"babel-helper-module-transforms","title":"Babel Helper Module Transforms","description":"Internal Babel helper package providing utility functions for implementing ES6 module transformations, such as converting imports and exports to CommonJS, AMD, or UMD. This package is used by plugins like @babel/plugin-transform-modules-commonjs and @babel/plugin-transform-modules-amd. Version 7.0.0-beta.1 is an early beta; current stable releases follow Babel 7.x line (v7.29.2 as of March 2026) and Babel 8 development on v8.0.0-rc.3. Users should not depend on this package directly; use the respective transform plugins instead. Key differentiator: it centralizes module transformation logic shared across Babel module plugins.","status":"active","version":"7.0.0-beta.1","language":"javascript","source_language":"en","source_url":"https://github.com/babel/babel/tree/master/packages/babel-helper-module-transforms","tags":["javascript"],"install":[{"cmd":"npm install babel-helper-module-transforms","lang":"bash","label":"npm"},{"cmd":"yarn add babel-helper-module-transforms","lang":"bash","label":"yarn"},{"cmd":"pnpm add babel-helper-module-transforms","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Used for building AST nodes for module declarations and imports/exports.","package":"@babel/types","optional":false},{"reason":"Used for template-based AST construction for module transforms.","package":"@babel/template","optional":false},{"reason":"Used for simple assignment operations in module transformations.","package":"@babel/helper-simple-access","optional":true}],"imports":[{"note":"Default export is a function; named exports exist for other helpers. CJS require works but may not get correct default.","wrong":"const { rewriteModuleStatementsAndPrepareHeader } = require('@babel/helper-module-transforms')","symbol":"default","correct":"import rewriteModuleStatementsAndPrepareHeader from '@babel/helper-module-transforms'"},{"note":"isModule is a named export, not the default.","wrong":"import isModule from '@babel/helper-module-transforms'","symbol":"isModule","correct":"import { isModule } from '@babel/helper-module-transforms'"},{"note":"rewriteModuleStatementsAndPrepareHeader is the default export, not a named export.","wrong":"import { rewriteModuleStatementsAndPrepareHeader } from '@babel/helper-module-transforms'","symbol":"rewriteModuleStatementsAndPrepareHeader","correct":"import rewriteModuleStatementsAndPrepareHeader from '@babel/helper-module-transforms'"}],"quickstart":{"code":"import rewriteModuleStatementsAndPrepareHeader from '@babel/helper-module-transforms';\nimport traverse from '@babel/traverse';\nimport { parse } from '@babel/parser';\n\nconst code = 'import { foo } from \"bar\"; export const baz = 1;';\nconst ast = parse(code, { sourceType: 'module' });\ntraverse(ast, {\n  Program(path) {\n    const { meta, headers } = rewriteModuleStatementsAndPrepareHeader(path, {\n      exportName: 'module.exports',\n      loose: false,\n    });\n    console.log('Module meta:', meta);\n    console.log('Module headers:', headers);\n  }\n});","lang":"javascript","description":"Shows how to use the default export to rewrite module statements and extract metadata from an AST."},"warnings":[{"fix":"Use import rewriteModuleStatementsAndPrepareHeader from '@babel/helper-module-transforms' instead of importing a named export.","message":"Default export changed from a named export to the default export in v7.0.0-beta.1","severity":"breaking","affected_versions":"<7.0.0-beta.1"},{"fix":"Prefer using higher-level Babel plugins or @babel/core APIs instead of directly depending on this helper.","message":"The package is internal; direct imports may break without notice across minor releases.","severity":"gotcha","affected_versions":"*"},{"fix":"Use the 'moduleId' or 'getModuleId' options in your Babel configuration instead.","message":"Some helper functions like getModuleName have been deprecated in favor of configuration via @babel/core.","severity":"deprecated","affected_versions":">=7.0.0-beta.1"},{"fix":"If you need ESM output, use @babel/preset-env with modules: false or use a bundler like Rollup.","message":"Only CommonJS and AMD are supported; no native ESM output.","severity":"gotcha","affected_versions":">=7.0.0-beta.1"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Change to import rewriteModuleStatementsAndPrepareHeader from '@babel/helper-module-transforms'.","cause":"Importing as a named export instead of default export.","error":"TypeError: rewriteModuleStatementsAndPrepareHeader is not a function"},{"fix":"Ensure you have @babel/core installed, or explicitly install @babel/helper-module-transforms.","cause":"Package not installed; it's a Babel internal dependency.","error":"Cannot find module '@babel/helper-module-transforms'"},{"fix":"Update all @babel/* packages to the same version.","cause":"Version mismatch between Babel packages.","error":"Error: Plugin attempted to use a helper that is not available"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}