IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Un outil pour fusionner, minimifier et obfusquer tous les fichiers javascripts d'une page html


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 69
    Points : 61
    Points
    61
    Par défaut Un outil pour fusionner, minimifier et obfusquer tous les fichiers javascripts d'une page html
    Bonjour,

    Pour plus de clarté, je sépare mon code javascript en plusieurs fichiers.
    J'aimerai trouvé un outil qui parcours ma page html, recense tous les fichiers js et génère un seul fichier javascript avec mon code minifié et si possible obfusqué.

    J'avais trouvé cette outil:
    http://www.javascriptmvc.com/docs.html#&who=steal.build

    mais je n'arrive pas à le faire fonctionner.

    Vous connaissez d'autres solutions similaires?

    merci.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 69
    Points : 61
    Points
    61
    Par défaut
    Bon mon post n'a pas inspiré grand monde.
    J'ai réussi à faire fonctionner stealJs avec l'aide de leur forum. Le résultat un fichier js avec tous mes fichiers javascript fusionnés. Le code est minifié mais pas obfusqué. Je chercherai plus tard un obfuscator qui fonctionne avec mon code. D'expérience je sais que ce traitement sur les sources est délicat et génère pas mal d'erreurs.

    Cela fait longtemps que je n'ai pas développé avec javascript. Avec la montée en puissance d'ajax et les grosses appli que l'on peut voir (gmail, google docs etc.) je m'attendais à trouver des environnements plus développé avec ce genre de fonctionnalités intégrées. J'ai cherché pas mal de temps et je n'ai rien trouvé. Le seul environnement de dev qui semble assez costaud est GWT mais c'est du java, pas du javascript pur.
    Javascript mvc est pas mal mais assez lourd en taille des fichiers et sans solution tout intégrée. La "compilation" se fait en ligne de commande.

    Pour l'instant j'utilise aptana et firedebug sous mozilla. Le debugage est correcte mais l'ide est moyen. L'autocomplétion est très perfectible.

    N'existe il vraiment aucun environnement sérieux pour javascript?

  3. #3
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    l'obfuscation réelle en javascript est difficile, car le code pourra toujours être réinterprété si tu considères que les navigateurs doivent pouvoir le faire, un utilisateur lambda pourra lui aussi exécuter/traduire ton code.

    perso, je connais 2 types :

    - celui-ci (posté par nadox qqes sujets plus bas):
    http://utf-8.jp/public/jjencode.html
    qui sert plus pour le "fun" et rendre le code vachement illisible ! (mais rallonge aussi énormément la taille de tes fichiers).

    - et celui-ci : (algorithme de Dean Edwards)
    http://javascriptcompressor.com/
    que j'aime beaucoup et qui fonctionne très bien même s'il n'est pas parfait. il sert avant tout à minimiser puis compresser ton code et le rend par la même occasion un peu illisible. mais un reverse(en mode lisible) se fait par un simple "chaine.replace()" donc pas top pour la protection. ^^

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 69
    Points : 61
    Points
    61
    Par défaut
    Merci pour ta réponse.

    Je ne suis pas non plus adepte des obfuscator qui rajoute du code pour "polluer" les programmes. En revanche un outil qui remplace les noms de variables par des noms aléatoires rend déjà les sources beaucoup moins compréhensible. Le problème est que cela peut générer pas mal d'erreur.
    un this['var'] au lieu de this.var et cela peut déconner. Il faut trouver le bon produit intelligent.

  5. #5
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par grav Voir le message
    Merci pour ta réponse.

    Je ne suis pas non plus adepte des obfuscator qui rajoute du code pour "polluer" les programmes. En revanche un outil qui remplace les noms de variables par des noms aléatoires rend déjà les sources beaucoup moins compréhensible. Le problème est que cela peut générer pas mal d'erreur.
    un this['var'] au lieu de this.var et cela peut déconner. Il faut trouver le bon produit intelligent.
    l’algorithme de dean edward est vraiment bien foutu ! (le seul truc que je lui reproche, c'est que parfois il remplace trop et donc ne maximise pas la compression.)

    ça remplace chaque "mot"(mots clés, fontions, noms de variables etc...) par un chiffre ou une lettre qui correspond à la position de ce "mot" dans un tableau.

    Pour l’exécution, ça utilise simplement la fonction "replace" pour chaque "mot" du tableau sur le texte à exécuter avant d'effectuer un "eval". (dans les grandes lignes.)

    Je n'ai jamais eu d'erreurs sur cette compression. Le seul endroit où il faut faire attention, c'est à la minimisation si tu as oublié un point virgule qui ne posait pas de problème grâce au saut de ligne que tu as certainement mis après l'instruction... si le saut de ligne est supprimé, le code ne fonctionnera plus.

  6. #6
    Membre confirmé Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Points : 551
    Points
    551
    Par défaut
    Bonjour,

    Sinon je viens de voir que google proposait un truc qui à l'air plutôt pas mal (pas encore testé) qui semble correspondre à la description d'un IDE qui fait aussi la compression. Par contre il ne fait peut-être pas qu'une simple compression...

    A tester !

    http://code.google.com/intl/fr-FR/closure/compiler/

  7. #7
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par nadox Voir le message
    Bonjour,

    Sinon je viens de voir que google proposait un truc qui à l'air plutôt pas mal (pas encore testé) qui semble correspondre à la description d'un IDE qui fait aussi la compression. Par contre il ne fait peut-être pas qu'une simple compression...

    A tester !

    http://code.google.com/intl/fr-FR/closure/compiler/
    c'est juste un minifier je pense mais pour ce que je viens de tester, il semble meilleur que celui de dean edwards. l'idéal serait alors de minifier le code avec google "closure compiler" et ensuite packer avec "javascript compressor" de dean edwards.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 69
    Points : 61
    Points
    61
    Par défaut
    Google closure à l'air assez sympa. C'est ce qu'utilise le projet javascriptMVC pour compresser leurs sources. Ca inspire donc confiance.

    Je ne me suis toujours pas intéressé à l'obfuscation mais merci pour la référence dean edward, je vais regarder.

    Sinon je crois que j'ai enfin trouvé un environnement qui me convient:
    Je développe en javascript pure et utilise la notion de "prototype" pour faire de la POO (avant j'utilisais une bibliothèque pour le faire). Quelques liens intéressant à ce sujet:
    héritage
    porté
    accès

    J'utilise NetBeans (pour php) qui offre une très bonne autocomplétion javascript. En comparaison Aptana est beaucoup plus décevant et le plugin d'éclipse bug sous windows xp.

    Je fais pour l'instant la doc et la compression avec documentJs et stealJs du projet javascriptMVC.

    Cela commence à prendre tournure.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/03/2013, 17h53
  2. Réponses: 2
    Dernier message: 19/12/2011, 18h20
  3. Réponses: 9
    Dernier message: 20/09/2010, 17h37
  4. [COMMANDE] copier tous les fichier .c d'une arborescense dans un dossier
    Par SmithC dans le forum Administration système
    Réponses: 3
    Dernier message: 18/02/2010, 14h49
  5. [RegEx] Problème pour enlever les tags javascript d'une source HTML
    Par Easyweb dans le forum Langage
    Réponses: 4
    Dernier message: 25/02/2006, 02h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo