Skip to content

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

@kachkaev

Description

@kachkaev

👋 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

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions