Documentation de référence de l'API du service Compiler Closure

Le service de compilation de fermeture est obsolète et sera supprimé. Envisagez plutôt d'exécuter le compilateur en local.

Présentation

Pour demander du code compilé ou d'autres informations au service Closure Compiler, vous devez envoyer une requête HTTP POST à l'URL https://closure-compiler.appspot.com/compile. Le corps de la requête doit contenir les paramètres répertoriés dans la section Paramètres de requête requis. Il peut également contenir l'un des paramètres facultatifs répertoriés dans Paramètres de requête facultatifs.

Dans la mesure du possible, cette page renvoie à la documentation canonique sur les options de ligne de commande sur la page Options et options. Les options de ligne de commande non disponibles dans le service Web ne sont pas documentées ici. Certains paramètres de requête ne sont pas non plus disponibles sur la ligne de commande ou ont un nom différent.

Si le serveur ne parvient pas à traiter votre requête, vous recevrez un message d'erreur. Ces messages sont décrits dans la section Messages d'erreur.

Paramètres des requêtes

Paramètres de requête requis

js_code ou code_url

Code JavaScript à compiler. Vous devez inclure au moins l'un de ces paramètres, et vous pouvez inclure les deux.

Le paramètre js_code doit être une chaîne contenant du code JavaScript (par exemple, alert('hello')).

Le paramètre code_url doit contenir l'URL d'un fichier JavaScript. Vous pouvez inclure plusieurs paramètres code_url pour spécifier plusieurs fichiers d'entrée.

compilation_level

Consultez la documentation de compilation_level sur la page Options et options.

output_format
Format de sortie du service Compiler Closure. Il existe trois formats de sortie possibles :
xml

Le format de sortie xml encapsule les informations demandées dans un fichier XML valide.

La sortie XML se présente comme suit:

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

La section compiledCode contient le code JavaScript compressé généré par le service Closure Compiler. Cette section ne s'affiche que si vous incluez dans la requête un paramètre output_info dont la valeur est compiled_code. De même, la section statistics ne s'affiche que si vous incluez un paramètre output_info avec une valeur statistics.

Si vous incluez un paramètre output_info avec la valeur warnings et que le compilateur génère un avertissement, la sortie inclura une balise 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>
      

Si vous incluez une valeur output_info avec la valeur errors, le service Closure Compiler inclut une balise errors si votre code contient une erreur de syntaxe ou un autre problème empêchant la compilation. La balise errors se présente comme suit:

        <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>
      

Les attributs file, line et col des balises error et warning indiquent où le service Closure Compiler a rencontré l'erreur.

Si le service Closure Compiler rencontre une erreur qui empêche le traitement de votre entrée, la sortie se présente comme suit:

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

Le format de sortie json encapsule les informations demandées dans une chaîne JSON (JavaScript Object Notation). L'évaluation de cette chaîne en tant que JavaScript renvoie un objet JavaScript.

La sortie JSON se présente comme suit:

{
"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
  }
}
      

Le format JSON est semblable au format XML: chaque balise de la sortie XML correspond à une propriété du même nom dans l'objet JSON.

text
Le format de sortie text renvoie du texte brut sans tags ni crochets JSON. Si output_info inclut compiled_code, le texte contient JavaScript. Si output_info inclut warnings, le texte contient des messages d'avertissement. Si output_info inclut statistics, le texte contient des statistiques.

La valeur par défaut du paramètre output_format est text.

output_info

Indique le type de sortie que vous souhaitez obtenir du compilateur. Il existe quatre types de résultats:

compiled_code
Version compressée et optimisée de votre code JavaScript d'entrée.
warnings
Messages indiquant d'éventuels bugs dans votre code JavaScript.
errors
Messages qui indiquent des erreurs de syntaxe ou d'autres erreurs dans votre code JavaScript.
statistics

Informations sur le niveau de compression atteint par Closure Compiler. Pour les résultats XML, le service Closure Compiler renvoie des statistiques au format suivant:

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

Paramètres de requête facultatifs

js_externs

La valeur de ce paramètre doit être un code JavaScript qui déclare des noms de fonction ou d'autres symboles. Utilisez js_externs pour conserver les symboles définis en dehors du code que vous compilez. Le paramètre js_externs n'a d'effet que si vous utilisez un compilation_level de ADVANCED_OPTIMIZATIONS. Pour en savoir plus, consultez la section Compilation avancée.

externs_url

La valeur de ce paramètre doit être l'URL d'un fichier contenant JavaScript qui déclare des noms de fonction ou d'autres symboles. Les symboles déclarés dans ce fichier sont conservés exactement de la même manière que ceux indiqués directement dans le paramètre js_externs. Le paramètre externs_url n'a d'effet que si vous utilisez une propriété compilation_level de type ADVANCED_OPTIMIZATIONS. Pour en savoir plus, consultez la section Compilation avancée.

Vous pouvez spécifier ce paramètre plusieurs fois si vous avez plusieurs fichiers d'extension.

exclude_default_externs

