2013-12-08 118 views
15

我知道這可能聽起來有點愚蠢,但是當涉及到格式化時,我的一個NGINX配置文件是一個廢話。它的工作原理和所有這些都是關於它的。有NGINX配置文件的格式化器/美化器嗎?

我試圖找到某種美化工具或格式化工具,如http://jsbeautifier.org/,但後來用於nginx配置文件而不是javascript,但目前還沒有運氣。

我希望任何人都會有一個建議。沒有要求,只要它可以快速/懶惰地製作NGINX配置文件!

謝謝!

回答

1

我使用JS格式化程序(例如http://jsbeautifier.org/),它們不關心錯誤。

+2

我現在正在分流jsbeautifier出於挫折,世界上沒有任何東西存在格式這種配置語法。我試過jsbeautifier,但它沒有工作(關閉所有設置) 例如,#comments開始了一個新行。 贊: # 評論 你如何使用jsbeautifier的nginx配置? –

+1

@PeterWillemsen好吧,我意識到了侷限性。可能救我的是,我只格式化大型配置模板,我的配置儘可能分開。所以大部分時間我都不會遇到問題。 –

+2

謝謝,我只是試圖分叉JSBeautifier,將它發佈時,它爲任何人尋找相同的NGINX文件的作品。 –

4

如果您的封鎖線結束{的和}的,這個簡單的壓頭可以幫助你一點。

不是格式化所有的配置,它只修復縮進。

原在AWK(source)

#!/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} 

或者在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) 
+0

Thankyou。我花了很多年試圖讓vim縮進,並在挫折中放棄。 awk腳本非常棒! – IanB

11

我發現這可能會滿足您的需求的幾個項目:

  1. Nginx的格式化程序(蟒蛇)by 1connect
    你可以得到它here
  2. vginilevich的Nginx美化器(js/nodejs)
    nginxbeautifier.com它可讓您在Web瀏覽器中快速配置格式。 你也可以在同一個網站上得到一個命令行工具來在本地運行它。
+1

感謝您分享我的項目(nginxbeautifier),如果你想在本地運行它,請訪問我的github頁面https://github.com/vasilevich/nginxbeautifier – vasilevich

+2

我寫了https://github.com/beijaflor-io/conffmt ,它是任何conf文件的完整解析器和漂亮的打印機 – yamadapc