225 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			225 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| # @coze-arch/postcss-config
 | |
| 
 | |
| A shared PostCSS configuration for Coze architecture projects that provides a standardized set of PostCSS plugins for modern CSS preprocessing and Tailwind CSS integration.
 | |
| 
 | |
| ## Features
 | |
| 
 | |
| - **PostCSS Import**: Process `@import` statements and inline imported files
 | |
| - **Tailwind CSS Nesting**: Full support for CSS nesting with Tailwind CSS compatibility
 | |
| - **Autoprefixer**: Automatic vendor prefixing for cross-browser compatibility
 | |
| - **Modern CSS Support**: Enhanced pseudo-class support with `:is()` functionality
 | |
| - **Zero Configuration**: Works out of the box with sensible defaults
 | |
| - **Optimized Build**: Configured for both development and production workflows
 | |
| 
 | |
| ## Get Started
 | |
| 
 | |
| ### Installation
 | |
| 
 | |
| ```bash
 | |
| # Install as a workspace dependency
 | |
| npm install @coze-arch/postcss-config@workspace:*
 | |
| 
 | |
| # Update rush dependencies
 | |
| rush update
 | |
| ```
 | |
| 
 | |
| ### Basic Usage
 | |
| 
 | |
| Create a `postcss.config.js` file in your project root:
 | |
| 
 | |
| ```javascript
 | |
| module.exports = require('@coze-arch/postcss-config');
 | |
| ```
 | |
| 
 | |
| Or extend the configuration:
 | |
| 
 | |
| ```javascript
 | |
| const baseConfig = require('@coze-arch/postcss-config');
 | |
| 
 | |
| module.exports = {
 | |
|   ...baseConfig,
 | |
|   plugins: {
 | |
|     ...baseConfig.plugins,
 | |
|     // Add your custom plugins here
 | |
|     'postcss-custom-plugin': {},
 | |
|   },
 | |
| };
 | |
| ```
 | |
| 
 | |
| ### Integration with Build Tools
 | |
| 
 | |
| #### Webpack
 | |
| 
 | |
| ```javascript
 | |
| module.exports = {
 | |
|   module: {
 | |
|     rules: [
 | |
|       {
 | |
|         test: /\.css$/,
 | |
|         use: [
 | |
|           'style-loader',
 | |
|           'css-loader',
 | |
|           'postcss-loader', // Will automatically use postcss.config.js
 | |
|         ],
 | |
|       },
 | |
|     ],
 | |
|   },
 | |
| };
 | |
| ```
 | |
| 
 | |
| #### Vite
 | |
| 
 | |
| ```javascript
 | |
| // vite.config.js
 | |
| export default {
 | |
|   css: {
 | |
|     postcss: require('@coze-arch/postcss-config'),
 | |
|   },
 | |
| };
 | |
| ```
 | |
| 
 | |
| #### Rsbuild
 | |
| 
 | |
| ```javascript
 | |
| // rsbuild.config.js
 | |
| export default {
 | |
|   tools: {
 | |
|     postcss: require('@coze-arch/postcss-config'),
 | |
|   },
 | |
| };
 | |
| ```
 | |
| 
 | |
| ## API Reference
 | |
| 
 | |
| ### Default Configuration
 | |
| 
 | |
| The package exports a PostCSS configuration object with the following plugins:
 | |
| 
 | |
