# System map — postcss/postcss

> Canonical page: https://codevetter.com/unpack/postcss/system-map

# System map — postcss/postcss

Scanned commit 7ac902664902289ea0cb9d6b1096b81e8d33bbf5 (2026-09-29). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

The package is an embeddable CSS-processing library distributed through CommonJS and ESM entrypoints with TypeScript declarations. Its runtime separates input handling, tokenization, parsing, plugin orchestration, AST mutation, and serialization. Processing state lives in memory; source-map discovery introduces a filesystem-read boundary, while runners own output persistence. Package scripts and GitHub Actions define validation and publishing rather than an application server deployment.
- package.json routes require to lib/postcss.js, import to lib/postcss.mjs, and typings to lib/postcss.d.ts; the ESM module re-exports the CommonJS API. — [package.json#L37-50](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/package.json#L37-L50) [lib/postcss.mjs#L1-30](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/postcss.mjs#L1-L30)
- postcss(...plugins) accepts either variadic plugins or one array and constructs Processor; the entrypoint also exports parse, stringify, fromJSON, node factories, and AST classes. — [lib/postcss.js#L22-27](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/postcss.js#L22-L27) [lib/postcss.js#L72-98](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/postcss.js#L72-L98)
- Processor owns the normalized plugin list and selects NoWorkResult only when plugins, parser, stringifier, and syntax are all absent; other processing uses LazyResult. — [lib/processor.js#L8-12](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/processor.js#L8-L12) [lib/processor.js#L44-59](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/processor.js#L44-L59)
- The default parser boundary is parse → Input → Parser → tokenizer; Parser constructs a Root and consumes tokens through nextToken rather than materializing a complete token list. — [lib/parse.js#L7-11](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/parse.js#L7-L11) [lib/parser.js#L29-39](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/parser.js#L29-L39) [lib/parser.js#L451-486](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/parser.js#L451-L486) [lib/tokenize.js#L260-269](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/tokenize.js#L260-L269)
- Node supplies common metadata and operations, Container supplies children and traversal, Root represents CSS, and Document contains roots; Result holds processor, root, options, messages, CSS, and map. — [lib/node.js#L78-105](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/node.js#L78-L105) [lib/container.js#L34-53](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/container.js#L34-L53) [lib/document.js#L7-20](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/document.js#L7-L20) [lib/result.js#L5-17](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/result.js#L5-L17)
- The three runtime dependencies are nanoid, picocolors, and source-map-js; browser mappings disable filesystem/path/URL support, terminal highlighting, and source-map-js, with availability checks in Input and MapGenerator. — [package.json#L38-44](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/package.json#L38-L44) [package.json#L91-95](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/package.json#L91-L95) [lib/input.js#L14-15](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/input.js#L14-L15) [lib/map-generator.js#L9-10](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/lib/map-generator.js#L9-L10)
- Existing validation scripts cover ESLint, declaration checks, version consistency, c8 coverage, parser integration, and bundle size; unit tests run through uvu with ts-node transpile-only. — [package.json#L80-89](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/package.json#L80-L89) [tsconfig.json#L2-11](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/tsconfig.json#L2-L11)
- Tag pushes trigger cleaned-package npm publishing and changelog-based GitHub releases in separate jobs; tests, docs, and development configs are excluded through .npmignore, and publishing is not gated by a test job inside release.yml. — [.github/workflows/release.yml#L1-28](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/.github/workflows/release.yml#L1-L28) [.github/workflows/release.yml#L29-41](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/.github/workflows/release.yml#L29-L41) [.npmignore#L1-7](https://github.com/postcss/postcss/blob/7ac902664902289ea0cb9d6b1096b81e8d33bbf5/.npmignore#L1-L7)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
