Quelqu'un peut-il connaître un bon moyen d'exécuter automatiquement certains types de fichiers via un script de traitement sur le téléchargement? J'essaie d'accomplir automatiquement une minification de CSS et JavaScript automatiquement lorsque je les télécharge sur le serveur, en gardant une version agréable et lisible par l'homme du côté local tout en conservant une minifiée sur le serveur. J'utilise actuellement WINSCP sur Windows, qui est script dans une certaine mesure mais pourrait ne pas être suffisamment script. J'aurais probablement besoin d'une sorte de solution de pavée, alors n'ayez pas peur de suggérer quelque chose avec du ruban adhésif de conduit; Cependant, je dois faire la minécution sur mon ordinateur local et télécharger le fichier schéré, car j'utilise l'hébergement partagé et ne peut pas installer de jumel sur le serveur. P>
merci. p>
8 Réponses :
Depuis que vous êtes sur l'hébergement partagé, je suggère simplement d'utiliser le Yuicompressor et exécutez vos fichiers CSS / JS à travers elle avant de les télécharger. Assurez-vous de ne pas perdre vos fichiers d'origine - cela pourrait être une douleur à faire des changements futurs. P>
Vous pouvez également placer un script sur votre serveur qui réécrireait périodiquement vos fichiers CSS / JS, ce qui les transmettrait à PROI-MINIFY-TRAITE et appelez manuellement ce script après avoir effectué un téléchargement. P>
Lisez la question. J'ai demandé un moyen de le faire sur le téléchargement. Je sais quoi utiliser, j'ai juste besoin de savoir s'il y a un bon moyen de l'automatiser.
J'ai lu votre question. Et je vous ai donné ce que je pensais être la meilleure alternative, car je ne pense pas que vous ayez une option pour le faire automatiquement sur le téléchargement.
Eh bien, peut-être que quelqu'un d'autre sache. C'est pourquoi j'ai demandé en premier lieu.
L'attitude suce un peu ici jarrett
Eh bien, pour miniser CSS n'est que quelques regextes.
// (PHP) but should be easily portable to any language function compressCSS($css) { return preg_replace( array('@\s\s+@','@(\w+:)\s*([\w\s,#]+;?)@'), array(' ','$1$2'), str_replace( array("\r","\n","\t",' {','} ',';}'), array('','','','{','}','}'), preg_replace('@/\*[^*]*\*+([^/][^*]*\*+)*/@', '', $css) ) ) ; }
Apparemment, l'OP nous baisse pour ne pas lui dire comment le faire automatiquement sur le téléchargement. Depuis que je pense que vous avez offert une solution valide, je compenserai son bowvote avec un uppote.
@Jarett Parfois, nos questions sont mieux répondues avec des alternatives.
Pas lorsque la réponse manque totalement le point de la question. Si j'avais demandé le meilleur miniérateur, ma question aurait été clôturée immédiatement comme une duplicata.
Eh bien, mon argument était que vous pouviez l'exécuter sur votre serveur ... combien de plus automagieux voulez-vous?
J'aime Minify . Il prend en charge la compression et la coupe HTML, JavaScript et CSS à la volée. P>
Il est assez flexible, un peut être intégré aux applications existantes. P>
Certains des fonctionnalités les plus em> avancées em> combinent plusieurs fichiers JavaScript en un, identique pour CSS. Il a plusieurs façons de définir les fichiers à combiner, ce qui est utile à des fins de test. De cette façon, vous ne devez pas modifier les paramètres à chaque fois. P>
Cela pourrait être bon. Cela semble plus stupide que la solution que je pensais.
C'est vraiment infaillible. J'ai ajouté plus d'informations.
Je recommande de créer un maquette pour résoudre ce problème particulier, voici un matrice rapide et sale que j'utilise pour un site de mine: alors tout ce que vous devez taper est: make && make install
Hot-dog. Cela pourrait valoir la peine de se glisser avec Cygwin.
Ce que j'ai fini par faire (puisque je suis sur Windows), écrit un script PowerShell qui regarde le répertoire des modifications avec le logiciel enfichable PSEventting, puis l'exécute via le minificateur approprié en fonction de l'extension de fichier.
Je suggère de compresser (par tous les moyens d'une manière automatisée) sur votre machine de développement et de le tester avant de télécharger sur votre serveur Live. Changement fondamentalement de votre JavaScript à mesure que la dernière étape de votre processus de déploiement est un risque évident d'introduction d'erreurs. P>
C'est une raison pour laquelle je veux que cela soit automatiquement minifiée sur le téléchargement: je suis donc testant toujours avec quel sera le fichier de production réel.
solution vraiment cool echice fait servir des JS et CSS comme un rêve. P>
Vérifier: http://code.google.com/p/minify/ p>
Caractéristiques P>
Entrez le code ici CODE> LI>
ul> li>
ul>
Je viens d'écrire ce script de Minfier à Python. Comme la solution de factures, il utilise le compresseur YUI, mais fonctionnera dans un environnement important. Il suppose que les fichiers RAW (MODINIFIE) seront dans / certains / chemin / SRC / SRC /, et que les versions minifiantes devraient entrer dans / certains / chemin /. Il suppose également que le fichier JAR Yuicompressor est dans le dossier actuel:
import os, glob from subprocess import Popen,PIPE def RunCommand( cmd, show_output ): p = Popen(cmd, shell=True,stdout=PIPE,stderr=PIPE) for line in p.stdout: if show_output: print line outerr = "\n".join(p.stderr.readlines() ) if len(outerr) > 0: print "ERROR: " + outerr sys.exit() code = p.wait() if ( code > 0 ): print ("ERROR CODE: %i" % code ) sys.exit() compresser = "yuicompressor-2.4.2.jar" dirs = [ "../wwwroot/css/", "../wwwroot/JavaScript/"] extensions = ["*.js", "*.css" ] for dir in dirs: src = dir + "/src/" for ext in extensions: for path in glob.glob( os.path.join( src, ext)): file = os.path.basename(path) src_file = os.path.normpath( src + "/" + file ) dest_file = os.path.normpath( dir + "/" + file ) if not os.path.isfile(dest_file) or os.path.getmtime(src_file) > os.path.getmtime(dest_file): print "minifying %s..." % (dest_file) command = "java -jar %s %s -o %s" % ( compresser, src_file, dest_file ) RunCommand(command, True)
Il y a une solution encore plus claire pour les deux (JS et CSS) afin que vous puissiez "minifier à la volée". Vous devriez être capable de le porter facilement à n'importe quelle langue (il est actuellement en PHP). C'est vraiment un fragment et une partie intégrante du cadre sans gras PHP. Suivez ce lien et regardez mon code. C'est juste une seule fonction. Ne cherchez pas des cloches et des sifflets comme la combinaison de fichiers, codage de base-x, raccourcissement des variables ou même codage gzip (bien que cela puisse être ajouté facilement). P>
Minify sans gras P >
Au fait, voter une réponse parce que c'est faux, c'est ce que vous êtes censé faire. Voter une question parce que vous n'aimez pas l'affiche est malveillante et inconnue.
Je pense que le ton de votre commentaire à la réponse de Jon et le fait que vous avez utilisé Caps était plus malveillant que la descente de votre question.
Capitaliser un mot pour souligner qu'il n'est guère impoli. Si je suis sorti comme dur, ce n'était pas intentionnel.