prettier-plugin-nginx

NGINX configuration plugin for Prettier

Usage no npm install needed!

<script type="module">
  import prettierPluginNginx from 'https://cdn.skypack.dev/prettier-plugin-nginx';
</script>

README

Banner

Prettier for NGINX


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 .nginxconfig. 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://semaphore; 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://semaphore;
    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 Option CLI Option Default Description
printWidth --print-width Same option as in Prettier
tabWidth --tab-width Same option as in Prettier
useTabs --use-tabs Same option as in Prettier
alignDirectives --align-directives true Align directive parameters within a block to the same column.
alignUniversally --align-universally false Align all directive parameters within a file to the same column.
wrapParameters --wrap-parameters true Wrap parameters to new lines to fit print width.
continuationIndent --continuation-indent 2 Additional 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.