Home

Awesome

<div align="center"> <img src="./.github/images/prettier-plugin-nginx.png" alt="Banner"> </div> <h1 align="center">Prettier for NGINX</h1> <hr>

This TypeScript module is a plugin for Prettier that beautifies NGINX configuration files. It is written in TypeScript, and depends only on Prettier.

Getting Started

Install Prettier, and then install this plugin from npm:

npm install -g prettier-plugin-nginx

This plugin is configured to run on files with the extension .nginx or .nginxconf. For plugin-level configuration, see Configuration.

Modules that extend NGINX to include other languages within configuration files, such as lua-nginx-module, will not work with this formatter.

Example

A messy file like this...

server {
# server definition
listen 443 ssl; listen [::]:443 ssl;
server_name example.com;
location / { proxy_pass http://proxy; proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 1000; }
# end server definition
}

...is transformed to this:

server {
  # server definition
  listen      443 ssl;
  listen      [::]:443 ssl;
  server_name example.com;

  location / {
    proxy_pass         http://proxy;
    proxy_set_header   Host $http_host;
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_read_timeout 1000;
  }
  # end server definition
}

Configuration

This plugin, like Prettier, is opinionated. The following options are available, with defaults modelled after the configuration examples in the NGINX docs.

API OptionCLI OptionDefaultDescription
printWidth--print-widthSame option as in Prettier
tabWidth--tab-widthSame option as in Prettier
useTabs--use-tabsSame option as in Prettier
alignDirectives--align-directivestrueAlign directive parameters within a block to the same column.
alignUniversally--align-universallyfalseAlign all directive parameters within a file to the same column.
wrapParameters--wrap-parameterstrueWrap parameters to new lines to fit print width.
continuationIndent--continuation-indent2Additional indentation for wrapped lines.

Contributing

Bug reports and pull requests are welcome on GitHub.

License

The package is available as open source under the terms of the MIT License.