2017-04-21 6 views
0

Ich bin die Schaffung einer Transformation, dass alle Instanzen ersetzen:Wie wird die jscodeshift-Transformation für alle Dateien ausgeführt?

templateUrl: 'some/url/to/some.html' 

mit

template: require('some/url/to/some.html') 

Ich tue dies, weil ich die Art und Weise bin zu ändern, die unser AngularJS Code in ihren Vorlagen bringt. Ich werde sie alle den Webpack-String-Loader benutzen lassen.

Ich habe die Transformation zur Arbeit bekommen. Aber jetzt habe ich keine Ahnung, wie ich es gegen alle Dateien in meinem Projekt ausführen soll. Ich kann in der Dokumentation nicht sehen, wie das gegen alle .js Dateien in meinem Projekt ausgeführt wird. Zu meiner Transformation ausführen, tippe ich zur Zeit:

jscodeshift ./folder/myComponent.js -t ./tools/codemodes/template.js -d -p 

Dieser Befehl wird meine Transformation gegen die myComponent.js Datei ausführen, aber ich will es in meinem Projekt läuft gegen alle der .js Dateien werden. Was muss ich mit meinem aktuellen Befehl ändern, damit alle .js Dateien ausgewählt werden und die Transformation für alle ausgeführt wird?

Antwort

1

Wenn Sie eine Transformation für alle Dateien in einem Verzeichnis ausführen möchten, geben Sie nur den Verzeichnispfad anstelle eines Dateipfads ein. Führen Sie im obigen Beispiel die folgenden Schritte aus:

jscodeshift ./folder -t ./tools/codemod/templates.js -d -p 

Dadurch wird die Transformation für alle verschachtelten js-Dateien ausgeführt.

1

Die Antwort von Frosty wird auf alle Dateien im Verzeichnis ausgeführt, nicht nur auf JS-Dateien. Wenn Sie nur wollen, die auf allen verschachtelten JS-Dateien umwandeln ausführen, verwenden Sie die ** glob Syntax:

jscodeshift ./path/to/folder/**/*.js -t ./tools/codemod/templates.js -d -p 

Beachten Sie, dass bestimmte Schalen nicht erkennen ** und Sie werden es zunächst manuell drehen müssen, um auf mit:

$ shopt -s globstar 
Verwandte Themen