Interfejs API usługi Closure Compiler Service API

Kompilator zamknięty został wycofany i zostanie usunięty. Zamiast tego rozważ uruchomienie kompilatora lokalnie.

Omówienie

Aby wysłać skompilowany kod lub inne informacje z usługi kompilatora Closure Compiler, musisz wysłać żądanie POST HTTP na adres URL https://closure-compiler.appspot.com/compile. Treść żądania musi zawierać parametry wymienione w sekcji Wymagane parametry żądania, a także dowolne parametry opcjonalne wymienione w artykule Opcjonalne parametry żądania.

Tam, gdzie to możliwe, ta strona określa kanoniczną dokumentację opcji wiersza poleceń w sekcji Flagi i opcje. Opcje wiersza poleceń niedostępne w usłudze internetowej nie są tutaj wymienione. Niektóre parametry żądania są również niedostępne w wierszu poleceń lub mają inną nazwę.

Jeśli serwer nie przetworzy żądania, pojawi się komunikat o błędzie serwera. Te komunikaty są opisane w sekcji Komunikaty o błędach.

Parametry żądania

Wymagane parametry żądania

js_code lub code_url

Kod JavaScript do skompilowania. Musisz uwzględnić co najmniej jeden z tych parametrów.

Parametr js_code musi być ciągiem zawierającym kod JavaScript, np. alert('hello').

Parametr code_url musi zawierać adres URL pliku JavaScript. Aby określić wiele plików wejściowych, możesz uwzględnić wiele parametrów code_url.

compilation_level

Dokumentację właściwości compilation_level znajdziesz w artykule Flagi i opcje.

output_format
Format danych wyjściowych usługi kompozytora Closure Compiler. Dostępne są 3 formaty danych wyjściowych:
xml

Format wyjściowy xml opakowuje żądane informacje w prawidłowym formacie XML.

Dane wyjściowe XML wyglądają tak:

        <compilationResult>
          <compiledCode>var a="hello";alert(a);</compiledCode>
          <statistics>
            <originalSize>98</originalSize>
            <compressedSize>35</compressedSize>
            <compileTime>0</compileTime>
          </statistics>
        </compilationResult>
      

Sekcja compiledCode zawiera skompresowany kod JavaScript utworzony przez usługę Closure Compiler. Ta sekcja wyświetla się tylko wtedy, gdy w żądaniu dodasz parametr output_info o wartości compiled_code. I podobnie, sekcja statistics pojawia się tylko wtedy, gdy parametr output_info ma wartość statistics.

Jeśli dodasz parametr output_info o wartości warnings, a kompilator wyświetli ostrzeżenie, w danych wyjściowych pojawi się tag warnings:

        <compilationResult>
         ...
         <warnings>
           <warning type="JSC_NO_SIDE_EFFECT" file="default.js" lineno="12" charno="3"  line="delete 1;">warning 1</warning>
           <warning type="JSC_UNUSED_VAR" file="default.js" lineno="13" charno="13" line="delete 1;">warning 2 </warning>
         </warnings>
          ...
        </compilationResult>
      

Jeśli dodasz ciąg output_info o wartości errors, usługa Closure Compiler będzie zawierać tag errors, jeśli w kodzie znajdzie się błąd składni lub inny problem, który uniemożliwia kompilację. Tag errors wygląda tak:

        <compilationResult>
          ...
          <errors>
            <error type="JSC_NO_SIDE_EFFECT" file="default.js" lineno="12" charno="3"  line="var x=-'hello';">error 1 </error>
            <error type="JSC_UNUSED_VAR" file="default.js" lineno="13" charno="13" line="var x=-'hello'">error 2 </error>
          </errors>
          ...
        </compilationResult>
      

Atrybuty file, line i col w tagach error i warning wskazują, gdzie wystąpił błąd kompilatora Closure.

Jeśli usługa kompilatora Closure Compuler napotka błąd, który uniemożliwia przetwarzanie Twoich danych wejściowych, dane wyjściowe będą wyglądać tak:

        <compilationResult>
          <serverErrors>
            <error code="1">Over quota</error>
          </serverErrors>
        </compilationResult>
      
json

Format wyjściowy json opakowuje żądane informacje w ciągu znaków JSON (JavaScript Object Notation). Ocena tego ciągu znaków, gdy JavaScript zwraca obiekt JavaScript.

Dane wyjściowe JSON wyglądają tak:

