2016-09-01 1 views
2

Back-End-Entwickler fragt nach Front-End.Wie deklariere ich Profilvariablen und integriere sie in JS-Dateien? Wie kann ich eine Funktion für einen Build ausschließen/einbeziehen?

Ich habe zwei Funktionen, die völlig unterschiedlich sind. Einer von ihnen ist für eine Produktion, ein anderer - für eine lokale Entwicklung. Zum Beispiel, wenn ich in einem Entwicklungsmodus bin, ist die Situation wie folgt dar:

/* 
function f() { 
    // production logic 
} 
*/ 
function f() { 
    // development logic 
} 

Wie Sie sehen können, habe ich immer eine der Funktionen kommentieren. Bevor ich einen Build für eine Produktion mache, sollte ich Kommentare für die Produktionsfunktion entfernen und sie zur Entwicklung hinzufügen.

Ich möchte wirklich nicht die if Anweisung machen, wo ich eine Variable auschecken werde (wenn der Wert gleich "DEV" dann ... else ...). Die Funktionen sind zu groß und enthalten viele nicht zusammenhängende Teile.

Ich googelte viel, aber nichts hat gefunden. Ist sowas? So etwas wie Profile mit ihren Variablen, die in JS-Dateien integriert werden können? Oder eine Funktion mit einem Kommentar markieren, der eine Funktion von/in einem Build ausschließt/einschließt, wie das possible with HTML ist.

Das Projekt wird von Grunt gesammelt.

+0

JS ist nicht „gebaut“, so gibt es keine Zeit Fahnen kompiliert. Wenn Sie Grunt verwenden, wäre es wahrscheinlich nicht schwer, ein Grunt-Skript zu erstellen, das das Äquivalent tut. Übrigens, der einzige Unterschied zwischen dev und prod besteht normalerweise in den Konsolenprotokollen. Ich bin neugierig, warum du ganze Funktionen hast, die anders sind. – dlsso

+0

@ dlsso, Dieses Modul ist nur ein kleiner Teil des großen Projekts, die Produktionsversion der Funktion arbeitet Daten, die in der Laufzeit erscheinen, für die Entwicklungsversion muss ich diese Daten künstlich erzeugen, um ein vollständiges Bild zu sehen. – Andrew

+0

@ dlsso, Ich wäre Ihnen dankbar, wenn Sie vorschlagen, wie ich diesem Ziel folgen sollte. Kann Grunt JS-Dateien während ihrer Zusammenführung modifizieren? – Andrew

Antwort

1

Wie @dlsso in den Kommentaren erwähnt, gibt es eine wirksame npm Plugin grunt-dev-prod-switch zu Quelldateien ändern je nach Modus in Sie sind.

Zum Umschalten zwischen zuvor definierten Blockkommentarblöcke in Projektdateien um die Umwelt von der Entwicklung zur Produktion und zurück zu verändern.

Nach der Konfiguration erlaubt es mir folgendes zu tun: einschalten

/* env:prod */ 
function f() { ... } 
/* env:prod:end */ 

/* env:dev */ 
function f() { ... } 
/* env:dev:end */ 

Das Plugin legt fest, welchen Modus/Umgebung (dev_prod_switch.options.environment), analysiert die Kommentare der Dateien (in den dev_prod_switch.all.files definiert Eigenschaft) und verdirbt (Kommentar) alle Blöcke beziehen sich nicht auf den aktuellen Modus.

Zum Beispiel wird der Produktionsmodus eingeschaltet:

/* env:dev *#/ 
function f() { ... } 
/* env:dev:end */ 
Verwandte Themen