Giter Site home page Giter Site logo

atomic-css-webpack-plugin's Introduction

Atomic CSS Webpack Plugin

npm version

Chinese Docs

Atomized CSS development enhancement plugin. Inspired by Tailwindcss.

  • Framework independent
  • Support completely custom configuration (now you have to have one config file, plugin will not support default config anymore)
  • Flexible naming rules (it's better than Tailwindcss in this way)
  • On-demanded usage(you can custom your config file follow your need, you won't get one redundant css classes file)
  • Support utils to custom css utils
  • Support !important (it's better than Tailwindcss)
  • with purgecss to remove useless css content

With VSCode Plugin 「IntelliSense for CSS class names in HTML」experience better.

demo

atomic css webpack plugin

useage

npm i -D atomic-css-webpack-plugin@latest

example

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const AtomicCSSWebpackPlugin = require("atomic-css-webpack-plugin");

module.exports = {
  mode: "development",
  entry: path.resolve(__dirname, "./app.js"),
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "bundle.[hash].js",
    clean: true
  },
  plugins: [
    new HtmlWebpackPlugin({
      title: "Atomic CSS Webpack Plugin",
      minify: "auto"
    }),
    new AtomicCSSWebpackPlugin({
      config: path.resolve(__dirname, "./myconfig.js")
    }) // you can use your customized config file or you just use the default config
  ]
};

plugin config

Field Explain Type Default Required
config Config file path string '' true
versoin webpack big version string/number 5 or 4 '4' false
assets Css asset output path (if you set 'css', atomic.css will output in css dir) string '' false
publicPath Css asset output publicPath string '/' false
importWay use link or style tag import css 'link'/'inline' 'inline' false
parser customer parse logic for your own config file function(config){} null false

config rules

config file is one js module object, just like below:

module.exports = {
  atomic: {
    text: {
      // className prefix
      color: {
        // css property
        "-white": "#fff" // className postfix : css value
      },
      "text-align": {
        "-center!": "center" // postfix with `!` you will get `!important` class
      }
    },
    p: {
      "padding-left": {
        "l-10": "10px"
      },
      "padding-right": {
        "r-10": "10px"
      },
      "padding-left$padding-right": {
        // if you want to set more than one property, use `$` to split
        "x-10": "10px"
      }
    }
  },
  utils: {
    link: {
      css: {
        color: "blue",
        cursor: "pointer"
      },
      actions: {
        hover: {
          color: "red"
        }
      }
    }
  }
};

with above config file, you will get below css classes:

.text-white {
  color: #fff;
}
.text-center {
  text-align: center !important;
}
.pl-10 {
  padding-left: 10px;
}
.pr-10 {
  padding-right: 10px;
}
.px-10 {
  padding-left: 10px;
  padding-right: 10px;
}
.link {
  color: blue;
  cursor: pointer;
}
.link:hover {
  color: red;
}

but if you only used text-center, finally you will get css file as below

.text-center {
  text-align: center !important;
}

atomic-css-webpack-plugin's People

Contributors

githubjike avatar

Stargazers

 avatar

Watchers

 avatar  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.