Skip to content

longkai/kubernetes-yaml-formatter

Repository files navigation

Better YAML Formatter for Visual Studio Code

A Visual Studio Code extension that provides format support for YAML language.

Frustrated of the builtin formatter with its own option philosophy?

Or you guys comes from devops world where dealing with a lot of yaml everyday like kubernetes, ansible or helm template.

And you have your own prefer style of YAML, e.g., do not indent sequence elements or other customization settings.

This extension is made for you :)

Features

Format correct, consistent and customized yaml text with Better YAML Formatter.

🔥 Watch the demo video 👇

demo.mov

Take the k8s yaml for example:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

As you see, the sequence style(containers and ports) in the k8s style yaml has no indent. Each time you play with kubectl, there is no indent. Not to mention some tool like kustomize requires you do that.

Unluckily, the builtin yaml format has its own option philosophy. It always does indent and resists to accept such a customization setting.

It's useless. I have to keep the style manually every time editing yaml files, or you will end up with a non-idiomatic one.

It's tedious. So I create this extension to make life easier.

Extension Settings

This extension contributes the following settings:

  • better-yaml.directives: Whether block sequences should be indented.
  • better-yaml.directives: Include directives in the output. If true, at least the document-start marker --- is always included. If false, no directives or marker is ever included. If null, directives and marker may be included if required.
  • better-yaml.commentString: Change the comment prefix string. By default, empty comment lines are left empty, lines consisting of a single space are replaced by #, and all other lines are prefixed with a #.
  • better-yaml.lineWidth: Maximum line width (set to 0 to disable folding). This is a soft limit, as only double-quoted semantics allow for inserting a line break in the middle of a word.
  • better-yaml.documentOptions.version: The YAML version used by documents without a %YAML directive. Must be '1.1' or '1.2'. Default to '1.2'.

Thanks

Thanks lupengpeng for the icon design. It's great!

Many thanks the following projects:

Without them there wouldn't be this extension.

Throughout the process I learnt a lot and also made some contributions back to them.

Definitely welcome your patches and contributions!