Skip to content

[prettier-plugin-sh]: automatic parser detection for .husky/* files. #347

Open
@kachkaev

Description

👋 folks, thanks for this plugin!

WDYT of supporting some common file patterns out of the box, e.g. .husky/*? This glob could go somewhere here:

const EXTRA_SH_LANGUAGES: SupportLanguage[] = [
{
name: 'JvmOptions',
since: '0.1.0',
parsers: ['sh'],
extensions: ['.vmoptions'],
filenames: ['jvm.options'],
vscodeLanguageIds: ['jvmoptions'],
},
{
name: 'hosts',
since: '0.1.0',
parsers: ['sh'],
filenames: ['hosts'],
vscodeLanguageIds: ['hosts'],
},
{
name: 'dotenv',
since: '0.1.0',
parsers: ['sh'],
extensions: ['.env'],
filenames: ['.env.*'],
vscodeLanguageIds: ['dotenv'],
},
{
name: 'nvmrc',
since: '0.14.0',
parsers: ['sh'],
extensions: ['.node-version', '.nvmrc'],
filenames: ['.node-version', '.nvmrc'],
},
]

I have a few projects that use husky as well as prettier-plugin-sh. Files like .husky/pre-commit contain shell scripts but they are not assigned sh parser by Prettier out of the box. So I have to do this in prettier.config.js:

/** @type {import("prettier").Options} */
const config = {
  plugins: ["prettier-plugin-sh"],

  overrides: [
    {
      files: ".husky/*",
      options: {
        parser: "sh",
      },
    },
  ],
};

export default config;

It’d be cool to avoid overrides in this trivial case, which I guess could be done by tweaking the plugin. Happy to submit a PR if this makes sense.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions