This repo hosts a collection of tools and libraries used to build web projects at Microsoft.
- CURRENT NEWS: See what's happening with the web-build-tools projects!
API Extractor helps you build better TypeScript libraries. It standardizes your exported API surface, generates your online API reference, and makes it easy to detect and review changes that will impact your API contract.
Gulp Core Build: If you maintain lots of projects, gulp-core-build gets you out of the business of maintaining lots of Gulpfiles. It defines reusable "rigs" that you customize using simple config files with well-defined JSON schemas.
Rush: Want to consolidate all your web projects in one big repo? Rush is a fast and reliable solution for installing, linking, building, publishing, checking, change log authoring, and anything else that involves a "package.json" file.
This repo welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
Validate, document, and review the exported API for a TypeScript library.
Read JSON files from api-extractor, generate documentation pages.
A library for scripts that interact with the Rush tool.
Core Build: Tasks
Defines the build task model, config file parser, and rig framework for the Gulp Core Build system, along with some essential build tasks.
A build task for running unit tests using
chai. This setup is useful for unit testing build tools, as it runs in the NodeJS process rather than in a browser.
A build task which processes scss files using SASS, runs them through
postcss, and produces CommonJS/AMD modules which are injected using the
A build task for testing/serving web content on the localhost, and live reloading it when things change. This drives the
gulp serve experience.
Build tasks for invoking the TypeScript compiler,
tslint, and api-extractor.
A build task which introduces the ability to bundle various source files into a set of bundles using
Core Build: Rigs
A Gulp Core Build rig which provides basic functionality for building and unit testing TypeScript projects intended to run under NodeJS.
A Gulp Core Build rig for building web libraries. It includes build tasks for processing css, typescript, serving, and running browser tests using jest.
Loads a string of style rules, but supports detokenizing theme constants built within it.
Essential libraries that every NodeJS toolchain project should use.
package-deps-hash is mainly used by Rush. It generates a JSON file containing the Git hashes of all input files used to build a given package.
Oftentimes, when working with multiple parallel asynchronous processes, it is helpful to ensure that their outputs are not mixed together, as this can cause readability issues in the console or log. The stream-collator manages the output of these streams carefully, such that no two streams are writing at the same time.
An object-oriented command-line parser for TypeScript projects, based on the argparse engine.
Webpack Loaders and Plugins
set-webpack-public-path-plugin is a plugin used to set the webpack public path variable.
resolve-chunk-plugin is a plugin that looks for calls to
resolveChunk with a chunk
name, and returns the chunk ID.
loader-set-webpack-public-path is a loader used to set the webpack public path variable. It's similar to
loader-load-themed-styles is a loader used for loading themed CSS styles.
loader-raw-script is a loader used for loading scripts with an