是否有NGINX配置文件的格式化程序/美化器?

Pet*_*sen 19 formatting config nginx

我知道这可能听起来有点愚蠢,但我的NGINX配置文件之一在格式化方面是一个废话.它的工作原理和所有这些都是关于它的.

我试图找到某种美化或格式化程序,比如http://jsbeautifier.org/,然后找到nginx配置文件而不是javascript,但到目前为止还没有运气.

我希望有人会有一个建议.没有要求,只要它可以格式化快速/懒惰的NGINX配置文件!

谢谢!

小智 13

我找到了一些可能适合您需求的项目:

  1. 通过1connect的Nginx Formatter(python)
    你可以在这里得到它
  2. 由vasilevich
    nginxbeautifier.com提供的 Nginx美化(js/nodejs),可让您在Web浏览器中快速格式化配置.您也可以在同一站点上获取命令行工具以在本地运行它.

  • 感谢分享我的项目(nginxbeautifier),如果你想在本地运行它,请访问我的 github 页面 https://github.com/vasilevich/nginxbeautifier (2认同)
  • 我也写过https://github.com/beijaflor-io/conffmt,这是一个完整的解析器和适用于任何conf文件的漂亮打印机 (2认同)

cor*_*lio 5

如果您的块行以's 和's结尾,这个简单的压头可以帮助您。{}

不会格式化您的所有配置,它只会修复缩进。

awk 中的原文(来源)

#!/usr/bin/awk -f
{sub(/^[ \t]+/,"");idx=0}
/\{/{ctx++;idx=1}
/\}/{ctx--}
{id="";for(i=idx;i<ctx;i++)id=sprintf("%s%s", id, "\t");printf "%s%s\n", id, $0}
Run Code Online (Sandbox Code Playgroud)

或者用python重写:

INDENT = ' ' * 4

def indent(contents):
   lines = map(str.strip, contents.splitlines())
   current_indent = 0
   for index,line in enumerate(lines):
       if (line.endswith('}')):
           current_indent -= 1

       lines[index] = current_indent * INDENT + line

       if (line.endswith('{')):
           current_indent += 1

    return ('\n').join(lines)
Run Code Online (Sandbox Code Playgroud)


Mic*_*sky 2

这里有一个nginx 的http://jsbeautifier.org/的分支:https: //github.com/vasilevich/nginxbeautifier

  • 我目前正在分叉 jsbeautifier,因为世界上不存在任何东西可以格式化这种配置语法。我尝试了 jsbeautifier,但它不起作用(所有设置都关闭)例如,#comments 在新行中开始。像: # &lt;newline&gt; comments 如何使用 jsbeautifier 进行 nginx 配置? (2认同)
  • 谢谢,我会尝试分叉 JSBeautifier,当它适用于 NGINX 文件时,我会将其发布给任何寻找相同内容的人。 (2认同)
  • @henno 我做到了!https://github.com/vasilevich/nginxbeautifier (2认同)