mirror of
https://github.com/creyD/prettier_action.git
synced 2026-04-14 20:30:30 +02:00
Compare commits
4 Commits
master
...
claude/use
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a5f1df5578 | ||
|
|
68d6b720fe | ||
|
|
c1711cdd30 | ||
|
|
bf5539213f |
91
README.md
91
README.md
@@ -13,25 +13,27 @@ A GitHub action for styling files with [prettier](https://prettier.io).
|
||||
|
||||
### Parameters
|
||||
|
||||
| Parameter | Required | Default | Description |
|
||||
| - | :-: | :-: | - |
|
||||
| dry | :x: | `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 |
|
||||
| no_commit | :x: | `false` | Can be used to avoid committing the changes (useful when another workflow step commits after this one anyways; can be combined with dry mode) |
|
||||
| prettier_version | :x: | `latest` | Specific prettier version (by default use latest) |
|
||||
| working_directory | :x: | `${{ github.action_path }}` | 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 | :x: | `"--write **/*.js"` | Prettier options (by default it applies to the whole repository) |
|
||||
| commit_options | :x: | - | Custom git commit options |
|
||||
| push_options | :x: | - | Custom git push options |
|
||||
| same_commit | :x: | `false` | Update the current commit instead of creating a new one, created by [Joren Broekema](https://github.com/jorenbroekema), this command works only with the checkout action set to fetch depth '0' (see example 2) |
|
||||
| commit_message | :x: | `"Prettified Code!"` | Custom git commit message, will be ignored if used with `same_commit` |
|
||||
| commit_description | :x: | - | Custom git extended commit message, will be ignored if used with `same_commit` |
|
||||
| file_pattern | :x: | `*` | Custom git add file pattern, can't be used with only_changed! |
|
||||
| prettier_plugins | :x: | - | 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 | :x: | `true` | Delete the node_modules folder before committing |
|
||||
| only_changed | :x: | `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 | :x: | `${{ github.token }}` | The default [GITHUB_TOKEN](https://docs.github.com/en/actions/reference/authentication-in-a-workflow#about-the-github_token-secret) or a [Personal Access Token](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token)
|
||||
| git_identity | :x: | `actions` | Set to `author` to use author's user as committer. This allows triggering [further workflow runs](https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs)
|
||||
| allow_other_plugins | :x: | `false` | Allow other plugins to be installed (prevents the @prettier-XYZ regex check) |
|
||||
| Parameter | Required | Default | Description |
|
||||
| ------------------- | :------: | :-------------------------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| dry | :x: | `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 |
|
||||
| no_commit | :x: | `false` | Can be used to avoid committing the changes (useful when another workflow step commits after this one anyways; can be combined with dry mode) |
|
||||
| prettier_version | :x: | `latest` | Specific prettier version (by default use latest) |
|
||||
| working_directory | :x: | `${{ github.action_path }}` | 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 | :x: | `"--write **/*.js"` | Prettier options (by default it applies to the whole repository) |
|
||||
| commit_options | :x: | - | Custom `git commit` options |
|
||||
| add_options | :x: | - | Custom `git add` options, e.g. `--update` to only add already known files. |
|
||||
| push_options | :x: | - | Custom `git push` options |
|
||||
| same_commit | :x: | `false` | Update the current commit instead of creating a new one, created by [Joren Broekema](https://github.com/jorenbroekema), this command works only with the checkout action set to fetch depth '0' (see example 2) |
|
||||
| commit_message | :x: | `"Prettified Code!"` | Custom `git commit` message, will be ignored if used with `same_commit` |
|
||||
| commit_description | :x: | - | Custom git extended commit message, will be ignored if used with `same_commit` |
|
||||
| file_pattern | :x: | `*` | Custom `git add` file pattern, can't be used with only_changed! |
|
||||
| prettier_plugins | :x: | - | 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 | :x: | `true` | Delete the node_modules folder before committing |
|
||||
| only_changed | :x: | `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 | :x: | `${{ github.token }}` | The default [GITHUB_TOKEN](https://docs.github.com/en/actions/reference/authentication-in-a-workflow#about-the-github_token-secret) or a [Personal Access Token](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token) |
|
||||
| git_identity | :x: | `actions` | Set to `author` to use author's user as committer. This allows triggering [further workflow runs](https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs) |
|
||||
| allow_other_plugins | :x: | `false` | Allow other plugins to be installed (prevents the @prettier-XYZ regex check) |
|
||||
| use_repo_config | :x: | `false` | Automatically use the repository's prettier configuration files (.prettierrc, prettier.config.js, etc.) and .prettierignore. When enabled, prettier will search for and use config files in your repository, eliminating the need to specify `--config` or `--ignore-path` manually. |
|
||||
|
||||
> 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.
|
||||
|
||||
@@ -57,7 +59,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Prettify code
|
||||
uses: creyD/prettier_action@v4.6
|
||||
@@ -81,7 +83,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
# Make sure the actual branch is checked out when running on pull requests
|
||||
ref: ${{ github.head_ref }}
|
||||
@@ -111,7 +113,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: ${{ github.head_ref }}
|
||||
@@ -142,7 +144,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: ${{ github.head_ref }}
|
||||
@@ -156,6 +158,49 @@ jobs:
|
||||
github_token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
|
||||
```
|
||||
|
||||
#### Example 5 (using repository prettier configuration)
|
||||
|
||||
This example demonstrates the `use_repo_config` option, which automatically detects and uses your repository's prettier configuration files (`.prettierrc`, `prettier.config.js`, etc.) and `.prettierignore` file.
|
||||
|
||||
```yaml
|
||||
name: Continuous Integration
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
prettier:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Prettify code
|
||||
uses: creyD/prettier_action@v4.6
|
||||
with:
|
||||
# Automatically use repository's prettier config and .prettierignore
|
||||
use_repo_config: true
|
||||
```
|
||||
|
||||
With `use_repo_config: true`, the action will:
|
||||
- Search for prettier configuration files in your repository (.prettierrc, prettier.config.js, package.json, etc.)
|
||||
- Automatically use your .prettierignore file if present
|
||||
- Apply prettier to all supported files in your repository
|
||||
- Warn you if no configuration file is found (prettier will use defaults)
|
||||
|
||||
You can still customize the file pattern if needed:
|
||||
|
||||
```yaml
|
||||
- name: Prettify code
|
||||
uses: creyD/prettier_action@v4.6
|
||||
with:
|
||||
use_repo_config: true
|
||||
prettier_options: --write "src/**/*.{js,ts,jsx,tsx}"
|
||||
```
|
||||
|
||||
More documentation for writing a workflow can be found [here](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions).
|
||||
|
||||
## Issues
|
||||
|
||||
@@ -16,6 +16,9 @@ inputs:
|
||||
description: Update the current commit instead of creating a new one
|
||||
required: false
|
||||
default: false
|
||||
add_options:
|
||||
description: Git add options
|
||||
required: false
|
||||
commit_options:
|
||||
description: Commit options
|
||||
required: false
|
||||
@@ -74,6 +77,10 @@ inputs:
|
||||
description: Allow other plugins to be installed. By default, we are checking if the plugins are actually prettier plugins.
|
||||
required: false
|
||||
default: false
|
||||
use_repo_config:
|
||||
description: Use the repository's prettier configuration files (.prettierrc, prettier.config.js, etc.) and .prettierignore automatically. When enabled, prettier will search for config files in the repository.
|
||||
required: false
|
||||
default: false
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
@@ -87,6 +94,7 @@ runs:
|
||||
INPUT_COMMIT_MESSAGE: ${{ inputs.commit_message }}
|
||||
INPUT_COMMIT_DESCRIPTION: ${{ inputs.commit_description }}
|
||||
INPUT_SAME_COMMIT: ${{ inputs.same_commit }}
|
||||
INPUT_ADD_OPTIONS: ${{ inputs.add_options }}
|
||||
INPUT_COMMIT_OPTIONS: ${{ inputs.commit_options }}
|
||||
INPUT_PUSH_OPTIONS: ${{ inputs.push_options }}
|
||||
INPUT_FILE_PATTERN: ${{ inputs.file_pattern }}
|
||||
@@ -102,6 +110,7 @@ runs:
|
||||
INPUT_CLEAN_NODE_FOLDER: ${{ inputs.clean_node_folder }}
|
||||
INPUT_GIT_IDENTITY: ${{ inputs.git_identity }}
|
||||
INPUT_ALLOW_OTHER_PLUGINS: ${{ inputs.allow_other_plugins }}
|
||||
INPUT_USE_REPO_CONFIG: ${{ inputs.use_repo_config }}
|
||||
|
||||
branding:
|
||||
icon: "award"
|
||||
|
||||
@@ -63,6 +63,46 @@ if [ -n "$INPUT_PRETTIER_PLUGINS" ]; then
|
||||
fi
|
||||
)
|
||||
|
||||
# Handle repository configuration files
|
||||
if [ "$INPUT_USE_REPO_CONFIG" = "true" ]; then
|
||||
echo "Using repository prettier configuration..."
|
||||
|
||||
# Check for prettier config files
|
||||
CONFIG_FOUND=false
|
||||
for config_file in .prettierrc .prettierrc.json .prettierrc.yml .prettierrc.yaml .prettierrc.js .prettierrc.cjs .prettierrc.mjs prettier.config.js prettier.config.cjs prettier.config.mjs .prettierrc.toml; do
|
||||
if [ -f "$config_file" ]; then
|
||||
echo " Found prettier config: $config_file"
|
||||
CONFIG_FOUND=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Check package.json for prettier config
|
||||
if [ -f "package.json" ] && grep -q '"prettier"' package.json; then
|
||||
echo " Found prettier config in package.json"
|
||||
CONFIG_FOUND=true
|
||||
fi
|
||||
|
||||
if [ "$CONFIG_FOUND" = "false" ]; then
|
||||
echo " Warning: No prettier config file found. Prettier will use its default configuration."
|
||||
fi
|
||||
|
||||
# Check for .prettierignore
|
||||
if [ -f ".prettierignore" ]; then
|
||||
echo " Found .prettierignore file"
|
||||
else
|
||||
echo " Note: No .prettierignore file found. All files will be processed."
|
||||
fi
|
||||
|
||||
# When using repo config, if prettier_options is still the default, use a more sensible pattern
|
||||
if [ "$INPUT_PRETTIER_OPTIONS" = "--write **/*.js" ]; then
|
||||
echo " Using default file pattern: . (current directory)"
|
||||
INPUT_PRETTIER_OPTIONS="--write ."
|
||||
else
|
||||
echo " Using custom prettier_options: $INPUT_PRETTIER_OPTIONS"
|
||||
fi
|
||||
fi
|
||||
|
||||
PRETTIER_RESULT=0
|
||||
echo "Prettifying files..."
|
||||
echo "Files:"
|
||||
@@ -125,11 +165,11 @@ if _git_changed; then
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# Calling method to configure the git environemnt
|
||||
# Calling method to configure the git environment
|
||||
_git_setup
|
||||
|
||||
# Add changes to git
|
||||
git add "${INPUT_FILE_PATTERN}" || echo "Problem adding your files with pattern ${INPUT_FILE_PATTERN}"
|
||||
git add ${INPUT_ADD_OPTIONS:+"$INPUT_ADD_OPTIONS"} "${INPUT_FILE_PATTERN}" || echo -e "Problem adding your files via 'git add':\n flags: ${INPUT_ADD_OPTIONS:+"$INPUT_ADD_OPTIONS"}\n pattern: ${INPUT_FILE_PATTERN}"
|
||||
|
||||
if $INPUT_NO_COMMIT; then
|
||||
echo "There are changes that won't be commited, you can use an external job to do so."
|
||||
|
||||
Reference in New Issue
Block a user