Coder Social home page Coder Social logo

limingziqiang / styled-jsx-plugin-sass Goto Github PK

View Code? Open in Web Editor NEW

This project forked from j-env/styled-jsx-plugin-sass

0.0 1.0 0.0 37 KB

Plugin to add Sass support to styled-jsx. Warning this is a Proof Of Concept plugin.

CSS 0.24% JavaScript 98.36% SCSS 1.40%

styled-jsx-plugin-sass's Introduction

styled-jsx-plugin-sass-pxtorem

Use Sass and pxtorem with styled-jsx ๐Ÿ’ฅ

The code fork for styled-jsx-plugin-sass

Usage

Install the package first.

npm install --save-dev styled-jsx-plugin-sass-pxtorem

Install the sass version you need (it is a peer dependency).

npm install --save-dev sass

Next, add styled-jsx-plugin-sass-pxtorem to the styled-jsx's plugins in your babel configuration:

{
  "plugins": [
    [
      "styled-jsx/babel",
      { 
        "plugins": [
          "styled-jsx-plugin-sass-pxtorem",
          {
            "sassOptions": {
              "data": "@import '$path/variables.scss';"
            },
            "rem": {
              // 1rem=100px,
              "rootValue": 100,
              // toFixed(2)
              "unitPrecision": 2,
              // @media screen and (min-width: 1000px)
              "mediaQuery": false,
              // >= 2px
              "minPixelValue": 2,
              "selectorIgnore": [
                "html",
                ".ignore-test**"
              ],
              /* @pxtorem-ignore */
              "commentIgnore": "@pxtorem-ignore",
              "keyValueIgnore": {
                "font-size": "12px"
              }
            }
          }
        ] 
      }
    ]
  ]
}

next.js

{
  "presets": [
    [
      "next/babel",
      {
        "styled-jsx": {
          "plugins": [
            [
              "styled-jsx-plugin-sass-pxtorem",
              {
                "sassOptions": {
                  "data": "@import '$path/variables.scss';"
                },
                "rem": {
                  // 1rem=100px,
                  "rootValue": 100,
                  // toFixed(2)
                  "unitPrecision": 2,
                  // @media screen and (min-width: 1000px)
                  "mediaQuery": false,
                  // >= 2px
                  "minPixelValue": 2,
                  "selectorIgnore": [
                    "html",
                    ".ignore-test**"
                  ],
                  /* @pxtorem-ignore */
                  "commentIgnore": "@pxtorem-ignore",
                  "keyValueIgnore": {
                    "font-size": "12px"
                  }
                }
              }
            ]
          ]
        }
      }
    ]
  ],
  "plugins": []
}

examples styled-jsx

// input
.hello {
  padding: 100px;

  :global(.button-50px) {
    background-image: none;
  }
}

// output
.hello {
  padding: 1rem;

  :global(.button-50px) {
    background-image: none;
  }
}

// input
.test {
  /* @pxtorem-ignore */
  margin: 10px;
  /* @pxtorem-ignore */
  padding: 10px;
  font-size: 12px; // options.keyValueIgnore
  background: url(10px.jpg);
}

// output
.test {
  /* @pxtorem-ignore */
  margin: 10px;
  /* @pxtorem-ignore */
  padding: 10px;
  font-size: 12px; // options.keyValueIgnore
  background: url(10px.jpg);
}

// input
:root {
  --a12px: 12px;
}

.var-test {
  padding: var(--a12px);
}

// output
:root {
  --a12px: 0.12rem;
}

.var-test {
  padding: var(--a12px);
}

// input options.selectorIgnore ["html"]
html {
  font-size: 30px;
  margin: 30px;

  .b {
    font-size: 25px;
  }
}

html {
  padding: 24px;
}

.b {
  font-size: 30px;
}

// output options.selectorIgnore ["html"]
html {
  font-size: 30px;
  margin: 30px;

  .b {
    font-size: 0.25rem;
  }
}

html {
  padding: 24px;
}

.b {
  font-size: 0.3rem;
}

// input options.selectorIgnore [".ignore-test**"]
.ignore-test {
  font-size: 30px;

  .b {
    font-size: 25px;
  }
}

.a {
  font-size: 30px;
}

// output options.selectorIgnore [".ignore-test**"]
.ignore-test {
  font-size: 30px;

  .b {
    font-size: 25px;
  }
}

.a {
  font-size: 0.3rem;
}

// input/output options.mediaQuery false
@media screen and (min-width: 1000px) and (max-width: 1280px) {
  .a {
    color: #fff;
    background: url("20px.jpg");
  }
}

License

MIT

styled-jsx-plugin-sass's People

Contributors

giuseppeg avatar tomekmularczyk avatar j-env avatar andrewb avatar atombender avatar danielgamage avatar gameghostify avatar marcporciuncula avatar

Watchers

James Cloos 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.