2016-12-02 5 views
1

Wie kann ich einen Funktionsaufruf mit browserify vorverarbeiten?Vorverarbeitung mit browserify?

In einer großen js-Datei, an einem Punkt, ich brauche ein JSON-Objekt in eine Variable zu übergeben, aber das JSON-Objekt nur durch einen Funktionsaufruf erstellt werden können:

var myvar = Ractive.parse('mytemplate.html'); 

Wenn ich diese Funktion aufrufen schreiben Wie so, ist diese Codezeile in der Datei bundle.js so wie sie ist. Ich möchte einfach so etwas wie:

var myvar = THIS_WILL_RUN_WHILE_BROWSERIFYING(Ractive.parse('mytemplate.html')); 

so in bundle.js Ich erwarte, dass so etwas wie zu sehen:

var myvar = [{myobj:4},{x:1,y:2}]; 

Wie kann ich dies mit browserify geschehen (mit Gulp)?

+0

'var myvar = [myobj: {x: 1, y: 2}];' Sie meinen, Sie wollen, dass es ungültiges Javascript erstellt. :) – Keith

+1

Ich benutze nicht browserfy, aber mit Blick auf das Dokument -> https://github.com/substack/browserify-handbook#transforms Sie möchten vielleicht Ihre eigene Transformation erstellen, .. Es gibt ein Beispiel für das Ersetzen von ' $ CWD' mit 'process.cwd()' sieht aus wie etwas, das man ausprobieren könnte. – Keith

+0

Nicht sicher, was Sie tun möchten, und es ist lange her, seit ich Ractive verwendet habe, aber haben Sie sich https://github.com/marcello3d/node-ractify angeschaut? – cartant

Antwort

3

Mit Browserify können Sie benutzerdefinierte Transformationen erstellen. Ein gutes Beispiel für die Erstellung von Transformationen finden Sie unter folgendem Link.

https://github.com/substack/browserify-handbook#transforms

am Beispiel eines mit process.cwd() der $CWD ersetzen tun, erschien für das OP ein guter Ausgangspunkt zu sein, das schaffen erforderlich verwandeln.

Im Falle möglicher zukünftiger toter Verbindungen, hier ist das Beispiel.

var through = require('through2'); 

module.exports = function (file) { 
    return through(function (buf, enc, next) { 
     this.push(buf.toString('utf8').replace(/\$CWD/g, process.cwd())); 
     next(); 
    }); 
};