A Github action that compile ts files and display the errors found in whole codebase and in files changed in PR.
Used in production at Arhia
- Automatically uses
yarn
ornpm ci
when lockfiles are present - Builds your PR, then run tsc to detect errors 🔍
- Compare ts errors in base branch and in PR branch to detect new errors (handle automatically line numbers offset) 💪
- Doesn't upload anything or rely on centralized storage 👐
action-check-typescript rely on two other actions (big thanks to the authors ! ❤️) to :
- Equip-Collaboration/diff-line-numbers : retrieve line numbers of added and removed lines in files changed
- futuratrepadeira/changed-files : list files added, modified and deleted
Add a workflow (eg .github/workflows/check_ts.yml
):
name: 'check-ts'
on:
pull_request:
jobs:
ts:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Get diff lines
id: diff
uses: Equip-Collaboration/diff-line-numbers@v1.0.0
with:
include: '["\\.ts$"]'
- name: Detecting files changed
id: files
uses: umani/changed-files@v4.0.0
with:
repo-token: ${{ github.token }}
pattern: '^.*\.ts$'
- name: List files changed (you can remove this step, for monitoring only)
run: |
echo 'Files modified: ${{steps.files.outputs.files_updated}}'
echo 'Files added: ${{steps.files.outputs.files_created}}'
echo 'Files removed: ${{steps.files.outputs.files_deleted}}'
- uses: Arhia/action-check-typescript@v1.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
use-check: true
check-fail-mode: added
files-changed: ${{steps.files.outputs.files_updated}}
files-added: ${{steps.files.outputs.files_created}}
files-deleted: ${{steps.files.outputs.files_deleted}}
line-numbers: ${{steps.diff.outputs.lineNumbers}}
output-behaviour: both
comment-behaviour: new
By default, this action doesn't perform a status check (aka pass/fail).
You need to set use-check
on true to run a status check.
use-check: true
How the check status is determined depends on the value of check-fail-mode
Value | Behaviour |
---|---|
added |
Check fails if some errors are added in the files added/modified in the PR branch. |
errors_in_pr |
Check fails if any errors are present in the files added/modified in the PR branch (even if already in base branche). |
errors_in_code |
Check fails if any errors are present in the whole branch. |
The output behaviour depends on the value of output-behaviour
Value | Behaviour |
---|---|
comment |
Default, comments on the PR with the errors found for this run. |
annotate |
Uses github line annotations with the errors found for this run. |
both |
Does both of the above. |
The comment behaviour depends on the value of comment-behaviour
Value | Behaviour |
---|---|
new |
Default, adds a new comment for every run of the action. |
edit |
Updates a previous run's comment, if one exists, otherwise creates a new comment. |
By default, this actions uses tsconfig file located at './tsconfig.json'
You may want to use a different file for this action, in order to change tsc behaviour.
For example, if you use watch:true
in your regular tsconfig file, you should disable watching mode.
In order to do this, you would create a specific tsconfig file (eg name tsconfig.check.ts
) and setting accordingly the
parameter ts-config-path
:
ts-config-path: './tsconfig.check.json'