mirror of
https://github.com/creyD/prettier_action.git
synced 2026-04-12 19:30:30 +02:00
Add use_repo_config parameter to automatically detect prettier configuration
This addresses GitHub issue #41 by adding an optional `use_repo_config` parameter that allows the action to automatically detect and use the repository's prettier configuration files and .prettierignore. Changes: - Added `use_repo_config` input parameter (default: false for backward compatibility) - Implemented config file detection in entrypoint.sh for all prettier config formats - Automatically changes file pattern to current directory when using repo config - Provides helpful messages about found config files and warnings when none exist - Updated README with new parameter documentation and Example 5 Benefits: - Users no longer need to manually specify --config or --ignore-path - Eliminates confusion about whether config files are being used - Maintains backward compatibility (opt-in via parameter) - Supports all prettier configuration file formats Related: #41
This commit is contained in:
44
README.md
44
README.md
@@ -33,6 +33,7 @@ A GitHub action for styling files with [prettier](https://prettier.io).
|
|||||||
| 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) |
|
| 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) |
|
| 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) |
|
| 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.
|
> 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.
|
||||||
|
|
||||||
@@ -157,6 +158,49 @@ jobs:
|
|||||||
github_token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
|
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).
|
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
|
## Issues
|
||||||
|
|||||||
@@ -77,6 +77,10 @@ inputs:
|
|||||||
description: Allow other plugins to be installed. By default, we are checking if the plugins are actually prettier plugins.
|
description: Allow other plugins to be installed. By default, we are checking if the plugins are actually prettier plugins.
|
||||||
required: false
|
required: false
|
||||||
default: 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:
|
runs:
|
||||||
using: "composite"
|
using: "composite"
|
||||||
@@ -106,6 +110,7 @@ runs:
|
|||||||
INPUT_CLEAN_NODE_FOLDER: ${{ inputs.clean_node_folder }}
|
INPUT_CLEAN_NODE_FOLDER: ${{ inputs.clean_node_folder }}
|
||||||
INPUT_GIT_IDENTITY: ${{ inputs.git_identity }}
|
INPUT_GIT_IDENTITY: ${{ inputs.git_identity }}
|
||||||
INPUT_ALLOW_OTHER_PLUGINS: ${{ inputs.allow_other_plugins }}
|
INPUT_ALLOW_OTHER_PLUGINS: ${{ inputs.allow_other_plugins }}
|
||||||
|
INPUT_USE_REPO_CONFIG: ${{ inputs.use_repo_config }}
|
||||||
|
|
||||||
branding:
|
branding:
|
||||||
icon: "award"
|
icon: "award"
|
||||||
|
|||||||
@@ -63,6 +63,46 @@ if [ -n "$INPUT_PRETTIER_PLUGINS" ]; then
|
|||||||
fi
|
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
|
PRETTIER_RESULT=0
|
||||||
echo "Prettifying files..."
|
echo "Prettifying files..."
|
||||||
echo "Files:"
|
echo "Files:"
|
||||||
|
|||||||
Reference in New Issue
Block a user