0.2.0 • Published 2 years ago

atomic-css-webpack-plugin v0.2.0

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

Atomic CSS Webpack Plugin

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

FieldExplainTypeDefaultRequired
configConfig file pathstring''true
versoinwebpack big versionstring/number 5 or 4'4'false
assetsCss asset output path (if you set 'css', atomic.css will output in css dir)string''false
publicPathCss asset output publicPathstring'/'false
importWayuse link or style tag import css'link'/'inline''inline'false
parsercustomer parse logic for your own config filefunction(config){}nullfalse

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;
}
0.1.2

3 years ago

0.2.0

2 years ago

0.1.1

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.9

2 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.1.0

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.1

3 years ago