Rejoignez plusieurs fichiers Coffeescript dans un seul fichier? (Plusieurs sous-répertoires)
J'ai un tas de .le café des fichiers que j'ai besoin de joindre en un seul fichier.
J'ai des dossiers mis en place comme une application rails:
/src/controller/log_controller.coffee
/src/model/log.coffee
/src/views/logs/new.coffee
Coffeescript a une commande qui permet de joindre plusieurs coffeescripts en un seul fichier, mais il semble que de travailler avec un répertoire. Par exemple, cela fonctionne très bien:
coffee --output app/controllers.js --join --compile src/controllers/*.coffee
Mais j'ai besoin d'être en mesure d'inclure un tas de sous-répertoires, un peu comme ce non-travail de commande:
coffee --output app/all.js --join --compile src/*/*.coffee
Est-il un moyen de faire cela? Est-il un UNIXy façon de passer d'une liste de tous les fichiers dans les sous-répertoires?
Je suis en utilisant le terminal dans OSX.
Ils ont tous à être rejoint dans un fichier parce que sinon, chaque fichier est compilé & emballé:
(function() { }).call(this);
Qui rompt le champ d'application de certains appels de fonction.
source d'informationauteur dMix
Vous devez vous connecter pour publier un commentaire.
Vous pouvez écrire un script shell ou tâche Rake pour les combiner ensemble d'abord, puis de compiler. Quelque chose comme:
find . -type f -name '*.coffee' -print0 | xargs -0 cat > output.coffee
Ensuite compiler
output.coffee
Ajuster les chemins d'accès à vos besoins. Assurez-vous également que le
output.coffee
fichier n'est pas dans le même chemin d'accès que vous êtes à la recherche avecfind
ou vous allez entrer dans une boucle infinie.http://man.cx/find |
http://www.rubyrake.org/tutorial/index.html
En outre, vous pouvez être intéressé par ces autres postes sur Stackoverflow concernant la recherche dans les répertoires:
De la CoffeeScript documentation:
Ainsi, vous pouvez atteindre votre objectif à la ligne de commande (j'utilise bash) comme ceci:
où fichier1 - fileN sont les chemins vers les fichiers coffeescript vous voulez compiler.
Je viens de libérer une version alpha de CoffeeToaster, je pense que cela peut vous aider.
http://github.com/serpentem/coffee-toaster
Le plus facile à utiliser du café outil de ligne de commande.
café --sortie publique --joindre --compile application
application est mon répertoire de travail la tenue de multiples sous-répertoires et le public est là ~output.js fichier sera placé. Facile à automatiser ce processus, si l'écriture application dans nodejs
Cela m'a aidé (
-o
répertoire de sortie,-j
se joindre à project.js,-cw
de compiler et de regarder coffeescript répertoire en profondeur):Utilisation gâteau à compiler le tout dans un (ou plusieurs) qui en résulte .fichier js(s). Cakefile est utilisé comme configuration qui contrôle l'ordre dans lequel votre café scripts sont compilés très pratique avec de grands projets.
Gâteau est très facile à installer et à configurer, en invoquant gâteau de vim pendant que vous modifiez votre projet est alors simplement
et vous pouvez actualiser votre navigateur et de voir les résultats.
Que je suis aussi occupé à apprendre la meilleure façon de structurer les fichiers et utiliser coffeescript en combinaison avec de l'épine dorsale et le gâteau, j'ai créé un petit projet sur github de le garder comme une référence pour moi, peut-être que ça vous aidera aussi autour du gâteau et certaines choses de base. Tous les fichiers compilés sont en www dossier de sorte que vous pouvez ouvrir dans votre navigateur et tous les fichiers source (sauf pour le gâteau de configuration) sont en src dossier. Dans cet exemple, tous les .le café, les fichiers sont compilés et combinés dans un de sortie .fichier js qui est ensuite inclus dans le html.
Sinon, vous pouvez utiliser le
--bare
drapeau, compiler en JavaScript, et puis peut-être à envelopper le JS si nécessaire. Mais ce serait susceptibles de créer des problèmes; par exemple, si vous avez un fichier avec le codealors il n'y a qu'un
var i
déclaration dans le JavaScript, eti
sera incrémenté. Mais si vous avez déplacé lefoo
déclaration de fonction à l'autre CoffeeScript fichier, puis sai
vivraient dans l'foo
la portée et l'extérieuri
serait pas affectée.Donc la concaténation de la CoffeeScript est une sage solution, mais il y a encore un potentiel de confusion; l'ordre dans lequel vous concaténer votre code est presque certainement aller à la matière. Je recommande fortement la modularisation de votre code à la place.