Giter Site home page Giter Site logo

asuraluo / emotion-swc-plugin Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ivanrodricalleja/emotion-swc-plugin

0.0 0.0 0.0 16.4 MB

SWC transform plugin for Emotion

Home Page: https://www.npmjs.com/package/emotion-swc-plugin

JavaScript 5.79% Rust 42.74% TypeScript 49.58% HTML 1.89%

emotion-swc-plugin's Introduction

emotion-swc-plugin

SWC transform plugin for Emotion equivalent to @emotion/babel-plugin

This plugin is a fork of swc_emotion in order to allow run it as a plugin. This is created because existing one is executed from a SWC custom phase and uses a signature for source_map (Arc<SourceMap>) incompatible with plugin proxy (Arc<SourceMapper>).

This is mainly useful for people that don't use Next JS and can't use directly the default plugin like CRA, Custom Webpack config or package libraries.

Install

yarn add --dev emotion-swc-plugin

//or

npm install -d emotion-swc-plugin

Usage

{
  jsc: {
    ...
   experimental: {
     plugins: [ ['emotion-swc-plugin', config] ] 
   }
}

Configuration

The plugin uses the same config as described in Next emotion documentation.

{
  jsc: {
    ...
   experimental: {
     plugins: [ ['emotion-swc-plugin', {
      // default is true. It will be disabled when build type is production.
      sourceMap?: boolean,
      // default is 'dev-only'.
      autoLabel?: 'never' | 'dev-only' | 'always',
      // default is '[local]'.
      // Allowed values: `[local]` `[filename]` and `[dirname]`
      // This option only works when autoLabel is set to 'dev-only' or 'always'.
      // It allows you to define the format of the resulting label.
      // The format is defined via string where variable parts are enclosed in square brackets [].
      // For example labelFormat: "my-classname--[local]", where [local] will be replaced with the name of the variable the result is assigned to.
      labelFormat?: string,
    }] ] 
   }
}

Note: Only importMap in @emotion/babel-plugin is not supported for now.

CRA With Craco (example)

yarn add --dev craco-swc emotion-swc-plugin node-polyfill-webpack-plugin @craco/craco @swc/core

or

npm install -d craco-swc emotion-swc-plugin node-polyfill-webpack-plugin @craco/craco @swc/core --save-dev

// craco.config.js
const CracoSwcPlugin = require("craco-swc");

const NodePolyfillPlugin = require("node-polyfill-webpack-plugin");

module.exports = {
  webpack: {
    plugins: {
      add: [new NodePolyfillPlugin()],
      remove: []
    }
  },
  eslint: {
    enable: false
  },
  plugins: [
    {
      plugin: CracoSwcPlugin,
      options: {
        swcLoaderOptions: {
          jsc: {
            parser: {
              syntax: "ecmascript",
              jsx: true,
            },
            transform: {
              react: {
                runtime: "automatic"
              }
            },
            experimental: {
              plugins: [
                [
                  "emotion-swc-plugin",
                  {
                    sourceMap: true,
                    autoLabel: 'dev-only',
                    labelFormat: '[local]'
                  }
                ]
              ]
            }
          }
        },
        assumptions: {
          constantSuper: true,
          noClassCalls: true
        }
      }
    }
  ]
};
//package.json
//...

"scripts": {
    "start": "craco start",
    "build": "craco build"
},

//...

emotion-swc-plugin's People

Contributors

ivanrodricalleja avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.