Code Monkey home page Code Monkey logo

prettier_action's Introduction

GitHub Prettier Action

CodeFactor code style: prettier License MIT Latest Release Contributors Issues

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!
additional_dependencies - Install additional dependencies (such as 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 creyD#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 creyD#113 by adding the below to your workflow file:

- name: Install npm v8
  run: npm i -g npm@8

prettier_action's People

Contributors

adammartincote avatar andya avatar animeallstar avatar anselmoo avatar bercos avatar creyd avatar fschoenfeldt avatar fsz-codeshop avatar hans5958 avatar hpedrorodrigues avatar infotexture avatar insyri avatar j-fields avatar jlhasson avatar jorenbroekema avatar jsoref avatar juanda237 avatar sebkolind avatar seven1m avatar sksat avatar spawnia avatar stemount avatar stephenlacy avatar suda avatar tombarta avatar tropictim avatar wesleyyue avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.