Par défaut, le service Closure Compiler utilise un fichier d'externs standard qui déclare les symboles courants définis en externe tels que document et toutes ses méthodes. Si vous NE souhaitez PAS utiliser ces externs courants, incluez dans votre requête un paramètre exclude_default_externs avec la valeur true.

Pour plus d'informations sur les externs, consultez la section Compilation avancée et extternes.

output_file_name

S'il est présent, le service Closure Compiler met en cache le code compilé pendant une heure et le met à disposition via une URL spéciale. Pendant cette heure, vous pouvez tester le code compilé en dirigeant votre navigateur vers cette URL. L'URL se présente au format suivant :

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

formatting

Consultez la documentation de formatting sur la page Options et options. Vous pouvez fournir plusieurs paramètres formatting dans la même requête.

use_closure_library

Si vous attribuez la valeur true au paramètre use_closure_library, le compilateur recherche les instructions goog.require() dans le code source et fournit le code Closure Library demandé par ces instructions. Il effectue également des optimisations conçues spécifiquement pour le code de la bibliothèque Closure. Pour en savoir plus sur la bibliothèque Closure, consultez la documentation sur la bibliothèque de fermetures. Pour en savoir plus sur la fonction goog.require(), consultez Se repérer dans la bibliothèque Closure.

La valeur par défaut du paramètre use_closure_library est false.

warning_level

Consultez la documentation de warning_level sur la page Options et options.

language

Consultez la documentation sur les options language_in équivalentes sur la page Options et options.

language_out

Consultez la documentation de language_out sur la page Options et options.

rewrite_polyfills

Consultez la documentation de rewrite_polyfills sur la page Options et options.

use_types_for_optimization

Consultez la documentation de use_types_for_optimization sur la page Options et options.

Messages d'erreur

Si le serveur ne parvient pas à traiter votre requête, vous recevrez l'un des messages d'erreur de serveur répertoriés dans le tableau ci-dessous. Notez que ces messages d'erreur de serveur sont différents des erreurs et des avertissements du compilateur. Les erreurs et avertissements du compilateur indiquent que Closure Compiler a détecté un problème dans votre code JavaScript. Les messages d'erreur du serveur indiquent que le compilateur ne peut pas du tout traiter votre code en raison d'une erreur dans votre requête.

Code d'erreurMessage d'erreurSignification
2Mode de sortie inconnu.La valeur du paramètre output_format est différente de xml, json ou text.
4Niveau de compression inconnu.La valeur du paramètre compilation_level n'est pas WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS ni ADVANCED_OPTIMIZATIONS.
8Données POST trop volumineuses. La taille des données que vous avez envoyées au service Closure Compiler dépasse 200 000 octets. L'interface utilisateur du service Compiler et vos appels d'API utilisent une requête HTTP POST pour communiquer avec le service, et la quantité totale de données envoyées dans cette requête ne peut pas dépasser 200 000 octets. Pour les appels d'API, cette limite s'applique à la quantité totale de texte dans tous les paramètres de la requête. Pour l'interface utilisateur de Closure Compiler, cette limite s'applique à la quantité totale de texte dans le code source et dans les options de compilation telles que @code_url. Si votre requête est trop volumineuse, placez le code source dans des fichiers distincts et référencez-les à l'aide de @code_url, ou utilisez l'application Closure Compiler sur votre ordinateur local.
9Fichier trop volumineux.La quantité totale de code de tous les fichiers code_url, externs_url, js_code et js_externs dépasse 1 024 000 octets.
10Impossible de récupérer le contenu à partir de l'URL.Une erreur s'est produite lorsque le service Closure Compiler a tenté de récupérer un fichier JavaScript indiqué dans le paramètre code_url ou un fichier externe indiqué dans le paramètre externs_url. Vérifiez que l'URL est correcte et que les autorisations du fichier permettent son affichage.
12Le format de l'URL est incorrect.La valeur du paramètre code_url ou externs_url n'est pas une URL valide.
13Aucune information de sortie à produire, mais la compilation a été demandée. Aucun paramètre output_info n'a été spécifié.
14Valeur "output_info" inconnueLa valeur d'un paramètre output_info n'est pas compiled_code, warnings ni statistics.
16Niveau d'avertissement inconnuLa valeur du paramètre warning_level est différente de QUIET, DEFAULT ou VERBOSE.
17Option de mise en forme inconnue.La valeur du paramètre formatting est différente de pretty_print.
18Paramètre inconnu dans la requête HTTPLa requête HTTP contient un paramètre autre que l'un des répertoriés dans ce document.
19Valeur non autorisée pour "output_file_name" Le nom du fichier de sortie contient un caractère un chiffre, une lettre, un point, un trait de soulignement ou un tiret, ou il contient deux points consécutifs (..).
22Trop de compilations ont été effectuées récemment. Réessayez plus tard. Vous avez envoyé trop de compilations à partir de votre machine. Au bout d'une heure, vous devriez pouvoir effectuer des compilations.
23Exception du compilateur (avec trace trace) Le compilateur a planté. Le texte de l'erreur contient des informations pour aider Google à résoudre le problème.
24Type de ressource d'entrée non compatible Le type de ressource n'étant pas http:, le fichier d'entrée ne sera donc pas récupéré.