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!
Highlighted 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.
This repo has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.
Validate, document, and review the exported API for a TypeScript library.
Read JSON files from api-extractor, generate documentation pages.
The professional solution for consolidating all your JavaScript projects in one Git repo.
A library for scripts that interact with the Rush tool.
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 karma
+ phantomjs
+ mocha
+ chai
. This setup allows you to run browser-based testing.
A build task for running unit tests using mocha
+ 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 @microsoft/load-themed-styles
package.
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 webpack
.
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 karma.
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.
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 set-webpack-public-path-plugin
.
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 eval
statement.