| ```javascript
 | |
| {
 | |
|   plugins: {
 | |
|     'postcss-import': {},
 | |
|     'tailwindcss/nesting': 'postcss-nesting',
 | |
|     'tailwindcss': {},
 | |
|     'autoprefixer': {},
 | |
|     '@csstools/postcss-is-pseudo-class': {},
 | |
|   }
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Plugin Details
 | |
| 
 | |
| #### postcss-import
 | |
| - **Purpose**: Processes `@import` statements and inlines imported CSS files
 | |
| - **Configuration**: Default settings (empty object)
 | |
| - **Use Case**: Modular CSS organization and file imports
 | |
| 
 | |
| #### tailwindcss/nesting
 | |
| - **Purpose**: Enables CSS nesting syntax compatible with Tailwind CSS
 | |
| - **Configuration**: Uses `postcss-nesting` as the nesting implementation
 | |
| - **Use Case**: Writing nested CSS with Tailwind utility classes
 | |
| 
 | |
| #### tailwindcss
 | |
| - **Purpose**: Processes Tailwind CSS utility classes and directives
 | |
| - **Configuration**: Default settings (reads from `tailwind.config.js`)
 | |
| - **Use Case**: Utility-first CSS framework integration
 | |
| 
 | |
| #### autoprefixer
 | |
| - **Purpose**: Automatically adds vendor prefixes to CSS properties
 | |
| - **Configuration**: Default settings (uses browserslist configuration)
 | |
| - **Use Case**: Cross-browser compatibility without manual prefixing
 | |
| 
 | |
| #### @csstools/postcss-is-pseudo-class
 | |
| - **Purpose**: Transforms `:is()` pseudo-class for better browser support
 | |
| - **Configuration**: Default settings
 | |
| - **Use Case**: Modern CSS pseudo-class support in older browsers
 | |
| 
 | |
| ### Customization Examples
 | |
| 
 | |
| #### Adding Custom Plugins
 | |
| 
 | |
| ```javascript
 | |
| const baseConfig = require('@coze-arch/postcss-config');
 | |
| 
 | |
| module.exports = {
 | |
|   ...baseConfig,
 | |
|   plugins: {
 | |
|     ...baseConfig.plugins,
 | |
|     'postcss-custom-properties': {
 | |
|       preserve: false,
 | |
|     },
 | |
|     'cssnano': {
 | |
|       preset: 'default',
 | |
|     },
 | |
|   },
 | |
| };
 | |
| ```
 | |
| 
 | |
| #### Plugin Order Customization
 | |
| 
 | |
| ```javascript
 | |
| const baseConfig = require('@coze-arch/postcss-config');
 | |
| 
 | |
| module.exports = {
 | |
|   plugins: {
 | |
|     'postcss-import': baseConfig.plugins['postcss-import'],
 | |
|     'custom-plugin': {},
 | |
|     'tailwindcss/nesting': baseConfig.plugins['tailwindcss/nesting'],
 | |
|     'tailwindcss': baseConfig.plugins['tailwindcss'],
 | |
|     'autoprefixer': baseConfig.plugins['autoprefixer'],
 | |
|     '@csstools/postcss-is-pseudo-class': baseConfig.plugins['@csstools/postcss-is-pseudo-class'],
 | |
|   },
 | |
| };
 | |
| ```
 | |
| 
 | |
| ## Development
 | |
| 
 | |
| ### Project Structure
 | |
| 
 | |
| ```
 | |
| config/postcss-config/
 | |
| ├── src/
 | |
| │   └── index.js          # Main configuration export
 | |
| ├── package.json          # Package configuration
 | |
| ├── eslint.config.js      # ESLint configuration
 | |
| ├── tsconfig.*.json       # TypeScript configurations
 | |
| └── README.md            # This file
 | |
| ```
 | |
| 
 | |
| ### Development Commands
 | |
| 
 | |
| ```bash
 | |
| # Lint the code
 | |
| rush lint
 | |
| 
 | |
| # Run all checks
 | |
| rush build
 | |
| ```
 | |
| 
 | |
| ### Contributing
 | |
| 
 | |
| 1. Follow the existing code style and configuration patterns
 | |
| 2. Ensure all linting passes before submitting changes
 | |
| 3. Test the configuration with actual PostCSS processing
 | |
| 4. Update documentation for any configuration changes
 | |
| 
 | |
| ## Dependencies
 | |
| 
 | |
| ### Runtime Dependencies
 | |
| 
 | |
| - **postcss**: Core PostCSS processor
 | |
| - **postcss-import**: Import processing plugin
 | |
| - **postcss-loader**: Webpack integration
 | |
| - **postcss-nesting**: CSS nesting support
 | |
| - **@tailwindcss/nesting**: Tailwind-compatible nesting
 | |
| - **@csstools/postcss-is-pseudo-class**: Modern pseudo-class support
 | |
| 
 | |
| ### Development Dependencies
 | |
| 
 | |
| - **@coze-arch/eslint-config**: Shared ESLint configuration
 | |
| - **@coze-arch/ts-config**: Shared TypeScript configuration
 | |
| - **@types/node**: Node.js type definitions
 | |
| 
 | |
| ## License
 | |
| 
 | |
| Internal use within Coze architecture projects. |