Add Heft page
This commit is contained in:
Родитель
371aa395b1
Коммит
594e87c69f
|
@ -23,6 +23,11 @@ docs_nav:
|
|||
- title: Project roadmap
|
||||
url: /pages/overview/roadmap
|
||||
|
||||
- title: Heft
|
||||
subitems:
|
||||
- title: Overview
|
||||
url: /pages/heft/overview
|
||||
|
||||
- title: Contributing
|
||||
subitems:
|
||||
- title: Getting Started
|
||||
|
|
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 10 KiB |
|
@ -0,0 +1,50 @@
|
|||
---
|
||||
layout: page
|
||||
title:
|
||||
navigation_source: docs_nav
|
||||
---
|
||||
|
||||
<img src="{{ site.baseurl }}/images/heft-300x120.png" alt="heft" title="heft" style="width: 300px;"/>
|
||||
|
||||
🚨 *The Heft project is still in early preview. Please report any issues you encounter.* 🚨
|
||||
|
||||
Heft is an extensible build system designed for use with the [Rush Stack](https://rushstack.io/) family of tools.
|
||||
You don't need a monorepo to use Heft, though. It also works well for small standalone projects. Compared to
|
||||
other similar systems, Heft has some unique design goals:
|
||||
|
||||
- **Scalable**: Heft is designed to interface with the [Rush](https://rushjs.io) build orchestrator which is
|
||||
optimized for large monorepos with many people and projects. (Usage of Rush is optional.)
|
||||
|
||||
- **Familiar**: Heft is a plain Node.js application, so developers won't need to install any native prerequisites
|
||||
such as Python, MSYS2, or the .NET Framework. Heft's source code is easy to understand and debug because everything
|
||||
is 100% TypeScript, the same programming language as your web projects. Developing for native targets is also
|
||||
supported, of course.
|
||||
|
||||
- **Polished and Complete**: Philosophically, Rush Stack aspires to provide a functionally complete toolkit with
|
||||
a professional developer experience. Pluggable task abstractions actually work against this goal:
|
||||
It's expensive to support and optimize (and document!) every possible combination of pieces. Also, the best
|
||||
optimizations rely heavily on assumptions about what's behind the abstraction. (As one example, sharing
|
||||
compiler state with the linter requires fairly different strategies for ESLint versus TSLint.) Heft is customizable,
|
||||
but our focus is to invest deeply in one recommended approach that everyone can use.
|
||||
|
||||
- **Extensible**: Most large projects require specialized additional tooling such as preprocessors, postprocessors,
|
||||
instrumentation, and reporting. Heft allows you to write your own plugins using the
|
||||
[tapable](https://www.npmjs.com/package/tapable) hook system (familiar from Webpack). Compared to loose
|
||||
architectures such as Grunt or Gulp, Heft ships a standardized set of stages for custom tasks to hook into.
|
||||
Working from a more standardized foundation makes custom rigs more understandable for newcomers.
|
||||
|
||||
- **Optimized**: Heft tracks fine-grained performance metrics at each step. Although Heft is still in its
|
||||
early stages, it already implements optimizations such as: incremental compilation, symlinking of cache files
|
||||
to avoid copying, reuse of compiler state across multiple emit targets, and a single compiler pass for
|
||||
Jest and Webpack.
|
||||
|
||||
|
||||
## How do I use it?
|
||||
|
||||
Heft is still under active development; more documentation will be coming soon. In the meantime, here are
|
||||
a couple test projects that illustrate Heft setups:
|
||||
|
||||
- [heft-test-01](https://github.com/microsoft/rushstack/tree/master/build-tests/heft-test-01): A basic Node.js
|
||||
application with Jest and API Extractor
|
||||
- [heft-test-webpack](https://github.com/microsoft/rushstack/tree/master/build-tests/heft-test-webpack): A basic
|
||||
web application bundled using Webpack
|
Загрузка…
Ссылка в новой задаче