New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

babel-plugin-jsx-attribute-to-const

Package Overview
Dependencies
Maintainers
0
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

babel-plugin-jsx-attribute-to-const

A Babel plugin that intelligently transforms specified JSX attributes into constants, aims to enhance performance of your React components. This plugin targets inline object and array definitions, which, when used directly in JSX, can lead to unnecessa

1.0.1
latest
Source
npm
Version published
Maintainers
0
Created
Source

babel-plugin-jsx-attribute-to-const

A Babel plugin that intelligently transforms specified JSX attributes into constants, aims to enhance performance of your React components. This plugin targets inline object and array definitions, which, when used directly in JSX, can lead to unnecessary re-renders and affect performance.

Table of Contents

  • Installation
  • Usage
  • Options
  • Examples
  • Contributing

Installation

You can install the plugin via npm or yarn:

npm install --save-dev babel-plugin-jsx-attribute-to-const

or

yarn add --dev babel-plugin-jsx-attribute-to-const

Usage

To use the plugin, add it to your Babel configuration file (e.g., .babelrc or babel.config.js):

{
  "presets": ["@babel/preset-react"],
  "plugins": ["babel-plugin-jsx-attribute-to-const"]
}

Options

This plugin does not have any configurable options currently. It automatically extracts JSX attributes that are defined as primitives, objects, or arrays into constants.

Examples

Basic Usage

Given the following JSX:

const MyComponent = () => {
  return <Box box-padding={['m', 'l@large']} />;
};

After transformation, it will become:

const _Anonymous_box_padding = ['m', 'l@large'];
const MyComponent = () => {
  return <Box box-padding={_Anonymous_box_padding} />;
};

Nested Objects and Arrays

This plugin also handles nested structures:

Input:

const MyComponent = () => {
  return (
    <Box style={{ width: { size: 100, values: [100, 200] }, height: 200 }} />
  );
};

Output:

const _Anonymous_style = { width: { size: 100, values: [100, 200] }, height: 200 };
const MyComponent = () => {
  return <Box style={_Anonymous_style} />;
};

Handling Non-Primitives

If an attribute contains non-primitive values, it remains unchanged. For example:

Input:

const MyComponent = (props) => {
  return <Box box-padding={{ size: props.size }} />;
};

Output remains the same:

const MyComponent = (props) => {
  return <Box box-padding={{ size: props.size }} />;
};

Contributing

Contributions are welcome! Feel free to open issues, submit pull requests, or suggest features.

  • Fork the repository.
  • Create your feature branch (git checkout -b feature/YourFeature).
  • Commit your changes (git commit -m 'Add some feature').
  • Push to the branch (git push origin feature/YourFeature).
  • Open a pull request.

Keywords

babel

FAQs

Package last updated on 11 Mar 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts