microsoft/rushstack
GitHub: microsoft/rushstack
微软开源的大规模 TypeScript monorepo 工具集,涵盖构建编排、API 签名管理、文档生成和代码规范等全链路能力。
Stars: 6463 | Forks: 684
[](https://rushstack.zulipchat.com/) [](https://github.com/microsoft/rushstack/actions/workflows/ci.yml?query=branch%3Amain)
这里是 Rush Stack 社区维护的项目主页。我们的使命是为大规模 TypeScript monorepos 开发可复用的工具。
[](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=69618902&machine=standardLinux32gb&devcontainer_path=.devcontainer%2Fdevcontainer.json&location=WestUs2)
## 文档链接
- [什么是 Rush Stack?](https://rushstack.io/) - 了解这些项目背后的使命
- [API 参考](https://api.rushstack.io/) - 浏览 NPM 包的 API 文档
- [Zulip 聊天室](https://rushstack.zulipchat.com/) - 与 Rush Stack 开发人员交流
- [Rush](https://rushjs.io/) - 面向大规模 TypeScript monorepos 的构建编排器
- [Heft](https://heft.rushstack.io/) - 我们推荐的与 Rush 集成的工具
- [API Extractor](https://api-extractor.com/) - 创建 .d.ts 汇总文件并追踪您的 TypeScript API 签名
- [API Documenter](https://api-extractor.com/pages/setup/generating_docs/) - 使用 TSDoc 注释发布 API 文档网站
- [Lockfile Explorer](https://lfx.rushstack.io/) - 调查并解决 PNPM lockfiles 的版本冲突
- [TSDoc](https://tsdoc.org/) - TypeScript 代码中文档注释的标准
## 相关仓库
这些 GitHub 仓库为 Rush Stack 提供了补充资源:
- [rushstack-samples](https://github.com/microsoft/rushstack-samples) - 一个包含示例项目的 monorepo,
展示了各种项目配置,包括如何将 Heft 与其他流行的 JavaScript 框架结合使用
- [rush-example](https://github.com/microsoft/rush-example) - 一个最小化的 Rush 仓库,演示了 Rush 的基本原理,
且不依赖于任何其他 Rush Stack 工具
- [rushstack-websites](https://github.com/microsoft/rushstack-websites) - 我们网站使用的 Docusaurus monorepo
## 已发布的包
| 文件夹 | 版本 | 更新日志 | 包 |
| ------ | ------- | --------- | ------- |
| [/apps/api-documenter](./apps/api-documenter/) | [](https://badge.fury.io/js/%40microsoft%2Fapi-documenter) | [更新日志](./apps/api-documenter/CHANGELOG.md) | [@microsoft/api-documenter](https://www.npmjs.com/package/@microsoft/api-documenter) |
| [/apps/api-extractor](./apps/api-extractor/) | [](https://badge.fury.io/js/%40microsoft%2Fapi-extractor) | [更新日志](./apps/api-extractor/CHANGELOG.md) | [@microsoft/api-extractor](https://www.npmjs.com/package/@microsoft/api-extractor) |
| [/apps/cpu-profile-summarizer](./apps/cpu-profile-summarizer/) | [](https://badge.fury.io/js/%40rushstack%2Fcpu-profile-summarizer) | [更新日志](./apps/cpu-profile-summarizer/CHANGELOG.md) | [@rushstack/cpu-profile-summarizer](https://www.npmjs.com/package/@rushstack/cpu-profile-summarizer) |
| [/apps/heft](./apps/heft/) | [](https://badge.fury.io/js/%40rushstack%2Fheft) | [更新日志](./apps/heft/CHANGELOG.md) | [@rushstack/heft](https://www.npmjs.com/package/@rushstack/heft) |
| [/apps/lockfile-explorer](./apps/lockfile-explorer/) | [](https://badge.fury.io/js/%40rushstack%2Flockfile-explorer) | [更新日志](./apps/lockfile-explorer/CHANGELOG.md) | [@rushstack/lockfile-explorer](https://www.npmjs.com/package/@rushstack/lockfile-explorer) |
| [/apps/playwright-browser-tunnel](./apps/playwright-browser-tunnel/) | [](https://badge.fury.io/js/%40rushstack%2Fplaywright-browser-tunnel) | [更新日志](./apps/playwright-browser-tunnel/CHANGELOG.md) | [@rushstack/playwright-browser-tunnel](https://www.npmjs.com/package/@rushstack/playwright-browser-tunnel) |
| [/apps/rundown](./apps/rundown/) | [](https://badge.fury.io/js/%40rushstack%2Frundown) | [更新日志](./apps/rundown/CHANGELOG.md) | [@rushstack/rundown](https://www.npmjs.com/package/@rushstack/rundown) |
| [/apps/rush](./apps/rush/) | [](https://badge.fury.io/js/%40microsoft%2Frush) | [更新日志](./apps/rush/CHANGELOG.md) | [@microsoft/rush](https://www.npmjs.com/package/@microsoft/rush) |
| [/apps/rush-mcp-server](./apps/rush-mcp-server/) | [](https://badge.fury.io/js/%40rushstack%2Fmcp-server) | [更新日志](./apps/rush-mcp-server/CHANGELOG.md) | [@rushstack/mcp-server](https://www.npmjs.com/package/@rushstack/mcp-server) |
| [/apps/trace-import](./apps/trace-import/) | [](https://badge.fury.io/js/%40rushstack%2Ftrace-import) | [更新日志](./apps/trace-import/CHANGELOG.md) | [@rushstack/trace-import](https://www.npmjs.com/package/@rushstack/trace-import) |
| [/apps/zipsync](./apps/zipsync/) | [](https://badge.fury.io/js/%40rushstack%2Fzipsync) | [更新日志](./apps/zipsync/CHANGELOG.md) | [@rushstack/zipsync](https://www.npmjs.com/package/@rushstack/zipsync) |
| [/eslint/eslint-bulk](./eslint/eslint-bulk/) | [](https://badge.fury.io/js/%40rushstack%2Feslint-bulk) | [更新日志](./eslint/eslint-bulk/CHANGELOG.md) | [@rushstack/eslint-bulk](https://www.npmjs.com/package/@rushstack/eslint-bulk) |
| [/eslint/eslint-config](./eslint/eslint-config/) | [](https://badge.fury.io/js/%40rushstack%2Feslint-config) | [更新日志](./eslint/eslint-config/CHANGELOG.md) | [@rushstack/eslint-config](https://www.npmjs.com/package/@rushstack/eslint-config) |
| [/eslint/eslint-patch](./eslint/eslint-patch/) | [](https://badge.fury.io/js/%40rushstack%2Feslint-patch) | [更新日志](./eslint/eslint-patch/CHANGELOG.md) | [@rushstack/eslint-patch](https://www.npmjs.com/package/@rushstack/eslint-patch) |
| [/eslint/eslint-plugin](./eslint/eslint-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Feslint-plugin) | [更新日志](./eslint/eslint-plugin/CHANGELOG.md) | [@rushstack/eslint-plugin](https://www.npmjs.com/package/@rushstack/eslint-plugin) |
| [/eslint/eslint-plugin-packlets](./eslint/eslint-plugin-packlets/) | [](https://badge.fury.io/js/%40rushstack%2Feslint-plugin-packlets) | [更新日志](./eslint/eslint-plugin-packlets/CHANGELOG.md) | [@rushstack/eslint-plugin-packlets](https://www.npmjs.com/package/@rushstack/eslint-plugin-packlets) |
| [/eslint/eslint-plugin-security](./eslint/eslint-plugin-security/) | [](https://badge.fury.io/js/%40rushstack%2Feslint-plugin-security) | [更新日志](./eslint/eslint-plugin-security/CHANGELOG.md) | [@rushstack/eslint-plugin-security](https://www.npmjs.com/package/@rushstack/eslint-plugin-security) |
| [/heft-plugins/heft-api-extractor-plugin](./heft-plugins/heft-api-extractor-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-api-extractor-plugin) | [更新日志](./heft-plugins/heft-api-extractor-plugin/CHANGELOG.md) | [@rushstack/heft-api-extractor-plugin](https://www.npmjs.com/package/@rushstack/heft-api-extractor-plugin) |
| [/heft-plugins/heft-dev-cert-plugin](./heft-plugins/heft-dev-cert-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-dev-cert-plugin) | [更新日志](./heft-plugins/heft-dev-cert-plugin/CHANGELOG.md) | [@rushstack/heft-dev-cert-plugin](https://www.npmjs.com/package/@rushstack/heft-dev-cert-plugin) |
| [/heft-plugins/heft-isolated-typescript-transpile-plugin](./heft-plugins/heft-isolated-typescript-transpile-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-isolated-typescript-transpile-plugin) | [更新日志](./heft-plugins/heft-isolated-typescript-transpile-plugin/CHANGELOG.md) | [@rushstack/heft-isolated-typescript-transpile-plugin](https://www.npmjs.com/package/@rushstack/heft-isolated-typescript-transpile-plugin) |
| [/heft-plugins/heft-jest-plugin](./heft-plugins/heft-jest-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-jest-plugin) | [更新日志](./heft-plugins/heft-jest-plugin/CHANGELOG.md) | [@rushstack/heft-jest-plugin](https://www.npmjs.com/package/@rushstack/heft-jest-plugin) |
| [/heft-plugins/heft-json-schema-typings-plugin](./heft-plugins/heft-json-schema-typings-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-json-schema-typings-plugin) | [更新日志](./heft-plugins/heft-json-schema-typings-plugin/CHANGELOG.md) | [@rushstack/heft-json-schema-typings-plugin](https://www.npmjs.com/package/@rushstack/heft-json-schema-typings-plugin) |
| [/heft-plugins/heft-lint-plugin](./heft-plugins/heft-lint-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-lint-plugin) | [更新日志](./heft-plugins/heft-lint-plugin/CHANGELOG.md) | [@rushstack/heft-lint-plugin](https://www.npmjs.com/package/@rushstack/heft-lint-plugin) |
| [/heft-plugins/heft-localization-typings-plugin](./heft-plugins/heft-localization-typings-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-localization-typings-plugin) | [更新日志](./heft-plugins/heft-localization-typings-plugin/CHANGELOG.md) | [@rushstack/heft-localization-typings-plugin](https://www.npmjs.com/package/@rushstack/heft-localization-typings-plugin) |
| [/heft-plugins/heft-rspack-plugin](./heft-plugins/heft-rspack-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-rspack-plugin) | [更新日志](./heft-plugins/heft-rspack-plugin/CHANGELOG.md) | [@rushstack/heft-rspack-plugin](https://www.npmjs.com/package/@rushstack/heft-rspack-plugin) |
| [/heft-plugins/heft-sass-load-themed-styles-plugin](./heft-plugins/heft-sass-load-themed-styles-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-sass-load-themed-styles-plugin) | [更新日志](./heft-plugins/heft-sass-load-themed-styles-plugin/CHANGELOG.md) | [@rushstack/heft-sass-load-themed-styles-plugin](https://www.npmjs.com/package/@rushstack/heft-sass-load-themed-styles-plugin) |
| [/heft-plugins/heft-sass-plugin](./heft-plugins/heft-sass-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-sass-plugin) | [更新日志](./heft-plugins/heft-sass-plugin/CHANGELOG.md) | [@rushstack/heft-sass-plugin](https://www.npmjs.com/package/@rushstack/heft-sass-plugin) |
| [/heft-plugins/heft-serverless-stack-plugin](./heft-plugins/heft-serverless-stack-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-serverless-stack-plugin) | [更新日志](./heft-plugins/heft-serverless-stack-plugin/CHANGELOG.md) | [@rushstack/heft-serverless-stack-plugin](https://www.npmjs.com/package/@rushstack/heft-serverless-stack-plugin) |
| [/heft-plugins/heft-static-asset-typings-plugin](./heft-plugins/heft-static-asset-typings-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-static-asset-typings-plugin) | [更新日志](./heft-plugins/heft-static-asset-typings-plugin/CHANGELOG.md) | [@rushstack/heft-static-asset-typings-plugin](https://www.npmjs.com/package/@rushstack/heft-static-asset-typings-plugin) |
| [/heft-plugins/heft-storybook-plugin](./heft-plugins/heft-storybook-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-storybook-plugin) | [更新日志](./heft-plugins/heft-storybook-plugin/CHANGELOG.md) | [@rushstack/heft-storybook-plugin](https://www.npmjs.com/package/@rushstack/heft-storybook-plugin) |
| [/heft-plugins/heft-typescript-plugin](
) | [](https://badge.fury.io/js/%40rushstack%2Fheft-typescript-plugin) | [更新日志](./heft-plugins/heft-typescript-plugin/CHANGELOG.md) | [@rushstack/heft-typescript-plugin](https://www.npmjs.com/package/@rushstack/heft-typescript-plugin) |
| [/heft-plugins/heft-vscode-extension-plugin](./heft-plugins/heft-vscode-extension-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-vscode-extension-plugin) | [更新日志](./heft-plugins/heft-vscode-extension-plugin/CHANGELOG.md) | [@rushstack/heft-vscode-extension-plugin](https://www.npmjs.com/package/@rushstack/heft-vscode-extension-plugin) |
| [/heft-plugins/heft-webpack4-plugin](./heft-plugins/heft-webpack4-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-webpack4-plugin) | [更新日志](./heft-plugins/heft-webpack4-plugin/CHANGELOG.md) | [@rushstack/heft-webpack4-plugin](https://www.npmjs.com/package/@rushstack/heft-webpack4-plugin) |
| [/heft-plugins/heft-webpack5-plugin](./heft-plugins/heft-webpack5-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-webpack5-plugin) | [更新日志](./heft-plugins/heft-webpack5-plugin/CHANGELOG.md) | [@rushstack/heft-webpack5-plugin](https://www.npmjs.com/package/@rushstack/heft-webpack5-plugin) |
| [/libraries/api-extractor-model](./libraries/api-extractor-model/) | [](https://badge.fury.io/js/%40microsoft%2Fapi-extractor-model) | [更新日志](./libraries/api-extractor-model/CHANGELOG.md) | [@microsoft/api-extractor-model](https://www.npmjs.com/package/@microsoft/api-extractor-model) |
| [/libraries/credential-cache](./libraries/credential-cache/) | [](https://badge.fury.io/js/%40rushstack%2Fcredential-cache) | [更新日志](./libraries/credential-cache/CHANGELOG.md) | [@rushstack/credential-cache](https://www.npmjs.com/package/@rushstack/credential-cache) |
| [/libraries/debug-certificate-manager](./libraries/debug-certificate-manager/) | [](https://badge.fury.io/js/%40rushstack%2Fdebug-certificate-manager) | [更新日志](./libraries/debug-certificate-manager/CHANGELOG.md) | [@rushstack/debug-certificate-manager](https://www.npmjs.com/package/@rushstack/debug-certificate-manager) |
| [/libraries/heft-config-file](./libraries/heft-config-file/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-config-file) | [更新日志](./libraries/heft-config-file/CHANGELOG.md) | [@rushstack/heft-config-file](https://www.npmjs.com/package/@rushstack/heft-config-file) |
| [/libraries/load-themed-styles](./libraries/load-themed-styles/) | [](https://badge.fury.io/js/%40microsoft%2Fload-themed-styles) | [更新日志](./libraries/load-themed-styles/CHANGELOG.md) | [@microsoft/load-themed-styles](https://www.npmjs.com/package/@microsoft/load-themed-styles) |
| [/libraries/localization-utilities](./libraries/localization-utilities/) | [](https://badge.fury.io/js/%40rushstack%2Flocalization-utilities) | [更新日志](./libraries/localization-utilities/CHANGELOG.md) | [@rushstack/localization-utilities](https://www.npmjs.com/package/@rushstack/localization-utilities) |
| [/libraries/lookup-by-path](./libraries/lookup-by-path/) | [](https://badge.fury.io/js/%40rushstack%2Flookup-by-path) | [更新日志](./libraries/lookup-by-path/CHANGELOG.md) | [@rushstack/lookup-by-path](https://www.npmjs.com/package/@rushstack/lookup-by-path) |
| [/libraries/module-minifier](./libraries/module-minifier/) | [](https://badge.fury.io/js/%40rushstack%2Fmodule-minifier) | [更新日志](./libraries/module-minifier/CHANGELOG.md) | [@rushstack/module-minifier](https://www.npmjs.com/package/@rushstack/module-minifier) |
| [/libraries/node-core-library](./libraries/node-core-library/) | [](https://badge.fury.io/js/%40rushstack%2Fnode-core-library) | [更新日志](./libraries/node-core-library/CHANGELOG.md) | [@rushstack/node-core-library](https://www.npmjs.com/package/@rushstack/node-core-library) |
| [/libraries/npm-check-fork](./libraries/npm-check-fork/) | [](https://badge.fury.io/js/%40rushstack%2Fnpm-check-fork) | [更新日志](./libraries/npm-check-fork/CHANGELOG.md) | [@rushstack/npm-check-fork](https://www.npmjs.com/package/@rushstack/npm-check-fork) |
| [/libraries/operation-graph](./libraries/operation-graph/) | [](https://badge.fury.io/js/%40rushstack%2Foperation-graph) | [更新日志](./libraries/operation-graph/CHANGELOG.md) | [@rushstack/operation-graph](https://www.npmjs.com/package/@rushstack/operation-graph) |
| [/libraries/package-deps-hash](./libraries/package-deps-hash/) | [](https://badge.fury.io/js/%40rushstack%2Fpackage-deps-hash) | [更新日志](./libraries/package-deps-hash/CHANGELOG.md) | [@rushstack/package-deps-hash](https://www.npmjs.com/package/@rushstack/package-deps-hash) |
| [/libraries/package-extractor](./libraries/package-extractor/) | [](https://badge.fury.io/js/%40rushstack%2Fpackage-extractor) | [更新日志](./libraries/package-extractor/CHANGELOG.md) | [@rushstack/package-extractor](https://www.npmjs.com/package/@rushstack/package-extractor) |
| [/libraries/problem-matcher](./libraries/problem-matcher/) | [](https://badge.fury.io/js/%40rushstack%2Fproblem-matcher) | [更新日志](./libraries/problem-matcher/CHANGELOG.md) | [@rushstack/problem-matcher](https://www.npmjs.com/package/@rushstack/problem-matcher) |
| [/libraries/rig-package](./libraries/rig-package/) | [](https://badge.fury.io/js/%40rushstack%2Frig-package) | [更新日志](./libraries/rig-package/CHANGELOG.md) | [@rushstack/rig-package](https://www.npmjs.com/package/@rushstack/rig-package) |
| [/libraries/rush-lib](./libraries/rush-lib/) | [](https://badge.fury.io/js/%40microsoft%2Frush-lib) | | [@microsoft/rush-lib](https://www.npmjs.com/package/@microsoft/rush-lib) |
| [/libraries/rush-pnpm-kit-v10](./libraries/rush-pnpm-kit-v10/) | [](https://badge.fury.io/js/%40rushstack%2Frush-pnpm-kit-v10) | [更新日志](./libraries/rush-pnpm-kit-v10/CHANGELOG.md) | [@rushstack/rush-pnpm-kit-v10](https://www.npmjs.com/package/@rushstack/rush-pnpm-kit-v10) |
| [/libraries/rush-pnpm-kit-v8](./libraries/rush-pnpm-kit-v8/) | [](https://badge.fury.io/js/%40rushstack%2Frush-pnpm-kit-v8) | [更新日志](./libraries/rush-pnpm-kit-v8/CHANGELOG.md) | [@rushstack/rush-pnpm-kit-v8](https://www.npmjs.com/package/@rushstack/rush-pnpm-kit-v8) |
| [/libraries/rush-pnpm-kit-v9](./libraries/rush-pnpm-kit-v9/) | [](https://badge.fury.io/js/%40rushstack%2Frush-pnpm-kit-v9) | [更新日志](./libraries/rush-pnpm-kit-v9/CHANGELOG.md) | [@rushstack/rush-pnpm-kit-v9](https://www.npmjs.com/package/@rushstack/rush-pnpm-kit-v9) |
| [/libraries/rush-sdk](./libraries/rush-sdk/) | [](https://badge.fury.io/js/%40rushstack%2Frush-sdk) | | [@rushstack/rush-sdk](https://www.npmjs.com/package/@rushstack/rush-sdk) |
| [/libraries/stream-collator](./libraries/stream-collator/) | [](https://badge.fury.io/js/%40rushstack%2Fstream-collator) | [更新日志](./libraries/stream-collator/CHANGELOG.md) | [@rushstack/stream-collator](https://www.npmjs.com/package/@rushstack/stream-collator) |
| [/libraries/terminal](./libraries/terminal/) | [](https://badge.fury.io/js/%40rushstack%2Fterminal) | [更新日志](./libraries/terminal/CHANGELOG.md) | [@rushstack/terminal](https://www.npmjs.com/package/@rushstack/terminal) |
| [/libraries/tree-pattern](./libraries/tree-pattern/) | [](https://badge.fury.io/js/%40rushstack%2Ftree-pattern) | [更新日志](./libraries/tree-pattern/CHANGELOG.md) | [@rushstack/tree-pattern](https://www.npmjs.com/package/@rushstack/tree-pattern) |
| [/libraries/ts-command-line](./libraries/ts-command-line/) | [](https://badge.fury.io/js/%40rushstack%2Fts-command-line) | [更新日志](./libraries/ts-command-line/CHANGELOG.md) | [@rushstack/ts-command-line](https://www.npmjs.com/package/@rushstack/ts-command-line) |
| [/libraries/typings-generator](./libraries/typings-generator/) | [](https://badge.fury.io/js/%40rushstack%2Ftypings-generator) | [更新日志](./libraries/typings-generator/CHANGELOG.md) | [@rushstack/typings-generator](https://www.npmjs.com/package/@rushstack/typings-generator) |
| [/libraries/worker-pool](./libraries/worker-pool/) | [](https://badge.fury.io/js/%40rushstack%2Fworker-pool) | [更新日志](./libraries/worker-pool/CHANGELOG.md) | [@rushstack/worker-pool](https://www.npmjs.com/package/@rushstack/worker-pool) |
| [/rigs/heft-node-rig](./rigs/heft-node-rig/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-node-rig) | [更新日志](./rigs/heft-node-rig/CHANGELOG.md) | [@rushstack/heft-node-rig](https://www.npmjs.com/package/@rushstack/heft-node-rig) |
| [/rigs/heft-vscode-extension-rig](./rigs/heft-vscode-extension-rig/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-vscode-extension-rig) | [更新日志](./rigs/heft-vscode-extension-rig/CHANGELOG.md) | [@rushstack/heft-vscode-extension-rig](https://www.npmjs.com/package/@rushstack/heft-vscode-extension-rig) |
| [/rigs/heft-web-rig](./rigs/heft-web-rig/) | [](https://badge.fury.io/js/%40rushstack%2Fheft-web-rig) | [更新日志](./rigs/heft-web-rig/CHANGELOG.md) | [@rushstack/heft-web-rig](https://www.npmjs.com/package/@rushstack/heft-web-rig) |
| [/rush-plugins/rush-amazon-s3-build-cache-plugin](./rush-plugins/rush-amazon-s3-build-cache-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Frush-amazon-s3-build-cache-plugin) | | [@rushstack/rush-amazon-s3-build-cache-plugin](https://www.npmjs.com/package/@rushstack/rush-amazon-s3-build-cache-plugin) |
| [/rush-plugins/rush-azure-storage-build-cache-plugin](./rush-plugins/rush-azure-storage-build-cache-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Frush-azure-storage-build-cache-plugin) | | [@rushstack/rush-azure-storage-build-cache-plugin](https://www.npmjs.com/package/@rushstack/rush-azure-storage-build-cache-plugin) |
| [/rush-plugins/rush-bridge-cache-plugin](./rush-plugins/rush-bridge-cache-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Frush-bridge-cache-plugin) | | [@rushstack/rush-bridge-cache-plugin](https://www.npmjs.com/package/@rushstack/rush-bridge-cache-plugin) |
| [/rush-plugins/rush-buildxl-graph-plugin](./rush-plugins/rush-buildxl-graph-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Frush-buildxl-graph-plugin) | | [@rushstack/rush-buildxl-graph-plugin](https://www.npmjs.com/package/@rushstack/rush-buildxl-graph-plugin) |
| [/rush-plugins/rush-http-build-cache-plugin](./rush-plugins/rush-http-build-cache-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Frush-http-build-cache-plugin) | | [@rushstack/rush-http-build-cache-plugin](https://www.npmjs.com/package/@rushstack/rush-http-build-cache-plugin) |
| [/rush-plugins/rush-mcp-docs-plugin](./rush-plugins/rush-mcp-docs-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Frush-mcp-docs-plugin) | [更新日志](https://badge.fury.io/js/%40rushstack%2Fheft.svg) | [@rushstack/rush-mcp-docs-plugin](https://www.npmjs.com/package/@rushstack/rush-mcp-docs-plugin) |
| [/rush-plugins/rush-published-versions-json-plugin](./rush-plugins/rush-published-versions-json-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Frush-published-versions-json-plugin) | [更新日志](./rush-plugins/rush-published-versions-json-plugin/CHANGELOG.md) | [@rushstack/rush-published-versions-json-plugin](https://www.npmjs.com/package/@rushstack/rush-published-versions-json-plugin) |
| [/rush-plugins/rush-redis-cobuild-plugin](./rush-plugins/rush-redis-cobuild-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Frush-redis-cobuild-plugin) | | [@rushstack/rush-redis-cobuild-plugin](https://www.npmjs.com/package/@rushstack/rush-redis-cobuild-plugin) |
| [/rush-plugins/rush-resolver-cache-plugin](./rush-plugins/rush-resolver-cache-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Frush-resolver-cache-plugin) | | [@rushstack/rush-resolver-cache-plugin](https://www.npmjs.com/package/@rushstack/rush-resolver-cache-plugin) |
| [/rush-plugins/rush-serve-plugin](./rush-plugins/rush-serve-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Frush-serve-plugin) | | [@rushstack/rush-serve-plugin](https://www.npmjs.com/package/@rushstack/rush-serve-plugin) |
| [/webpack/hashed-folder-copy-plugin](./webpack/hashed-folder-copy-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fhashed-folder-copy-plugin) | [更新日志](./webpack/hashed-folder-copy-plugin/CHANGELOG.md) | [@rushstack/hashed-folder-copy-plugin](https://www.npmjs.com/package/@rushstack/hashed-folder-copy-plugin) |
| [/webpack/loader-load-themed-styles](./webpack/loader-load-themed-styles/) | [](https://badge.fury.io/js/%40microsoft%2Floader-load-themed-styles) | [更新日志](./webpack/loader-load-themed-styles/CHANGELOG.md) | [@microsoft/loader-load-themed-styles](https://www.npmjs.com/package/@microsoft/loader-load-themed-styles) |
| [/webpack/loader-raw-script](./webpack/loader-raw-script/) | [](https://badge.fury.io/js/%40rushstack%2Floader-raw-script) | [更新日志](./webpack/loader-raw-script/CHANGELOG.md) | [@rushstack/loader-raw-script](https://www.npmjs.com/package/@rushstack/loader-raw-script) |
| [/webpack/preserve-dynamic-require-plugin](./webpack/preserve-dynamic-require-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fwebpack-preserve-dynamic-require-plugin) | [更新日志](./webpack/preserve-dynamic-require-plugin/CHANGELOG.md) | [@rushstack/webpack-preserve-dynamic-require-plugin](https://www.npmjs.com/package/@rushstack/webpack-preserve-dynamic-require-plugin) |
| [/webpack/set-webpack-public-path-plugin](./webpack/set-webpack-public-path-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fset-webpack-public-path-plugin) | [更新日志](./webpack/set-webpack-public-path-plugin/CHANGELOG.md) | [@rushstack/set-webpack-public-path-plugin](https://www.npmjs.com/package/@rushstack/set-webpack-public-path-plugin) |
| [/webpack/webpack-embedded-dependencies-plugin](./webpack/webpack-embedded-dependencies-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fwebpack-embedded-dependencies-plugin) | [更新日志](./webpack/webpack-embedded-dependencies-plugin/CHANGELOG.md) | [@rushstack/webpack-embedded-dependencies-plugin](https://www.npmjs.com/package/@rushstack/webpack-embedded-dependencies-plugin) |
| [/webpack/webpack-plugin-utilities](./webpack/webpack-plugin-utilities/) | [](https://badge.fury.io/js/%40rushstack%2Fwebpack-plugin-utilities) | [更新日志](./webpack/webpack-plugin-utilities/CHANGELOG.md) | [@rushstack/webpack-plugin-utilities](https://www.npmjs.com/package/@rushstack/webpack-plugin-utilities) |
| [/webpack/webpack-workspace-resolve-plugin](./webpack/webpack-workspace-resolve-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fwebpack-workspace-resolve-plugin) | [更新日志](./webpack/webpack-workspace-resolve-plugin/CHANGELOG.md) | [@rushstack/webpack-workspace-resolve-plugin](https://www.npmjs.com/package/@rushstack/webpack-workspace-resolve-plugin) |
| [/webpack/webpack4-localization-plugin](./webpack/webpack4-localization-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fwebpack4-localization-plugin) | [更新日志](./webpack/webpack4-localization-plugin/CHANGELOG.md) | [@rushstack/webpack4-localization-plugin](https://www.npmjs.com/package/@rushstack/webpack4-localization-plugin) |
| [/webpack/webpack4-module-minifier-plugin](./webpack/webpack4-module-minifier-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fwebpack4-module-minifier-plugin) | [更新日志](./webpack/webpack4-module-minifier-plugin/CHANGELOG.md) | [@rushstack/webpack4-module-minifier-plugin](https://www.npmjs.com/package/@rushstack/webpack4-module-minifier-plugin) |
| [/webpack/webpack5-load-themed-styles-loader](./webpack/webpack5-load-themed-styles-loader/) | [](https://badge.fury.io/js/%40microsoft%2Fwebpack5-load-themed-styles-loader) | [更新日志](./webpack/webpack5-load-themed-styles-loader/CHANGELOG.md) | [@microsoft/webpack5-load-themed-styles-loader](https://www.npmjs.com/package/@microsoft/webpack5-load-themed-styles-loader) |
| [/webpack/webpack5-localization-plugin](./webpack/webpack5-localization-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fwebpack5-localization-plugin) | [更新日志](./webpack/webpack5-localization-plugin/CHANGELOG.md) | [@rushstack/webpack5-localization-plugin](https://www.npmjs.com/package/@rushstack/webpack5-localization-plugin) |
| [/webpack/webpack5-module-minifier-plugin](./webpack/webpack5-module-minifier-plugin/) | [](https://badge.fury.io/js/%40rushstack%2Fwebpack5-module-minifier-plugin) | [更新日志](./webpack/webpack5-module-minifier-plugin/CHANGELOG.md) | [@rushstack/webpack5-module-minifier-plugin](https://www.npmjs.com/package/@rushstack/webpack5-module-minifier-plugin) |
## 未发布的本地项目
| 文件夹 | 描述 |
| ------ | -----------|
| [/apps/lockfile-explorer-web](./apps/lockfile-explorer-web/) | Rush Lockfile Explorer:用于构建 React Web 应用组件的辅助项目 |
| [/build-tests-samples/heft-node-basic-tutorial](./build-tests-samples/heft-node-basic-tutorial/) | (示例项目副本) 构建此项目是对 Heft 的回归测试 |
| [/build-tests-samples/heft-node-jest-tutorial](./build-tests-samples/heft-node-jest-tutorial/) | (示例项目副本) 构建此项目是对 Heft 的回归测试 |
| [/build-tests-samples/heft-node-rig-tutorial](./build-tests-samples/heft-node-rig-tutorial/) | (示例项目副本) 构建此项目是对 Heft 的回归测试 |
| [/build-tests-samples/heft-serverless-stack-tutorial](./build-tests-samples/heft-serverless-stack-tutorial/) | (示例项目副本) 构建此项目是对 Heft 的回归测试 |
| [/build-tests-samples/heft-storybook-v6-react-tutorial](./build-tests-samples/heft-storybook-v6-react-tutorial/) | (示例项目副本) 构建此项目是对 Heft 的回归测试 |
| [/build-tests-samples/heft-storybook-v6-react-tutorial-app](./build-tests-samples/heft-storybook-v6-react-tutorial-app/) | 构建此项目是对 heft-storybook-plugin 的回归测试 |
| [/build-tests-samples/heft-storybook-v6-react-tutorial-storykit](./build-tests-samples/heft-storybook-v6-react-tutorial-storykit/) | heft-storybook-v6-react-tutorial 的 Storybook 构建依赖项 |
| [/build-tests-samples/heft-storybook-v9-react-tutorial](./build-tests-samples/heft-storybook-v9-react-tutorial/) | (示例项目副本) 构建此项目是对 Heft 的回归测试 |
| [/build-tests-samples/heft-storybook-v9-react-tutorial-app](./build-tests-samples/heft-storybook-v9-react-tutorial-app/) | 构建此项目是对 heft-storybook-plugin 的回归测试 |
| [/build-tests-samples/heft-storybook-v9-react-tutorial-storykit](./build-tests-samples/heft-storybook-v9-react-tutorial-storykit/) | heft-storybook-v9-react-tutorial 的 Storybook 构建依赖项 |
| [/build-tests-samples/heft-web-rig-app-tutorial](./build-tests-samples/heft-web-rig-app-tutorial/) | (示例项目副本) 构建此项目是对 Heft 的回归测试 |
| [/build-tests-samples/heft-web-rig-library-tutorial](./build-tests-samples/heft-web-rig-library-tutorial/) | (示例项目副本) 构建此项目是对 Heft 的回归测试 |
| [/build-tests-samples/heft-webpack-basic-tutorial](./build-tests-samples/heft-webpack-basic-tutorial/) | (示例项目副本) 构建此项目是对 Heft 的回归测试 |
| [/build-tests-samples/packlets-tutorial](./build-tests-samples/packlets-tutorial/) | (示例项目副本) 构建此项目是对 @rushstack/eslint-plugin-packlets 的回归测试 |
| [/build-tests-subspace/rush-lib-test](./build-tests-subspace/rush-lib-test/) | 一个导入了 @rushstack/rush-lib 中 API 的最小化示例项目 |
| [/build-tests-subspace/rush-sdk-test](./build-tests-subspace/rush-sdk-test/) | 一个导入了 @rushstack/rush-sdk 中 API 的最小化示例项目 |
| [/build-tests-subspace/typescript-newest-test](./build-tests-subspace/typescript-newest-test/) | 构建此项目是为了使用最新支持的 TypeScript 编译器版本测试 Heft |
| [/build-tests-subspace/typescript-v4-test](./build-tests-subspace/typescript-v4-test/) | 构建此项目是为了使用 TypeScript v4 测试 Heft |
| [/build-tests/api-documenter-scenarios](./build-tests/api-documenter-scenarios/) | 构建此项目是对 api-documenter 的回归测试 |
| [/build-tests/api-documenter-test](./build-tests/api-documenter-test/) | 构建此项目是对 api-documenter 的回归测试 |
| [/build-tests/api-extractor-d-cts-test](./build-tests/api-extractor-d-cts-test/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/api-extractor-d-mts-test](./build-tests/api-extractor-d-mts-test/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/api-extractor-lib1-test](./build-tests/api-extractor-lib1-test/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/api-extractor-lib2-test](./build-tests/api-extractor-lib2-test/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/api-extractor-lib3-test](./build-tests/api-extractor-lib3-test/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/api-extractor-lib4-test](./build-tests/api-extractor-lib4-test/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/api-extractor-lib5-test](./build-tests/api-extractor-lib5-test/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/api-extractor-scenarios](./build-tests/api-extractor-scenarios/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/api-extractor-test-01](./build-tests/api-extractor-test-01/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/api-extractor-test-02](./build-tests/api-extractor-test-02/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/api-extractor-test-03](./build-tests/api-extractor-test-03/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/api-extractor-test-04](./build-tests/api-extractor-test-04/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/api-extractor-test-05](./build-tests/api-extractor-test-05/) | 构建此项目是对 api-extractor 的回归测试 |
| [/build-tests/eslint-7-11-test](./build-tests/eslint-7-11-test/) | 此项目包含一个构建测试,用于验证 ESLint 7.11.0 与最新版 @rushstack/eslint-config(以及扩展的 ESLint 插件)的兼容性 |
| [/build-tests/eslint-7-7-test](./build-tests/eslint-7-7-test/) | 此项目包含一个构建测试,用于验证 ESLint 7.7.0 与最新版 @rushstack/eslint-config(以及扩展的 ESLint 插件)的兼容性 |
| [/build-tests/eslint-7-test](./build-tests/eslint-7-test/) | 此项目包含一个构建测试,用于验证 ESLint 7 与最新版 @rushstack/eslint-config(以及扩展的 ESLint 插件)的兼容性 |
| [/build-tests/eslint-8-test](./build-tests/eslint-8-test/) | 此项目包含一个构建测试,用于验证 ESLint 8 与最新版 @rushstack/eslint-config(以及扩展的 ESLint 插件)的兼容性| [/build-tests/eslint-9-test](./build-tests/eslint-9-test/) | 此项目包含一个构建测试,用于验证 ESLint 9 与最新版 @rushstack/eslint-config(以及扩展的 ESLint 插件)的兼容性 |
| [/build-tests/eslint-bulk-suppressions-test](./build-tests/eslint-bulk-suppressions-test/) | 用于测试 eslint 批量抑制的示例代码 |
| [/build-tests/eslint-bulk-suppressions-test-flat](./build-tests/eslint-bulk-suppressions-test-flat/) | 用于测试 flat configs 下 eslint 批量抑制的示例代码 |
| [/build-tests/eslint-bulk-suppressions-test-legacy](./build-tests/eslint-bulk-suppressions-test-legacy/) | 用于测试 eslint 版本 < 8.57.0 批量抑制的示例代码 |
| [/build-tests/esm-node-import-test](./build-tests/esm-node-import-test/) | 此项目验证了在 'type: module' 的 Node.js 项目中通过 package.json 的 'exports' 字段正确导入 rushstack 包的可用性。参见 https://github.com/microsoft/rushstack/issues/5644 |
| [/build-tests/hashed-folder-copy-plugin-webpack5-test](./build-tests/hashed-folder-copy-plugin-webpack5-test/) | 构建此项目是为了在 Webpack 5 环境下测试 @rushstack/hashed-folder-copy-plugin。注意 - 此测试目前预期会失败 |
| [/build-tests/heft-copy-files-test](./build-tests/heft-copy-files-test/) | 构建此项目是为了测试 Heft 的文件复制功能 |
| [/build-tests/heft-example-lifecycle-plugin](./build-tests/heft-example-lifecycle-plugin/) | 这是一个用于测试生命周期钩子的示例 Heft 插件 |
| [/build-tests/heft-example-plugin-01](./build-tests/heft-example-plugin-01/) | 这是一个用于为其他插件暴露钩子的示例 Heft 插件 |
| [/build-tests/heft-example-plugin-02](./build-tests/heft-example-plugin-02/) | 这是一个示例 Heft 插件,它 tap 了由 heft-example-plugin-01 暴露的钩子 |
| [/build-tests/heft-fastify-test](./build-tests/heft-fastify-test/) | 此项目测试 Heft 对用于 Node.js 服务的 Fastify 框架的支持 |
| [/build-tests/heft-jest-preset-test](./build-tests/heft-jest-preset-test/) | 此项目演示了如何在最小化的 Heft 项目中配置 Jest preset |
| [/build-tests/heft-jest-reporters-test](./build-tests/heft-jest-reporters-test/) | 此项目演示了如何在最小化的 Heft 项目中配置 Jest reporters |
| [/build-tests/heft-json-schema-typings-plugin-test](./build-tests/heft-json-schema-typings-plugin-test/) | 此项目演示了如何在最小化的 Heft 项目中配置 Jest reporters |
| [/build-tests/heft-minimal-rig-test](./build-tests/heft-minimal-rig-test/) | 这是一个由 'heft-minimal-rig-usage-test' 项目导入的最小化 rig 包 |
| [/build-tests/heft-minimal-rig-usage-test](./build-tests/heft-minimal-rig-usage-test/) | 一个用于测试 Heft 从 'heft-minimal-rig-test' 包解析其编译器的测试项目 |
| [/build-tests/heft-node-everything-esm-module-test](./build-tests/heft-node-everything-esm-module-test/) | 构建此项目是为了在目标为 Node.js runtime 并配置为使用 ESM 模块支持时,测试 Heft 的所有任务和配置文件 |
| [/build-tests/heft-node-everything-test](./build-tests/heft-node-everything-test/) | 构建此项目是为了在目标为 Node.js runtime 时,测试 Heft 的所有任务和配置文件 |
| [/build-tests/heft-parameter-plugin](./build-tests/heft-parameter-plugin/) | 此项目包含一个为内置操作添加自定义参数的 Heft 插件 |
| [/build-tests/heft-parameter-plugin-test](./build-tests/heft-parameter-plugin-test/) | 此项目用于测试带有自定义参数的内置 Heft 操作 |
| [/build-tests/heft-rspack-everything-test](./build-tests/heft-rspack-everything-test/) | 构建此项目是为了在使用 Rspack 目标为 Web 浏览器运行时时,测试 Heft 的所有任务和配置文件 |
| [/build-tests/heft-sass-test](./build-tests/heft-sass-test/) | 此项目演示了一个面向 Web 浏览器运行时的最小化 Heft 教程项目 |
| [/build-tests/heft-swc-test](./build-tests/heft-swc-test/) | 构建此项目是为了测试使用 SWC 进行构建 |
| [/build-tests/heft-typescript-composite-test](./build-tests/heft-typescript-composite-test/) | 构建此项目是为了测试当 tsconfig.json 文件使用项目引用时 Heft 的行为。 |
| [/build-tests/heft-typescript-v2-test](./build-tests/heft-typescript-v2-test/) | 构建此项目是为了测试使用 TypeScript v2 进行构建 |
| [/build-tests/heft-typescript-v3-test](./build-tests/heft-typescript-v3-test/) | 构建此项目是为了测试使用 TypeScript v3 进行构建 |
| [/build-tests/heft-typescript-v4-test](./build-tests/heft-typescript-v4-test/) | 构建此项目是为了测试使用 TypeScript v4 进行构建 |
| [/build-tests/heft-web-rig-library-test](./build-tests/heft-web-rig-library-test/) | 一个测试 Heft 的项目,用于测试 '@rushstack/heft-web-rig' 包 |
| [/build-tests/heft-webpack4-everything-test](./build-tests/heft-webpack4-everything-test/) | 构建此项目是为了在使用 Webpack 4 目标为 Web 浏览器运行时时,测试 Heft 的所有任务和配置文件 |
| [/build-tests/heft-webpack5-everything-test](./build-tests/heft-webpack5-everything-test/) | 构建此项目是为了在使用 Webpack 5 目标为 Web 浏览器运行时时,测试 Heft 的所有任务和配置文件 |
| [/build-tests/localization-plugin-test-01](./build-tests/localization-plugin-test-01/) | 构建此项目是为了测试 @microsoft/localization-plugin。这测试了该插件在没有任何本地化资源时能否正常工作。 |
| [/build-tests/localization-plugin-test-02](./build-tests/localization-plugin-test-02/) | 构建此项目是为了测试 @microsoft/localization-plugin。这测试了在未设置 exportAsDefault 选项时 loader 能否正常工作。 |
| [/build-tests/localization-plugin-test-03](./build-tests/localization-plugin-test-03/) | 构建此项目是为了测试 @microsoft/localization-plugin。这测试了在将 exportAsDefault 选项设置为 true 时插件能否正常工作。 |
| [/build-tests/package-extractor-test-01](./build-tests/package-extractor-test-01/) | 此项目用于 @rushstack/package-extractor 包中的测试。 |
| [/build-tests/package-extractor-test-02](./build-tests/package-extractor-test-02/) | 此项目用于 @rushstack/package-extractor 包中的测试。 |
| [/build-tests/package-extractor-test-03](./build-tests/package-extractor-test-03/) | 此项目用于 @rushstack/package-extractor 包中的测试。 |
| [/build-tests/package-extractor-test-04](./build-tests/package-extractor-test-04/) | 此项目用于 @rushstack/package-extractor 包中的测试。 |
| [/build-tests/package-extractor-test-05](./build-tests/package-extractor-test-05/) | 此项目用于 @rushstack/package-extractor 包中的测试。 |
| [/build-tests/run-scenarios-helpers](./build-tests/run-scenarios-helpers/) | 用于 *-scenarios 测试项目的辅助工具。 |
| [/build-tests/rush-amazon-s3-build-cache-plugin-integration-test](./build-tests/rush-amazon-s3-build-cache-plugin-integration-test/) | 测试连接到 Amazon S3 端点 |
| [/build-tests/rush-lib-declaration-paths-test](./build-tests/rush-lib-declaration-paths-test/) | 此项目确保 rush-lib/lib/... 中的所有路径都具有可正确解析的导入。如果此项目构建成功,则 `@microsoft/rush-lib` 包中的所有 `lib/**/*.d.ts` 文件都是有效的。 |
| [/build-tests/rush-mcp-example-plugin](./build-tests/rush-mcp-example-plugin/) | 展示如何为 @rushstack/mcp-server 创建插件的示例 |
| [/build-tests/rush-package-manager-integration-test](./build-tests/rush-package-manager-integration-test/) | Rush 中非 pnpm 包管理器的集成测试。 |
| [/build-tests/rush-project-change-analyzer-test](./build-tests/rush-project-change-analyzer-test/) | 这是一个使用 rush-lib 的 ProjectChangeAnalyzer 的示例项目 |
| [/build-tests/rush-redis-cobuild-plugin-integration-test](./build-tests/rush-redis-cobuild-plugin-integration-test/) | 测试连接到 Redis 服务器 |
| [/build-tests/set-webpack-public-path-plugin-test](./build-tests/set-webpack-public-path-plugin-test/) | 构建此项目是为了测试 set-webpack-public-path-plugin |
| [/build-tests/webpack-local-version-test](./build-tests/webpack-local-version-test/) | 构建此项目是为了测试本地版本 webpack 的 rig 加载 |
| [/eslint/local-eslint-config](./eslint/local-eslint-config/) | 被 rushstack 仓库内部项目使用的 ESLint 配置。 |
| [/libraries/rush-themed-ui](./libraries/rush-themed-ui/) | Rush 组件库:一组用于 rush 项目的主题组件 |
| [/libraries/rushell](./libraries/rushell/) | 在每个平台上使用一致的语法执行 shell 命令 |
| [/repo-scripts/doc-plugin-rush-stack](./repo-scripts/doc-plugin-rush-stack/) | 与 rushstack.io 网站一起使用的 API Documenter 插件 |
| [/repo-scripts/generate-api-docs](./repo-scripts/generate-api-docs/) | 用于为 rushstack.io 网站生成 API 文档 |
| [/repo-scripts/repo-toolbox](./repo-scripts/repo-toolbox/) | 用于执行特定于此仓库的各种操作 |
| [/rigs/decoupled-local-node-rig](./rigs/decoupled-local-node-rig/) | 一个用于在 RushStack 仓库中使用 Heft 构建的 Node.js 项目的 rig 包,但它是 @rushstack/heft-node-rig 或 local-node-rig 的依赖项。 |
| [/rigs/local-node-rig](./rigs/local-node-rig/) | 一个用于在 RushStack 仓库中使用 Heft 构建的 Node.js 项目的 rig 包。 |
| [/rigs/local-web-rig](./rigs/local-web-rig/) | 一个用于在 RushStack 仓库中使用 Heft 构建的 Web 项目的 rig 包。 |
| [/rush-plugins/rush-litewatch-plugin](./rush-plugins/rush-litewatch-plugin/) | 一种用于多项目监听模式的实验性替代方法 |
| [/vscode-extensions/debug-certificate-manager-vscode-extension](./vscode-extensions/debug-certificate-manager-vscode-extension/) | 用于管理调试 TLS 证书并将其同步到 VS Code 工作区的 VS Code 扩展。支持 VS Code 远程开发(Codespaces、SSH、开发容器、WSL、VS Code Tunnels)。 |
| [/vscode-extensions/playwright-local-browser-server-vscode-extension](./vscode-extensions/playwright-local-browser-server-vscode-extension/) | 用于在远程 VS Code 环境(如 Codespaces、开发容器、VS Code Tunnels)中启用 Playwright 测试,同时在本地机器上启动并驱动实际浏览器进程的 VS Code 扩展。 |
| [/vscode-extensions/rush-vscode-command-webview](./vscode-extensions/rush-vscode-command-webview/) | Rush Stack VSCode 扩展的一部分,提供了用于调用 Rush 命令的 UI |
| [/vscode-extensions/rush-vscode-extension](./vscode-extensions/rush-vscode-extension/) | 为使用 Rush Stack 工具链的 monorepos 提供增强体验 |
| [/vscode-extensions/vscode-shared](./vscode-extensions/vscode-shared/) | |
| [/webpack/webpack-deep-imports-plugin](./webpack/webpack-deep-imports-plugin/) | 此插件创建一个 bundle 和 commonJS 文件到 'lib' 文件夹中,镜像另一个 'lib' 文件夹中的模块。 |
## 贡献者须知
本仓库欢迎贡献和建议。大多数贡献要求您同意一份
贡献者许可协议 (CLA),声明您有权并且确实授予我们
使用您的贡献的权利。有关详细信息,请访问 https://cla.microsoft.com。
当您提交 pull request 时,CLA 机器人将自动确定您是否需要提供
CLA 并适当地装饰该 PR(例如,标签、评论)。只需按照
机器人提供的说明操作即可。对于所有使用我们 CLA 的仓库,您只需执行一次此操作。
本仓库采用了 [Microsoft 开源行为准则](https://opensource.microsoft.com/codeofconduct/)。
有关更多信息,请参阅[行为准则常见问题解答](https://opensource.microsoft.com/codeofconduct/faq/),或
联系 [opencode@microsoft.com](mailto:opencode@microsoft.com) 提出任何其他问题或意见。标签:API Extractor, API提取, Cilium, Heft, Lockfile Explorer, Microsoft, MITM代理, NPM, PNPM, Rush Stack, TSDoc, TypeScript, VS Code, 云安全监控, 前端工程化, 包管理器, 可复用工具, 响应拦截, 大规模项目, 安全插件, 工具库, 文档生成, 构建编排, 研发效能, 统一API, 自动化攻击, 静态分析