> For the complete documentation index, see [llms.txt](https://no0dles.gitbook.io/hammerkit/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://no0dles.gitbook.io/hammerkit/build-file.md).

# Build file

The build file is a yaml file in the root of your project. It contains a list of [tasks](/hammerkit/task.md) which can be executed over the [cli](/hammerkit/cli.md).

Hammerkit looks for the build file by name, in this order:

1. `.hammerkit.yaml`
2. `.hammerkit.yml`
3. `build.yaml`

All three are valid; the first one found is used. If more than one exists hammerkit warns about the ambiguity. These docs use `.hammerkit.yaml` as the canonical name in every example. To point hammerkit at a different file, pass [`--file <path>`](/hammerkit/cli.md).

{% code title=".hammerkit.yaml" %}

```yaml
envs:
  NODE_VERSION: '22'

tasks:
  build:
    image: node:$NODE_VERSION
    deps: [npm:install]
    cmds:
      - tsc -b

references:
  subProject: ./packages/subproject

includes:
  npm: ./build.npm.yaml
```

{% endcode %}

For more detail about the structure of the build file, checkout the following sections.

{% content-ref url="/pages/-MaSvGYPbmQgfAyX-MGC" %}
[Environment Variables](/hammerkit/build-file/environment-variables.md)
{% endcontent-ref %}

{% content-ref url="/pages/-MaSvtzd5QHAsmxSnetD" %}
[References](/hammerkit/build-file/references.md)
{% endcontent-ref %}

{% content-ref url="/pages/-MaSvz-VK2184pki8rcD" %}
[Includes](/hammerkit/build-file/includes.md)
{% endcontent-ref %}
