Skip to content

Another esbuild plugin for bundling style files. Support SASS, LESS, STYLUS and css. Handles css modules and works with server side rendering.

Notifications You must be signed in to change notification settings

ApelegHQ/esbuild-style-plugin

 
 

Repository files navigation

esbuild-style-plugin

Another esbuild plugin for your styling.

  • Supports multiple preprocessors like SASS, STYLUS, LESS
  • Dynamic preprocessors import - no preprocessors installed by default
  • Handles css modules automatically with PostCSS
  • You can include postcss plugins (autoprefixer, preset-env)
  • Can read postcss.config.js config file - if path is provided in postcssConfigFile option
  • Support postcss/tailwindcss dependencies for watching files - https://github.com/postcss/postcss/blob/main/docs/guidelines/plugin.md#3-dependencies
  • SSR / Server side rendering friendly :)
  • Temp file cleanup and caching (TODO)
  • Includes d.ts files in dist
  • Build format for both cjs and esm
  • Support esbuild watch
  • Written in Typescript with maintainable code

NPM package

npm i -D esbuild-style-plugin

Using the package

Look at the test files or here is a basic example

import stylePlugin from 'esbuild-style-plugin'
//const stylePlugin = require('esbuild-style-plugin')

esbuild.build({
  plugins: [
    stylePlugin()
  ]
})

Plugin options

Preprocessor

The plugin does not come with all preprocessor installed since you might not need all of them.

Install the ones you need!

  • SASS npm i -D sass
  • LESS npm i -D less
  • STYLUS npm i -D stylus

CSS Modules

Server side rendering

A specific use case that this plugin covers is SSR. Using extract: false will not process css on server side but will keep css mapping for css modules.

PostCSS

The plugin is using PostCSS to handle css modules files. You can include any other plugins with the postcss option.

CSSNano

Do not use cssnano plugin. It won't work and if it did it minifies all files seperatly (slow not efficient). Just let esbuild minify and do his job.

Preprocessors import typings

If you want to be able to use import styles from 'styles.module.sass' without any errors Just add esbuild-style-plugin to your types in tsconfig.json

tsconfig.json import types

About

Another esbuild plugin for bundling style files. Support SASS, LESS, STYLUS and css. Handles css modules and works with server side rendering.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 88.3%
  • JavaScript 4.5%
  • CSS 3.7%
  • Sass 1.4%
  • SCSS 0.9%
  • Less 0.7%
  • Other 0.5%