Getting Started: Tools
The core tools are:
hh_client
: this is the command line interface for Hack's static analysis; it is needed to verify that a project is valid Hack, and is used to find errors in your programshhvm
: this is used to execute your Hack code, and can either be used for CLI (e.g.hhvm foo.hack
) or as a server, and has its own documentation
Editors and IDEs
We primarily recommend using Visual Studio Code with the VSCode-Hack extension; this provides IDE features such as syntax highlighting, go-to-definition, and inline display of Hack errors.
For Vim users, vim-hack provides syntax highlighting and language detection, and the ALE project provides enhanced support for Hack.
hack-mode provides a major mode for Emacs users.
If you use a different editor or IDE with LSP support, configure it
to use hh_client lsp
; if you use HHAST, you might want to configure it to
use vendor/bin/hhast-lint --mode lsp
, but keep in mind this will lead to your
editor automatically executing code from a project when that project is opened;
for this reason, the ALE integration has HHAST disabled by default, and Visual
Studio Code prompts to confirm before executing it.
Dependency Management
Hack dependencies are currently managed using Composer, which must be executed
with PHP. Composer can be thought of as an equivalent to npm
or yarn
.
Other Common Tools
hackfmt
is a CLI code formatter included with HHVM and Hack, and is also used by the various editor and IDE integrations- HHAST provides code style linting, and the ability to automatically modify code to adapt to some changes in the language or libraries
- hacktest and fbexpect are commonly used together for writing unit tests