0.8.1 • Published 2 months ago

@stylexswc/webpack-plugin v0.8.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

Webpack plugin with NAPI-RS StyleX compiler integration

Webpack plugin for an unofficial napi-rs compiler that includes the StyleX SWC code transformation under the hood.

Installation

To install the package, run the following command:

npm install --save-dev @stylexswc/webpack-plugin

Please install @stylexswc/rs-compiler if you haven't done so already:

npm install --save-dev @stylexswc/rs-compiler

Usage

Modify Webpack config. For example:

const StylexPlugin = require('@stylexswc/webpack-plugin');
const path = require('path');

const config = (env, argv) => ({
  entry: {
    main: './js/index.js',
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].js',
  },
  plugins: [
    new StylexPlugin({
      // ... Other StyleX options
      transformCss: async (css, filePath) => {
        const postcss = require('postcss');
        const result = await postcss([require('autoprefixer')]).process(css, {
          from: filePath,
          map: {
            inline: false,
            annotation: false,
          },
        });
        return result.css;
      },
    }),
  ],
  cache: true,
});

module.exports = config;

Plugin Options

Basic Options

rsOptions

  • Type: Partial<StyleXOptions>
  • Optional
  • Description: StyleX compiler options that will be passed to the NAPI-RS compiler. See StyleX configuration docs for details.

stylexImports

  • Type: Array<string | { as: string, from: string }>
  • Default: ['stylex', '@stylexjs/stylex']
  • Description: Specifies where StyleX will be imported from. Supports both string paths and import aliases.

useCSSLayers

  • Type: boolean
  • Default: false
  • Description: Enables CSS cascade layers support for better style isolation.

nextjsMode

  • Type: boolean
  • Default: false
  • Description: Enables Next.js-specific optimizations and compatibility features.

extractCSS

  • Type: boolean
  • Optional
  • Default: true
  • Description: Controls whether CSS should be extracted into a separate file

Advanced Options

transformCss

  • Type: (css: string, filePath: string | undefined) => string | Buffer | Promise<string | Buffer>
  • Optional
  • Description: Custom CSS transformation function. Since the plugin injects CSS after all loaders, use this to apply PostCSS or other CSS transformations.

Example Configuration

const StylexPlugin = require('@stylexswc/webpack-plugin');

module.exports = {
  plugins: [
    new StylexPlugin({
      rsOptions: {
        dev: process.env.NODE_ENV !== 'production',
        useRemForFontSize: true,
      },
      stylexImports: ['@stylexjs/stylex', { from: './theme', as: 'tokens' }],
      useCSSLayers: true,
      nextjsMode: false,
      transformCss: async css => {
        const postcss = require('postcss');
        const result = await postcss([require('autoprefixer')]).process(css);
        return result.css;
      },
    }),
  ],
};

Documentation

Acknowledgments

This plugin was inspired by stylex-webpack.

0.7.1-rc.2

4 months ago

0.7.1-rc.1

4 months ago

0.8.0-rc.2

2 months ago

0.8.0-rc.1

2 months ago

0.7.1

4 months ago

0.7.0

4 months ago

0.8.1-rc.1

2 months ago

0.7.0-rc.5

4 months ago

0.8.1

2 months ago

0.8.0

2 months ago

0.7.0-rc.4

4 months ago

0.7.0-rc.3

4 months ago

0.7.0-rc.2

4 months ago

0.7.0-rc.1

4 months ago

0.7.0-dev.1

4 months ago

0.6.6

5 months ago

0.6.6-rc.2

5 months ago

0.6.6-rc.1

5 months ago

0.6.5

5 months ago

0.6.5-rc.1

5 months ago

0.6.4

5 months ago

0.6.4-rc.2

5 months ago

0.6.4-rc.1

5 months ago

0.6.3

6 months ago

0.6.3-rc.4

6 months ago

0.6.3-rc.3

6 months ago

0.6.3-rc.2

6 months ago

0.6.3-rc.1

6 months ago

0.6.2

6 months ago

0.6.2-rc.5

6 months ago

0.6.2-rc.4

6 months ago

0.6.2-rc.2

6 months ago

0.6.2-rc.1

6 months ago

0.6.1

6 months ago

0.6.1-rc.2

6 months ago

0.6.1-rc.1

6 months ago

0.6.0

6 months ago

0.6.0-rc.2

6 months ago

0.6.0-rc.1

6 months ago

0.5.1

7 months ago

0.5.1-rc.2

7 months ago

0.5.1-rc.1

7 months ago

0.5.0

7 months ago

0.5.0-rc.3

7 months ago

0.5.0-rc.2

7 months ago

0.5.0-rc.1

7 months ago

0.4.4

8 months ago

0.4.4-rc.5

8 months ago

0.4.4-rc.4

8 months ago

0.4.4-rc.3

8 months ago

0.4.4-rc.2

8 months ago

0.4.4-rc.1

8 months ago

0.4.3

8 months ago

0.4.3-rc.2

8 months ago

0.4.3-rc.1

8 months ago

0.4.2

8 months ago

0.4.2-rc.2

8 months ago

0.4.2-rc.1

8 months ago

0.4.1

8 months ago

0.4.1-rc.2

8 months ago

0.4.1-rc.1

8 months ago

0.4.1-dev.1

8 months ago

0.4.0

8 months ago

0.4.0-rc.3

8 months ago

0.4.0-rc.2

8 months ago

0.4.0-rc.1

8 months ago