{
"compiledCode":/* raw code here */,
{"errors": [
  {"charno":4321,
   "error":"ERROR: You failed.",
   "lineno":1234,
   "file":"default.js",
   "type":"ERROR_TYPE",
   "line":"var x=-'hello';"}],
"warnings": [
  {"charno":4321,
   "lineno":1234,
   "file":"default.js",
   "type":"ERROR_TYPE",
   "warning":"Warning: You did something wrong!",
   "line":"delete 1;"}]
"serverErrors":[
  {"code":123,"error":"Over quota"}
  ],
"statistics":{
  "originalSize":10,
  "compressedSize":3000
  "compileTime":10
  }
}
      

Format JSON jest podobny do formatu XML: każdy tag w danych wyjściowych XML odpowiada właściwości o tej samej nazwie w obiekcie JSON.

text
Format wyjściowy text zwraca nieprzetworzony tekst bez tagów ani nawiasów JSON. Jeśli output_info zawiera compiled_code, tekst zawiera JavaScript. Jeśli output_info zawiera warnings, tekst zawiera ostrzeżenia. Jeśli output_info zawiera statistics, tekst zawiera statystyki.

Parametr output_format przyjmuje domyślnie wartość text.

output_info

Wskazuje rodzaj danych wyjściowych kompilatora. Dostępne są 4 rodzaje danych wyjściowych:

compiled_code
Skompresowana i zoptymalizowana wersja JavaScriptu.
warnings
Komunikaty o możliwych błędach w kodzie JavaScript.
errors
Komunikaty zawierające błędy składni lub inne błędy w kodzie JavaScript.
statistics

Informacje o poziomie kompresji kompilatora Closure. W przypadku wyników w formacie xml usługa Closure Compiler zwraca statystyki w następującym formacie:

        <compilationResult>
          ...
          <statistics>
            <firstStatisticName>24</firstStatisticName>
            <secondStatisticName>15</secondStatisticName>
          </statistics>
        </compilationResult>
      

Opcjonalne parametry żądania

js_externs

Wartością tego parametru musi być kod JavaScript deklarujący nazwy funkcji lub inne symbole. Użyj właściwości js_externs, aby zachować symbole zdefiniowane poza kompilowanym kodem. Parametr js_externs ma zastosowanie tylko wtedy, gdy używasz compilation_level o wartości ADVANCED_OPTIMIZATIONS. Więcej informacji znajdziesz w artykule na temat kompilacji zaawansowanej.

externs_url

Wartość tego parametru musi być adresem URL pliku zawierającego kod JavaScript, który deklaruje nazwy funkcji lub inne symbole. Symbole zadeklarowane w tym pliku są przechowywane dokładnie w taki sam sposób, jak symbole wymienione bezpośrednio w parametrze js_externs. Parametr externs_url ma zastosowanie tylko wtedy, gdy używasz compilation_level o wartości ADVANCED_OPTIMIZATIONS. Więcej informacji znajdziesz w artykule na temat kompilacji zaawansowanej.

Możesz podać ten parametr wielokrotnie, jeśli masz wiele plików rozszerzeń.

exclude_default_externs

Domyślnie usługa Closure Compiler używa standardowego pliku rozszerzeń, który deklaruje typowe symbole zewnętrzne, takie jak document, oraz wszystkie jej metody. Jeśli NIE chcesz używać tych popularnych rozszerzeń, umieść w żądaniu parametr exclude_default_externs o wartości true.

Zobacz Zaawansowane kompilacje i zewnętrzne, aby dowiedzieć się więcej o rozszerzeniach.

output_file_name

Jeśli występuje, usługa Closure Compiler przechowuje skompilowany kod w pamięci podręcznej i udostępnia go za pomocą specjalnego adresu URL. W ciągu tej godziny skompilowany kod możesz przetestować, wskazując przeglądarce ten adres URL. Adres URL ma ten format:

https://closure-compiler.appspot.com/code/bf067f356d510e1c7b81347eb84f65d2/[value of output_file_name]

formatting

Dokumentację właściwości formatting znajdziesz w artykule Flagi i opcje. W tym samym żądaniu możesz podać wiele parametrów formatting.

use_closure_library

Jeśli podasz w parametrze use_closure_library wartość true, kompilator utworzy instrukcję goog.require() w kodzie źródłowym i dostarczy kod biblioteki Closure wymagany przez takie instrukcje. Wykonuje także optymalizacje dostosowane do kodu biblioteki Closure. Więcej informacji o bibliotece Closure znajdziesz w jej dokumentacji. Więcej informacji o funkcji goog.require() znajdziesz w artykule Znajdowanie drogi w bibliotece Closure.

Parametr use_closure_library przyjmuje domyślnie wartość false.

warning_level

Dokumentację właściwości warning_level znajdziesz w artykule Flagi i opcje.

language

Więcej informacji o odpowiedniej opcji language_in znajdziesz w artykule Flagi i opcje.

language_out

Dokumentację właściwości language_out znajdziesz w artykule Flagi i opcje.

rewrite_polyfills

Dokumentację właściwości rewrite_polyfills znajdziesz w artykule Flagi i opcje.

use_types_for_optimization

Dokumentację właściwości use_types_for_optimization znajdziesz w artykule Flagi i opcje.

Komunikaty o błędach

Jeśli serwer nie przetworzy Twojego żądania, zobaczysz jeden z komunikatów o błędzie serwera podanych w tabeli poniżej. Pamiętaj, że te komunikaty o błędach serwera różnią się od błędów kompilacji i ostrzeżeń. Błędy i ostrzeżenia dotyczące kompilatora wskazują, że w komponencie Closure Compiler wystąpił problem w kodzie JavaScript. Komunikaty o błędach serwera wskazują, że kompilator nie może w ogóle przetworzyć kodu z powodu błędu w Twoim żądaniu.

Kod błęduKomunikat o błędzieZnaczenie
2Nieznany tryb wyjściowy.Wartość parametru output_format jest inna niż xml, json lub text.
4Nieznany poziom kompresji.Wartość parametru compilation_level jest inna niż WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS lub ADVANCED_OPTIMIZATIONS.
8Dane POST są za duże. Rozmiar danych wysłanych do usługi Closure Compiler przekracza 200 000 bajtów. Zarówno interfejs kompilatora, jak i wywołania interfejsu API komunikują się z usługą za pomocą żądania HTTP POST,a łączna ilość danych wysłanych w tym żądaniu nie może przekraczać 200 000 bajtów. W przypadku wywołań interfejsu API ten limit odnosi się do łącznej ilości tekstu we wszystkich parametrach żądań. W interfejsie kompilatora zamkniętych ograniczeń ten limit dotyczy całkowitej ilości tekstu zarówno w kodzie źródłowym, jak i opcjach kompilacji, takich jak @code_url. Jeśli Twoje żądanie jest zbyt duże, przenieś kod źródłowy do osobnych plików i odwołuj się do nich za pomocą @code_url lub użyj aplikacji Closure Compiler na komputerze lokalnym.
9Plik jest za duży.Łączna ilość kodu ze wszystkich plików code_url, wszystkich plików externs_url, całego kodu js_code oraz całego kodu js_externs przekracza 1024 000 bajtów.
10Nie można pobrać treści z adresu URL.Podczas próby pobrania pliku JavaScript wskazanego w parametrze code_url lub pliku rozszerzeń wskazanych w parametrze externs_url wystąpił błąd. Sprawdź, czy URL jest prawidłowy i czy plik zezwala na wyświetlanie.
12URL ma nieprawidłowy format.Wartość parametru code_url lub externs_url nie jest poprawnie sformatowana.
13Brak danych wyjściowych do utworzenia, ale zażądano kompilacji. Nie określono parametru output_info.
14Nieznana wartość parametru exit_infoWartość parametru output_info jest inna niż compiled_code, warnings lub statistics.
16Nieznany poziom ostrzeżeniaWartość parametru warning_level jest inna niż QUIET, DEFAULT lub VERBOSE.
17Nieznana opcja formatowania.Wartość parametru formatting jest inna niż pretty_print.
18Nieznany parametr w żądaniu HTTPŻądanie HTTP zawiera parametr inny niż jeden z wymienionych w tym dokumencie.
19Niedozwolona wartość w pliku wyjściowym Nazwa pliku wyjściowego zawiera znak w postaci cyfry, litery, kropki, podkreślenia lub łącznika albo zawiera 2 kolejne kropki (..)
22Ostatnio wykonano zbyt wiele kompilacji. Spróbuj ponownie później. Zbyt wiele kompilacji z Twojego komputera. Ponowne kompilowanie powinno być możliwe po godzinie.
23Wyjątek kompilacji (z tłem) Kompilator uległ awarii. Tekst błędu będzie zawierać informacje, które ułatwią Google debugowanie problemu.
24Nieobsługiwany typ zasobu wejściowego Typ zasobu to http:, więc plik wejściowy nie zostanie pobrany.