包详细信息

@stylexjs/postcss-plugin

facebook5.8kMIT0.13.1

PostCSS plugin for StyleX

自述文件

@stylexjs/postcss-plugin

Documentation Website

https://stylexjs.com

Installation

Install the package by using:

npm install --save-dev @stylexjs/postcss-plugin autoprefixer

or with yarn:

yarn add --dev @stylexjs/postcss-plugin autoprefixer

Add the following to your postcss.config.js

// postcss.config.js
module.exports = {
  plugins: {
    '@stylexjs/postcss-plugin': {
      include: ['src/**/*.{js,jsx,ts,tsx}'],
    },
    autoprefixer: {},
  },
};

Add the following to your babel.config.js

import styleXPlugin from '@stylexjs/babel-plugin';

const config = {
  plugins: [
    [
      styleXPlugin,
      {
        // Required for this plugin
        runtimeInjection: false,
        dev: true,
        // Set this to true for snapshot testing
        // default: false
        test: false,
        // Required for CSS variable support
        unstable_moduleResolution: {
          // type: 'commonJS' | 'haste'
          // default: 'commonJS'
          type: 'commonJS',
          // The absolute path to the root directory of your project
          rootDir: __dirname,
        },
      },
    ],
  ],
};

export default config;

Add the following to src/stylex.css

/**
 * The @stylex directive is used by the @stylexjs/postcss-plugin.
 * It is automatically replaced with generated CSS during builds.
 */
@stylex;

Then, import this file from your application entrypoint:

// src/index.js
import './stylex.css';

Plugin Options

include

include: string[] // Required

Array of paths or glob patterns to compile.


exclude

exclude: string[] // Default: []

Array of paths or glob patterns to exclude from compilation. Paths in exclude take precedence over include.


cwd

cwd: string; // Default: process.cwd()

Working directory for the plugin; defaults to process.cwd().


babelConfig

babelConfig: object; // Default: {}

Options for Babel configuration. By default, the plugin reads from babel.config.js in your project. For custom configurations, set babelrc: false and specify desired options. Refer to Babel Config Options for available options.


useCSSLayers

useCSSLayers: boolean; // Default: false

Enabling this option switches Stylex from using :not(#\#) to using @layers for handling CSS specificity.


importSources

importSources: Array<string | { from: string, as: string }>; // Default: ['@stylexjs/stylex', 'stylex']

Possible strings where you can import stylex from. Files that do not match the import sources may be skipped from being processed to speed up compilation.

更新日志

Changelog

0.13.1 (May 21, 2025)

Fixes

  • Export additional Types.

0.13.0 (May 19, 2025)

New features

  • Add positionTry API for creating @property-try declarations.
  • Add defineConsts API for inlining constant values.
  • Re-write of the runtime style injection module to be more reliable.

Breaking changes

  • The runtimeInjection compiler option is now disabled by default when dev is true.
  • The ESLint rule no-legacy-conditional-styles is renamed to no-legacy-contextual-styles.
  • The useRemForFontSize compiler option is renamed to enableFontSizePxToRem. It is disabled by default and should not be used directly.
  • The genConditionalClasses compiler option is renamed to enableInlinedConditionalMerge. It is enabled by default and should not be used directly.
  • The attrs API is removed due to low usage and redundancy with the props API.

Fixes

  • Fix the TypeScript types for themes and types functions.
  • Fix the creation of duplicate classNames when defining nested pseudo-classes.
  • Fix that allows the ESLint plugin to support use of importSources object syntax in validImports.
  • Fix incorrect compiler error messages.
  • Fix a bug that incorrectly wrapped CSS variables in quotes when used in the content property.
  • Fix a bug in the firstThatWorks API when the last value was a variable.
  • Allow importSources to be configured in the PostCSS plugin for React Strict DOM compatibility.

Deprecations

  • Deprecate @stylexjs/shared package.

0.12.0 (Apr 10, 2025)

New features

  • Hash keys in compiled style objects to reduce generated code size.
  • New eslint rule to flag use of legacy Media Query and pseudo-class syntax.

Fixes

  • Fix pseudo-elements bug in dynamic styles.
  • Performance improvements to createTheme compilation by caching object evaluation.
  • Disallow spreading in create calls.

Deprecations

  • Deprecate @stylexjs/dev-runtime package.
  • Deprecate @stylexjs/esbuild-plugin package.
  • Deprecate @stylexjs/nextjs-plugin package.
  • Deprecate @stylexjs/open-props package.
  • Deprecate @stylexjs/webpack-plugin package.

0.11.1 (Mar 3, 2025)

Fixes

  • Fix create compilation regression for string and number keys.
  • Fix babel path resolution within monorepos.

0.11.0 (Feb 27, 2025)