11.12.0 • Published 5 months ago

@emotion/babel-preset-css-prop v11.12.0

Weekly downloads
223,587
License
MIT
Repository
github
Last release
5 months ago

@emotion/babel-preset-css-prop

A Babel preset to automatically enable Emotion's css prop when using the classic JSX runtime. If you want to use the new JSX runtimes please do not use this preset but rather just include our @emotion/babel-plugin directly and follow instructions for configuring the new JSX runtimes here.

Install

yarn add @emotion/babel-preset-css-prop

Usage

Note:

This plugin is not compatible with @babel/plugin-transform-react-inline-elements. If you use both then your css prop styles won't be applied correctly.

.babelrc

{
  "presets": ["@emotion/babel-preset-css-prop"]
}

@emotion/babel-preset-css-prop includes the emotion plugin. The @emotion/babel-plugin entry should be removed from your config and any options moved to the preset. If you use @babel/preset-react or @babel/preset-typescript ensure that @emotion/babel-preset-css-prop is inserted after them in your babel config.

{
+ "presets": [
+   [
+     "@emotion/babel-preset-css-prop",
+     {
+       "autoLabel": "dev-only",
+       "labelFormat": "[local]"
+     }
+   ]
+ ],
- "plugins": [
-   [
-     "@emotion",
-     {
-       "autoLabel": "dev-only",
-       "labelFormat": "[local]"
-     }
-   ]
- ]
}

See the options documentation for more information.

Via CLI

babel --presets @emotion/babel-preset-css-prop script.js

Via Node API

require('@babel/core').transform(code, {
  presets: ['@emotion/babel-preset-css-prop']
})

Features

This preset enables the css prop for an entire project via a single entry to the babel configuration. After adding the preset, compiled JSX code will use Emotion's jsx function instead of React.createElement.

InputOutput
Before<img src="avatar.png" />React.createElement('img', { src: 'avatar.png' })
After<img src="avatar.png" />jsx('img', { src: 'avatar.png' })

import { jsx } from '@emotion/react' is automatically added to the top of files where required.

Example

In

const Link = props => (
  <a
    css={{
      color: 'hotpink',
      '&:hover': {
        color: 'darkorchid'
      }
    }}
    {...props}
  />
)

Out

import { jsx as ___EmotionJSX } from '@emotion/react'

function _extends() {
  /* babel Object.assign polyfill */
}

var _ref =
  process.env.NODE_ENV === 'production'
    ? {
        name: '1fpk7dx-Link',
        styles: 'color:hotpink;&:hover{color:darkorchid;}label:Link;'
      }
    : {
        name: '1fpk7dx-Link',
        styles: 'color:hotpink;&:hover{color:darkorchid;}label:Link;',
        map: '/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dG9tYXRpYy1pbXBvcnQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUkiLCJmaWxlIjoiYXV0b21hdGljLWltcG9ydC5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IExpbmsgPSBwcm9wcyA9PiAoXG4gIDxhXG4gICAgY3NzPXt7XG4gICAgICBjb2xvcjogJ2hvdHBpbmsnLFxuICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgIGNvbG9yOiAnZGFya29yY2hpZCdcbiAgICAgIH1cbiAgICB9fVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbilcbiJdfQ== */'
      }

const Link = props =>
  ___EmotionJSX(
    'a',
    _extends(
      {
        css: _ref
      },
      props
    )
  )

In addition to the custom JSX factory, this example includes @emotion/babel-plugin transforms that are enabled by default.

Options

Options for both @emotion/babel-plugin and @babel/plugin-transform-react-jsx are supported and will be forwarded to their respective plugin.

Refer to the plugin's documentation for full option documentation.

Examples

{
  "presets": [
    [
      "@emotion/babel-preset-css-prop",
      {
        "autoLabel": "dev-only",
        "labelFormat": "[local]",
        "useBuiltIns": false,
        "throwIfNamespace": true
      }
    ]
  ]
}

Options set to default values for demonstration purposes.

@joelcox22/boilerplate@devheat/uisapphire-uibabel-preset-react-app-motive-editor@bdk-pixi/webemotion-reproduce-external-lib@jumpmann3o/component-libraryfrontity-core-recodedeoghandotio-ui@tambium/babel-presetscarioca-components-emotionflavory-ui@mediator-legal/uifrontend-ui-kit42dd8860-c724my-react-library-gccnfg-frontend-ui-kitreact-ina-card-hocaudio-tour-hamadajp-ui-kitjpms-ui-kituap-ui-components@jesseburke/basic-react-components@jesseburke/graphics-componentsfeathery-elementsfeathery-react-client-sdk@healthtrain/healthtrain-ui@healform/ui-libraryfeathery-reactnykaa_web_reloaded@everything-registry/sub-chunk-289lgs-testaaaec-unofficialec-elementswjec-one-scriptssettings-editorreactify-uistandigm-design-systemsearch-selectionrte-draft-js-reacttestpub-ssrsy-corev-ii-fe-core@tt-ss/react-shared-uiminhyup-storyhermit-carouselhyosun-design-systemm360-react-componentsmixologymui-formsjwils-component-libraryimforbossjobjuno-shared-componentskyoul-paynature-graphics-pattern-librarymy-react-librarysclm0mb-libparishconnect-boxpomelo_frontendplayboy-components-testplab-design-systemmodern-web-swiss-army-knifereact-component-library-typereact-speed-uinetlify-cms-widget-image-extranordic-uireact-api-previewreact-mapleleavesreact-gridzillareact-scripts-socreact-scripts-test-for-babelreact-uikit-catcherssr-react-framework-parosupersetui-custom-sksimple-ui-libraryui-kit-narcelloumi-plugin-emotiontmp-webpack-test@apmg/enceladus@antman999/meridian-design-systems@amrnn/reactor@anand.jose/react-typescript-webpack-starter@adobe/parliament-ui-components@admin-tool-generator/ui@alpinegizmo/mdx-deck@axa-ch/pod-uadmin@binoy14/react-scripts@cassler/hooks@cassler/snippets@cardinal/namespaces-components@chadify/react-scripts@500tech/babel-preset-react-app@codinators/gatsby-theme-blog@coli.codes/editor@consus/react-iu@control-room/uizzx-switchzipcar-react-components@finalcodereview/web-components
11.12.0

5 months ago

11.11.0

2 years ago

11.10.0

2 years ago

11.2.0

4 years ago

11.0.0

4 years ago

10.2.1

4 years ago

10.2.0

4 years ago

10.1.0

4 years ago

11.0.0-rc.0

4 years ago

11.0.0-next.10

5 years ago

10.0.27

5 years ago

11.0.0-next.8

5 years ago

11.0.0-next.6

5 years ago

11.0.0-next.3

5 years ago

11.0.0-next.0

5 years ago

10.0.23

5 years ago

10.0.22

5 years ago

10.0.17

5 years ago

10.0.14

5 years ago

10.0.9

6 years ago

10.0.8

6 years ago

10.0.7

6 years ago

10.0.6

6 years ago

10.0.5

6 years ago