包详细信息

@stylexjs/postcss-plugin

facebook35.8kMIT0.15.3

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.15.3 (Aug 13, 2025)

  • Optimize precomputed props calls in JSX.
  • Fix class name construction for dynamic contextual styles.
  • Handle all unit values in media query rewriting.

0.15.2 (Aug 1, 2025)

  • Exclude private dependencies from @stylexjs/babel-plugin package.
  • Reduce chances of dynamic variable name collisions.

0.15.1 (Aug 1, 2025)

Fixes

  • Hoist stylex.create and static className objects to the top level for support inside functions.

0.15.0 (Jul 31, 2025)

New features

  • Enable media query ordering and parsing behind enableMediaQueryOrder flag.
  • Integrate media query parser for automatic media query validation and normalization.

Fixes

  • Implement merging of width, height, and ranges in media query transformer.
  • Optimize dynamic styles output for conditionals and template literals.
  • Fix TypeScript types for stylex.types.* functions.
  • Fix opaque type issues for InlineStyles.

0.14.3 (Jul 22, 2025)

Fixes

  • Do not emit class names for null or undefined dynamic styles.
  • Optimize dynamic styles output for binary and unary expressions.

0.14.2 (Jul 14, 2025)

Fixes

  • ESLint plugin style validation for length properties (#1136)
  • Remove legacy RTL flipping of boxShadow, cursor, textShadow values.

0.14.1 (Jul 3, 2025)

Fixes

  • Another fix for TypeScript types.

0.14.0 (Jun 30, 2025)

New features

  • Add viewTransitionClass API for creating CSS View Transitions.
  • ESLint plugin includes validImports options for all rules.
  • ESLint plugin includes autofix for all remaining nonstandard CSS properties when using the valid-styles rule.

Breaking changes

  • Make property-specificity the default styleResolution.

Fixes

  • Fix theming in dev/debug mode.
  • Avoid putting certain @-rules in @layer blocks.
  • Fix type exports for TypeScript.

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)