Treten Sie mehrere Coffeescript -Dateien in eine Datei zusammen? (Mehrere Unterverzeichnisse)

StackOverflow https://stackoverflow.com/questions/4575260

  •  14-10-2019
  •  | 
  •  

Frage

Ich habe eine Reihe von .coffee -Dateien, die ich mir einer Datei anschließen muss.

Ich habe Ordner wie eine Rails -App eingerichtet:

/src/controller/log_controller.coffee
/src/model/log.coffee
/src/views/logs/new.coffee

Coffeescript hat einen Befehl, mit dem Sie mehrere Coffeescripts in eine Datei anschließen können, aber es scheint nur mit einem Verzeichnis zu funktionieren. Zum Beispiel funktioniert dies gut:

coffee --output app/controllers.js --join --compile src/controllers/*.coffee

Aber ich muss in der Lage sein, eine Reihe von Unterverzeichnissen wie diesen nicht arbeitenden Befehl einzubeziehen:

coffee --output app/all.js --join --compile src/*/*.coffee

Gibt es eine Möglichkeit, dies zu tun? Gibt es eine Unixy -Möglichkeit, eine Liste aller Dateien in den Unterverzeichnissen zu übergeben?

Ich benutze Terminal in OSX.

Sie alle müssen in einer Datei verbunden werden, da ansonsten jede separate Datei zusammengestellt und mit diesem verpackt wird:

(function() { }).call(this);

Was den Umfang einiger Funktionsaufrufe bricht.

War es hilfreich?

Lösung

Sie können ein Shell -Skript schreiben oder aufarbeiten, um sie zuerst zu kombinieren und dann zu kompilieren. Etwas wie:

find . -type f -name '*.coffee' -print0 | xargs -0 cat > output.coffee

Dann kompilieren output.coffee

Passen Sie die Pfade an Ihre Bedürfnisse an. Stellen Sie auch sicher, dass die output.coffee Die Datei befindet sich nicht auf demselben Weg, mit dem Sie suchen find Oder Sie werden in eine unendliche Schleife geraten.

http://man.cx/find | http://www.rubyrake.org/tutorial/index.html

Darüber hinaus interessieren Sie sich möglicherweise für diese anderen Beiträge zum Stackoverflow zur Suche nach Verzeichnissen:

Andere Tipps

Von dem Coffeescript -Dokumentation:

-j, -join [Datei]: Bevor er kompiliert, verkettet, alle Skripte in der Reihenfolge zusammengefasst, die sie übergeben wurden, und schreiben Sie sie in die angegebene Datei. Nützlich für den Bau großer Projekte.

Sie können also Ihr Ziel in der Befehlszeile erreichen (ich benutze Bash) wie folgt:

coffee -cj path/to/compiled/file.js file1 file2 file3 file4

wobei Datei1 - Filen die Pfade zu den Coffeescript -Dateien sind, die Sie zusammenstellen möchten.

Ich habe gerade eine Alpha -Veröffentlichung von CoffeeToaster veröffentlicht. Ich denke, es kann Ihnen helfen.http://github.com/serpentem/coffee-taster

Die einfache Möglichkeit, das Coffee -Befehlszeilenwerkzeug zu verwenden.

Kaffee -Ausgabe public -join -Kompilier -App

App ist mein Arbeitsverzeichnis, das mehrere Unterverzeichnisse hält, und die Datei ~ output.js wird platziert. Einfach zu automatisieren, wenn Sie diesen Prozess beim Schreiben von App in NodeJs schreiben

Das hat mir geholfen (-o Ausgabe Verzeichnis, -j Machen Sie mit Project.js, -cw Kompilieren und Beobachten Sie das CoffeeScript -Verzeichnis in voller Tiefe):

coffee -o web/js -j project.js -cw coffeescript

Verwenden Kuchen Um sie alle in einer (oder mehr) daraus resultierenden .js -Datei (en) zu kompilieren. CakeFile wird als Konfiguration verwendet, die steuert, in denen Ihre Kaffeekripte zusammengestellt werden - ziemlich praktisch mit größeren Projekten.

Kuchen ist recht einfach zu installieren und einrichten und ruft Kuchen von VIM auf, während Sie Ihr Projekt bearbeiten, ist dann einfach einfach

:!cake build

Und Sie können Ihren Browser aktualisieren und Ergebnisse sehen.

Da ich auch damit beschäftigt bin, die beste Möglichkeit zu lernen, die Dateien zu strukturieren und Coffeescript in Kombination mit Backbone und Kuchen zu verwenden, habe ich eine geschaffen kleines Projekt auf GitHub Um es als Referenz für mich zu behalten, hilft es Ihnen vielleicht auch bei Kuchen und einigen grundlegenden Dingen. Alle kompilierten Dateien sind in www Ordner, damit Sie sie in Ihrem Browser öffnen können, und alle Quelldateien (mit Ausnahme der Kuchenkonfiguration) befinden sich in src Mappe. In diesem Beispiel werden alle .coffee -Dateien zusammengestellt und kombiniert in eines Ausgabe .js Datei, die dann in HTML enthalten ist.

Alternativ können Sie die verwenden --bare Fahnen Sie an JavaScript zusammen und wickeln Sie dann die JS bei Bedarf möglicherweise ein. Dies würde jedoch wahrscheinlich Probleme verursachen; Zum Beispiel, wenn Sie eine Datei mit dem Code haben

i = 0
foo = -> i++
...
foo()

Dann gibt es nur einen var i Erklärung im resultierenden JavaScript und i wird inkrementiert. Aber wenn du das bewegt hast foo Funktionserklärung zu einer anderen Coffeescript -Datei, dann deren i würde in der leben foo Zielfernrohr und der Außenbereich i würde nicht betroffen sein.

Die Verkettung des Coffeescripts ist also eine klügere Lösung, aber dort besteht immer noch Potenzial für Verwirrung. Die Reihenfolge, in der Sie Ihren Code verkettet, wird mit ziemlicher Sicherheit eine Rolle spielen. Ich empfehle stattdessen dringend, Ihren Code zu modularisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top