GitHub Prettier Action
A GitHub action for styling files with prettier.
Usage
Parameters
Parameter | Required | Default | Description |
---|---|---|---|
dry | β | false |
Runs the action in dry mode. Files wont get changed and the action fails if there are unprettified files. Recommended to use with prettier_options --check |
prettier_version | β | false |
Specific prettier version (by default use latest) |
working_directory | β | false |
Specify a directory to cd into before installing prettier and running it, use relative file path to the repository root for example app/ |
prettier_options | β | "--write **/*.js" |
Prettier options (by default it applies to the whole repository) |
commit_options | β | - | Custom git commit options |
push_options | β | - | Custom git push options |
same_commit | β | false |
Update the current commit instead of creating a new one, created by Joren Broekema, this command works only with the checkout action set to fetch depth '0' (see example 2) |
commit_message | β | "Prettified Code!" |
Custom git commit message, will be ignored if used with same_commit |
commit_description | β | - | Custom git extended commit message, will be ignored if used with same_commit |
file_pattern | β | * |
Custom git add file pattern, can't be used with only_changed! |
prettier_plugins | β | - | Install Prettier plugins, i.e. "@prettier/plugin-php" "@prettier/plugin-other" . Must be wrapped in quotes since @ is a reserved character in YAML. |
clean_node_folder | β | true |
Delete the node_modules folder before committing |
only_changed | β | false |
Only prettify changed files, can't be used with file_pattern! This command works only with the checkout action set to fetch depth '0' (see example 2) |
github_token | β | ${{ github.token }} |
The default GITHUB_TOKEN or a Personal Access Token |
Note: using the same_commit option may lead to problems if other actions are relying on the commit being the same before and after the prettier action has ran. Keep this in mind.
Example Config
Hint: if you still use the old naming convention or generally a different branch name, please replace the
main
in the following configurations.
Example 1 (run on push in branch main)
name: Continuous Integration
# This action works with pull requests and pushes
on:
pull_request:
push:
branches:
- main
jobs:
prettier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
# Make sure the actual branch is checked out when running on pull requests
ref: ${{ github.head_ref }}
- name: Prettify code
uses: creyD/[email protected]
with:
# This part is also where you can pass other options, for example:
prettier_options: --write **/*.{js,md}
Example 2 (using the only_changed or same_commit option on PR)
name: Continuous Integration
on:
pull_request:
branches: [main]
jobs:
prettier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
# Make sure the actual branch is checked out when running on pull requests
ref: ${{ github.head_ref }}
# This is important to fetch the changes to the previous commit
fetch-depth: 0
- name: Prettify code
uses: creyD/[email protected]
with:
# This part is also where you can pass other options, for example:
prettier_options: --write **/*.{js,md}
only_changed: True
Example 3 (using a custom access token on PR)
name: Continuous Integration
on:
pull_request:
branches: [main]
jobs:
prettier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.head_ref }}
# Make sure the value of GITHUB_TOKEN will not be persisted in repo's config
persist-credentials: false
- name: Prettify code
uses: creyD/[email protected]
with:
prettier_options: --write **/*.{js,md}
only_changed: True
# Set your custom token
github_token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
Example 4 (dry run)
name: Continuous Integration
on:
pull_request:
branches: [main]
jobs:
prettier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.head_ref }}
# Make sure the value of GITHUB_TOKEN will not be persisted in repo's config
persist-credentials: false
- name: Prettify code
uses: creyD/[email protected]
with:
dry: True
github_token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
More documentation for writing a workflow can be found here.
Issues
Please report all bugs and feature request using the GitHub issues function. Thanks!
Problem with NPM v9 (19.02.2023)
This issue was discussed in #113. The action until release 4 uses the npm bin command, which apparently doesn't work on npm v9. A fix is introduced with v4.3 of this action. If you need an older version of the action working it works until v3.3 and between v3.3 and v4.2 you could use the workaround described in #113 by adding the below to your workflow file:
- name: Install npm v8
run: npm i -g npm@8