https://github.com/flarum/action-build
GitHub Action to automatically build your JavaScript dist files
https://github.com/flarum/action-build
Last synced: about 2 months ago
JSON representation
GitHub Action to automatically build your JavaScript dist files
- Host: GitHub
- URL: https://github.com/flarum/action-build
- Owner: flarum
- License: other
- Created: 2019-08-20T15:38:50.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-09-28T14:07:43.000Z (8 months ago)
- Last Synced: 2025-04-11T07:24:58.520Z (about 2 months ago)
- Language: TypeScript
- Homepage:
- Size: 1010 KB
- Stars: 2
- Watchers: 9
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# [GitHub Action] Flarum JavaScript Building
A GitHub Action to automatically compile your Flarum extension's Javascript code, and push it to your GitHub repository.
You could set this action up to run whenever a commit is pushed to your main Git branch in order to automate part of your development process.
We use this action extensively within Flarum, including for `core` and all our bundled extensions.
## Example Workflow
```yml
name: Flarum Buildon: push
jobs:
build:
runs-on: ubuntu-lateststeps:
- uses: actions/checkout@master
- uses: flarum/action-build@2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
build_script: build # npm run build
build_typings_script: build-typings # npm run build-typings
test_script: test # npm run test
package_manager: npm # Use NPM, not Yarn
js_path: ./js # JS located in `./js`
do_not_commit: false # Commit built JS by default
commit_all_dirty: false
```## Options
Here is a full list of options available using the `with` syntax:
| Name | Required | Description | Example | Default |
|------------------------| -------- |-------------------------------------------------------------------------------------------------------------------------|-------------------------------| ------- |
| `github_token` | Yes | Your Actions GitHub token. The example value should work for this by default. | `${{ secrets.GITHUB_TOKEN }}` | None |
| `build_script` | Yes | The `package.json` script to run to build your extension JS. | `build` | `build` |
| `build_typings_script` | No | If defined, runs the script of this name in `package.json` to build typings for your extension. | `build-typings` | Unset |
| `format_script` | No | If defined, runs the script of this name in `package.json` to check code formatting of your extension's JS. | `format-check` | Unset |
| `check_typings_script` | No | If defined, runs the script of this name in `package.json` to typecheck your extension's TypeScript code. | `check-typings` | Unset |
| `type_coverage_script` | No | If defined, runs the script of this name in `package.json` to assess type coverage in your extension's TypeScript code. | `check-typings-coverage` | Unset |
| `test_script` | No | If defined, runs the script of this name in `package.json` to run the test suite. | `test` | Unset |
| `package_manager` | No | Either `yarn` or `npm` or `pnpm`. Will install dependencies and build using the specified package manager. | `yarn` | `npm` |
| `js_path` | No | Path to your JS folder (where `package.json` is located) from the root of your repository. | `./js` | `./js` |
| `do_not_commit` | No | Set to `true` to NOT commit the built JS/Typings. Useful for validating JS source. | `false` | `false` |
| `checks` | No | An array of strings, where each is a script that should be run before committing built js. | `false` | `false` |
| `commit_all_dirty` | No | Set to `true` to commit all file changes, not just files in the dist JS directory. | `false` | `false` |### Assumptions
Your Javascript must be in a `js` folder, similar to how Flarum core and Flarum's first-party extensions are laid out.
If building typings, we assume that they are built to `js/dist-typings`, as set in the example `tsconfig.json` found on the [flarum-tsconfig](https://github.com/flarum/flarum-tsconfig).
## Only Build on Master
If you only want to run the workflow when commits are pushed to the `master` branch, change `on: push` to the following:
```yml
on:
push:
branches:
- master
```