Empaqueter son extension!

Ecrire une extension n'est pas très compliqué même si cela peut s'avérer complexe. Mais une fois celle-là écrite il peut-être intéressant de la partager. Pour cela autant avoir pris dès le départ des bonnes habitudes, pour que cette fabuleuse extension s'intègre parfaitement dans firefox (ou mozilla ou thunderbird). Une première étape nécessaire est la répartition des différents fichiers constituants.

En règle générale, les différents fichiers d'une extension sont répartis dans trois répertoires: content, locale et skin. Le répertoire content contient les fichiers XUL, les fichiers Javascript et les fichiers XBL. Le répertoire locale contient tous les éléments liés à l'internationalisation (un répertoire par langue). Et enfin le répertoire skin contient les feuilles de style CSS.

Cela donne quelque chose comme ceci:

  • content
    • fichiers XUL
    • js
      • fichiers javascript
  • locale
    • fr-FR
      • fichiers de localisation français
    • en-US
      • fichiers de localisation anglais
  • skin
    • fichiers css

Tout cela n'est pas très compliqué. Il ne reste plus qu'à déclarer l'extension auprès de firefox. C'est maintenant que cela devient un petit peu plus complexe. On peut de manière simple ajouter des références dans le répertoire chrome d'installation de firefox. Personnellement je ne trouve pas ça très propre surtout pour une extension en cours de développement. J'ai choisi de déclarer l'extension dans le répertoire du profil que j'utilise pour le développement.

En fait, ce qu'il y a de complexe c'est que cette déclaration se fait avec des fichiers RDF. Ces fichiers n'ont pas une structure si complexe que cela mais à la moindre erreur de synxtaxe cela ne fonctionne pas du tout et il est alors difficile et fastidieux de trouver l'erreur.

Voici comme j'ai procédé. Dans le répertoire chrome de mon profil (~/xul/chrome) j'ai crée ce fichier chrome.rdf. C'est tout pour le répertoire du profil. Après il faut créer un fichier contents.rdf par répertoire de l'extension déclaré dans le fichier chrome.rdf, c'est-à-dire un fichier dans content, un fichier dans chaque locale - en français et en anglais - et enfin un fichier dans skin.

J'ai placé mes extensions dans un répertoire ~/extensions/. L'extension est dans un répertoire hello. Pour l'adapter il suffit de remplacer tous les chemins du type file:///home/nicolas/extensions/hello/* par file:///chemin/vers/extension/nom_extension/* où * est content, skin ou locale/fr-FR (locale/en-US) dans le fichier chrome.rdf. Tous les endroits où il y a hello il faut le remplacer par l'identifiant de l'extension. Il faut faire de même pour les fichiers contents.rdf

En fermant puis relançant firefox on accède alors au fichier hello.xul à partir de l'url chrome://hello/content/hello.xul.

Haut de page