2009-07-17 7 views
0

Je me demande quelle est la meilleure façon de réduire et de concaténer tous mes scripts js en un dans un processus de construction. J'ai le travail de minification réelle, mais maintenant besoin de définir une référence dans ma page html au fichier minifié. Dans la version dev, il contient des références à cinq fichiers concaténés. Devrais-je justifier xmlpoke ou quelque chose comme ça? Y a-t-il des techniques plus élégantes?Intégration de js dans le processus de construction

+1

Quel environnement utilisez-vous? Les pignons aident avec ceci (http://getsprockets.org/). – Tom

Répondre

3

la façon dont je fais usally il est concat tous les fichiers ensemble, en utilisant rapetisser Yui:

<target name="compress-js" unless="disable.js.compression"> 
    <java fork="true" spawn="true" jar="tools/yuicompressor-2.3.6/yuicompressor-2.3.6.jar"> 
     <arg value="-o" /> 
     <arg value="${js.home}/lib/lib.js" /> 
     <arg value="${js.home}/lib/lib.js" /> 
    </java> 
    </target> 

et alors juste un en-tête qui référence le fichier compressé, et utilisé dans disable.js.compression dev si que vos fichiers ne soient pas compressés.

0

Dans votre fichier qui contient les fichiers de script, faire (à l'aide qui jamais technologie côté serveur que vous utilisez)

<% 
if (@[email protected]){ 
%> 
    <script src="file1"></script> 
    ... 
    <script src="file5"></script>  
<% 
} else { 
%> 
    <script src="@[email protected]"></script> 
<% 
} 
%> 

Utilisez ensuite la cible de fourmi « remplacer » dans votre fichier de construction (en supposant que vous utilisez ant) pour remplacer @ IS_DEV @ et @ MINIFIED_FILE_PATH @

<replace file="yourfile.jsp" token="@[email protected]" value="${IS_DEV}"/> 
<replace file="yourfile.jsp" token="@[email protected]" value="${YOUR_MINIFIED_FILE_PATH}"/> 
0

Vous pouvez utiliser Buildr

Créez un fichier package.json dans votre projet de répertoire racine, font ressembler à quelque chose comme ceci:

{ 
    "name": "My Project Name", 
    "buildr": { 
     "compress": { 
      "js": true, 
      "css": true, 
      "img": false 
     }, 
     "bundle": { 
      "js": true, 
      "css": true 
     }, 
     "directories": { 
      "out": "./scripts/compressed", 
      "src": "./scripts/uncompressed" 
     }, 
     "files": { 
      "js": true, 
      "css": true, 
      "img": false 
     } 
    } 
} 

Ensuite, exécutez:

buildr 

La volonté ci-dessus compresser et regrouper tous les fichiers css et js dans le répertoire ./scripts/uncompressed dans le répertoire/scripts/compressed`. annuaire.

Mise à jour: Correction de l'URL pour Buildr sur GitHub.

Questions connexes