CSCFA

Fusion.php V4.0

Fusion.php permet l'optimisation des temps de chargement des pages web en rassemblant et en minifiant les fichiers de script JavaScript.

Prérequis

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.

Utilisation

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.

Les commandes

  • php fusion.php -h [function...]
  • php fusion.php -v|--version
  • php fusion.php create:config
  • php fusion.php update
  • php fusion.php watch [waiting time] [loop indicator]

[ Show ]

php fusion.php -h [function...]

Cette ligne de commande peut être utilisée pour obtenir des informations sur l'utilisation des diverses commandes.
[function...] peut prendre les valeurs suivantes :

  • version
  • create:config
  • update
  • watch

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
php fusion.php -v|--version

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
php fusion.php create:config

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 :

  • Répertoires de fichiers de description .AJS => string|multiple
  • Répertoires de fichiers source .JS => string|multiple
  • Répertoire d'écriture => string|unique
  • Saut de ligne => integer|unique / dépend de la minification.
  • Quantité d'informations => boolean|unique
  • Minification des sources => boolean|unique

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) :
php fusion.php update

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
php fusion.php watch [waiting time] [loop indicator]

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 :

  • % : permet d'insérer un saut de ligne
  • $ : permet d'insérer le nombre de vérifications effectuées

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

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 ]

Inclure un fichier source

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

Ecrire un commentaire

Pour écrire un commentaire, il suffit de commencer la ligne par #, suivit d'un espace.

1.# commentaire

Utilisable depuis la version 1.0

Hériter d'un autre fichier AJS

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

Inclure du code source

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.

Modifier la configuration

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 :

  • output : modifie le répertoire d'écriture. (string)
  • lineBreak : modifie la longueur des lignes. (integer)
  • verbose : modifie la quantité d'information affichée. (boolean)
  • minify : active ou désactive la minification du fichier de sortie. (boolean)
1.@config output ./output/
2.@config lineBreak 1000
3.@config verbose 0
4.@config minify 1

Utilisable depuis la version 4.0

Modifier le nom du fichier de sortie

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

Ajouter un commentaire pour le fichier

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

Ecrire une extension

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 :

  • function control($argArray);
  • function getControlMethod();

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.

Téléchargement :

Version 4.2.0 : Ajout de la fonctionnalité de commentaire pour les fichiers ajs @fileLic{ ... }@.

documentation
fusion V4.2.0

Version 4.1.2 : Correction du support @shell{ ... }@ pour accepter les commentaires.

documentation
fusion V4.1.2
documentation
fusion V4.0

Extensions existantes :

[ Show ]

PluginDownloader :

L'extension PluginDownloader permet de télécharger automatiquement des plugins sur ce site.

Usage :

php fusion.php plugin:get [pluginName] [option]

L'argument [pluginName] correspond au nom de l'extension à installer.
Les options peuvent être :

  • -f
  • --force

Ces options permettent d'autoriser la réécriture de fichiers.

Installation :

Pour installer cette extension, il vous suffit de copier le fichier PluginDownloader dans un fichier fusionSrc/pluginStuff/PluginDownloader.php.

jsDebugger :

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.

Usage :

php fusion.php js:debug [option]

Les options peuvent être :

  • -r
  • --recursive

Ces options permettent d'inclure les sous-dossiers dans la vérification.

Installation :

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