Fusion.php permet l'optimisation des temps de chargement des pages web en rassemblant et en minifiant les fichiers de script JavaScript.
Comme le laisse sous-entendre son extension, Fusion.php nécessite que le langage PHP puisse être utilisé sur le système hôte. Voici le lien de téléchargement : php.net.
En interne, Fusion.php utilise YUIcompressor. Ce logiciel, écrit en Java permet la minification et l'obfuscation. Le système nécessite donc la présence de Java JRE. Cette nécessité devient optionnelle si vous n'utilisez pas la minimisation. Voici le lien de téléchargement : oracle.com.
Fusion.php propose diverses commandes afin d'effectuer la compression. Cette dernière s'effectue d'après un fichier de configuration en XML décrivant les différents dossiers ou trouver les fichiers Javascript et les fichiers de description AJS.
[ Show ]
Cette ligne de commande peut être utilisée pour obtenir des informations sur l'utilisation des diverses
commandes.
[function...] peut prendre les valeurs suivantes :
Cette commande est incluse dans Fusion.php depuis la version 3.0.
1. | php fusion.php -h |
---|---|
2. | php fusion.php -h [function...] |
3. | get help about all of the functions or about a named function. |
4. | function : |
5. | version |
6. | create:config |
7. | update |
8. | watch |
Cette ligne de commande peut être utilisée pour obtenir la version de fusion.php.
Cette commande est incluse dans Fusion.php depuis la version 3.1.
1. | php fusion.php -v |
---|---|
2. | |
3. | Current application version : 4.0.0 |
Cette ligne de commande est à utilisée afin de créer le fichier de configuration fusionConfig.conf.
Une interface sera proposée à l'utilisateur afin de faciliter la sélection des dossiers. Il est ainsi
possible de sélectionner divers dossiers pour les fichiers sources, ainsi que divers dossiers pour
les fichiers de description AJS.
Il est fortement déconseillé d'utiliser le même nom pour différents fichiers source.
Les options suivantes seront ainsi renseignés :
Cette commande est incluse dans Fusion.php depuis la version 3.0 sous la forme "create:project", et depuis la version 4.0 sous la forme "create:config".
1. | php fusion.php create:config |
---|---|
2. | Welcome to the configuration file generator. The following steps will guide you to create you'r own config. |
3. | The ajs directory will contain all of the ajs file. This file contain the compilation protocol. You can specify multiple ajs directory. Press ENTER to pass. |
4. | ajs directory : ./ajs |
5. | ajs directory : |
6. | |
7. | The js directory will contain all of the javaScript source file. You can specify multiple js directory. Press ENTER to pass. |
8. | js directory : ./js |
9. | js directory : |
10. | |
11. | The output directory will contain the compilation result file. |
12. | output directory [./output/] : |
13. | |
14. | The line break is the maximum character length of result line. Only work with minify option. 40 characters minimum. |
15. | line break [7000] : |
16. | |
17. | The verbose option will display more information on compilation process. |
18. | verbose [false] : |
19. | |
20. | The minify option will minify the compiled file. |
21. | minify [true] : |
22. | |
23. | ajs directory: |
24. | ./ajs |
25. | js directory: |
26. | ./js |
27. | output directory: ./output/ |
28. | line break: 7000 |
29. | verbose: false |
30. | minify: true |
31. | |
32. | Did you accept this configuration ? (Y-N) : |
Cette ligne de commande est utilisée afin de compiler tous les fichiers de description AJS présents dans les répertoires de description.
Cette commande est incluse dans Fusion.php depuis la version 3.1.
1. | php fusion.php update |
---|---|
2. | build file ajs1_1.js |
3. | from file file2.js |
4. | from file file1.js |
5. | into output file test/output/ajs1_1.js |
6. | build file ajs1_2.js |
7. | from file file2.js |
8. | from file file3.js |
9. | into output file test/output/ajs1_2.js |
Cette ligne de commande est utilisée afin de compiler tous les fichiers de description AJS présents dans les répertoires de description, puis d'attendre une modification afin de recompiler les fichiers de description concernés.
L'option facultative [waiting time] est un entier qui permet de contrôler le temps d'attente entre chaque vérification. Par défaut, cette option vaut 1.
L'option facultative [loop indicator] est une chaine de caractère qui permet l'affichage de texte entre chaque vérification. Il existe deux métacaractères pour cette option :
Par défaut, cette option vaut "".
Cette commande est incluse dans Fusion.php depuis la version 3.0.
1. | php fusion.php watch |
---|---|
2. | build file ajs1_1.js |
3. | from file file2.js |
4. | from file file1.js |
5. | into output file test/output/ajs1_1.js |
6. | build file ajs1_2.js |
7. | from file file2.js |
8. | from file file3.js |
9. | into output file test/output/ajs1_2.js |
9. | -- waiting for change -- |
Les fichiers AJS sont au coeur de Fusion.php. En effet, ils permettent de sélectionner les fichiers sources
à inclure dans chaque fichier de sortie.
Malgré le fait que Fusion.php utilise un fichier de configuration, il est possible de modifier au cas par
cas cette dernière directement dans les fichiers AJS.
Il est également possible d'inclure directement du JavaScript dans ces fichiers.
[ Show ]
Pour inclure un fichier source, il suffit de le nommer, en considérant que ce fichier se trouve à la source d'un répertoire de fichier source présent dans la configuration.
1. | # fichier ajs1_1.ajs |
---|---|
2. | file2.js |
3. | file1.js |
Utilisable depuis la version 1.0
Pour écrire un commentaire, il suffit de commencer la ligne par #, suivit d'un espace.
1. | # commentaire |
---|
Utilisable depuis la version 1.0
Pour hériter d'un autre fichier AJS, il faut commencer la ligne par @extend, suivit d'un espace.
1. | # fichier ajs1_2.ajs |
---|---|
2. | @extend ajs1_1.ajs |
3. | file3.js |
Utilisable depuis la version 1.0
Afin d'inclure du code source, il existe une instruction, ainsi qu'un bloc.
L'instruction @shell suivie d'un espace peut être utilisée pour insérer une ligne de code source dans le document final. Cette ligne sera insérée à l'emplacement de sa présence dans le fichier AJS.
L'instruction @shell{ permet quand à elle d'insérer un bloc de code. Ce bloc sera ainsi fermé par }@.
1. | @shell \\code monoligne |
---|---|
2. | @shell{ |
3. | \\code |
4. | \\multiligne |
4. | }@ |
Utilisable depuis la version 3.0 en monoligne, et depuis la version 3.1 en multiligne.
Afin de modifier la configuration, il est possible d'utiliser l'instruction @config [name] [value]. Les paramètres pouvant être changés sont les suivants :
1. | @config output ./output/ |
---|---|
2. | @config lineBreak 1000 |
3. | @config verbose 0 |
4. | @config minify 1 |
Utilisable depuis la version 4.0
Afin de modifier le nom du fichier de sortie, il est possible d'utiliser l'instruction @outputFile [name].
1. | @outputFile index.js |
---|
Utilisable depuis la version 4.0
L'instruction @fileLic{ permet quand à elle d'insérer un commentaire dans le fichier de sortie. Ce bloc sera ainsi fermé par }@.
1. | @fileLic{ |
---|---|
2. | File description |
3. | File summary |
4. | |
5. | @author developper Name |
6. | @licstart |
7. | ... |
8. | @licend |
9. | }@ |
Utilisable depuis la version 4.2.0
Fusion.php prévoit la possibilité d'inclure des extensions directement en collant le fichier source dans le répertoire fusionSrc/kernelStuff/ .
[ Show ]
Les classes d'extensions doivent implémenter l'interface FlowStackInterface. Cette interface dispose de deux méthodes :
La méthode control($argArray) permet de controler les paramétres passés à Fusion.php. Si les options sont correctes, la methode devra retourné true afin que le controlleur fasse appel à la méthode getControlMethod(). Si les options sont incorrectes, alors la méthode devra retourner false, afin que le controlleur teste une autre extension.
La méthode getControlMethod() permet de retourner le nom de la méthode qui effectue les actions de traitement.
Les classes présentes dans fusionSrc/kernelStuff/ sont testées automatiquement les unes à la suite des autres. Il est donc important de ne pas inclure de classes autres que les classes d'extension.
Les éventuelles classes de traitement peuvent etres inclues dans le répertoire /fusionSrc/kernelRessource/. Si les fichiers de script php sont inclus dans les repertoires existants de /fusionSrc/, il est alors inutile de faire appel aux instructions include ou require de php, la fonction d'autoload de Fusion.php se chargera de les charger automatiquement.
Version 4.2.0 : Ajout de la fonctionnalité de commentaire pour les fichiers ajs @fileLic{ ... }@.
Version 4.1.2 : Correction du support @shell{ ... }@ pour accepter les commentaires.
[ Show ]
L'extension PluginDownloader permet de télécharger automatiquement des plugins sur ce site.
php fusion.php plugin:get [pluginName] [option]
L'argument [pluginName] correspond au nom de l'extension à installer.
Les options peuvent être :
Ces options permettent d'autoriser la réécriture de fichiers.
Pour installer cette extension, il vous suffit de copier le fichier PluginDownloader dans un fichier fusionSrc/pluginStuff/PluginDownloader.php.
L'extension jsDebugger permet de vérifier qu'il n'existe pas plusieurs fichier JavaScript du meme nom dans les répertoires de fichiers sources.
php fusion.php js:debug [option]
Les options peuvent être :
Ces options permettent d'inclure les sous-dossiers dans la vérification.
Pour installer cette extension, il vous suffit de copier le fichier
jsDebugger
dans un fichier fusionSrc/pluginStuff/jsDebugger.php.
Ou d'utiliser l'extension PluginDownloader :
1. | php fusion.php plugin:get jsDebugger |
---|