2014-02-13 8 views
11

Ich habe gerade angefangen mit gulp zu spielen, und es ist sehr schnell und einfach zu bedienen, aber es scheint einen kritischen Fehler zu haben: Was machst du, wenn eine Aufgabe mehr als einen Typ ausgeben muss der Datei?Gulp + Quellkarten (mehrere Ausgabedateien)

Zum Beispiel, gulp-less sagt, es unterstützt nicht einmal die sourceMapFilename Option. Ich möchte nicht, dass meine Quellkarte in meine CSS-Datei eingebettet wird. Bin ich eingesperrt? Soll ich einfach wieder mit Grunt arbeiten, oder gibt es einen Weg damit umzugehen?

+0

[Gulp-if] (https://github.com/robrich/gulp-if) könnte dabei helfen. [Beispiel] (https://github.com/wearefractal/gulp-coffee/issues/16#issuecomment-35227635) – mpen

Antwort

10

Diese Aufgabe mehrere Dateien nehmen, tun Sachen zu ihnen und geben sie zusammen mit Quellen Karten.

Es enthält standardmäßig den Quellcode in den Zuordnungsdateien, so dass Sie die Quellcodedateien auch nicht verteilen müssen. Dies kann durch Setzen der Option includeContent auf false deaktiviert werden. Weitere Quellkartenoptionen finden Sie unter gulp-sourcemaps NPM page.

gulpfile.js:

var gulp = require("gulp"); 
var plugins = require("gulp-load-plugins")(); 

gulp.task("test-multiple", function() { 
    return gulp.src("src/*.scss") 
      .pipe(plugins.sourcemaps.init()) 
      .pipe(plugins.sass()) 
      .pipe(plugins.autoprefixer()) 
      .pipe(plugins.sourcemaps.write("./")) 
      .pipe(gulp.dest("result")); 
}); 

package.json

"gulp": "~3.8.6", 
"gulp-load-plugins": "~0.5.3", 
"gulp-sass": "~0.7.2", 
"gulp-autoprefixer": "~0.0.8", 
"gulp-sourcemaps": "~1.1.0" 

Das src Verzeichnis:

first.scss 
second.scss 

Das result Verzeichnis nach der test-multiple Aufgabe ausgeführt wird:

first.css 
first.css.map // includes first.scss 
second.css 
second.css.map // includes second.scss 
+0

Funktioniert das noch, wenn teilweise .scss-Dateien über '@ import' in eine .scss-Hauptdatei importiert werden? Ich würde es lieben, wenn der Browser zurück zu jenen Teildateien verbinden könnte, die importiert wurden. – jaminroe

-1

Gulp unterstützt mehrere Ausgabedateien in Ordnung. Bitte lesen Sie die Dokumentation.

Beispiel:

gulp.task('scripts', function() { 
    return gulp.src('app/*js') 
    .pipe(uglify()) 
    .pipe(gulp.dest('dist')); 
}); 

Dies in einem Bündel von JS-Dateien lesen, minify sie und gibt sie an die dist-Ordner.

Wie für den Schluck weniger Problem. Sie können die relevanten ticket kommentieren.

+0

Ich habe die Dokumente durchgesehen. Wo genau sagt es das? Außerdem diskutiert Ihr "relevantes" Ticket * inline * Quellkarten, was genau das ist, was ich nicht möchte. – mpen

+0

Die meisten Beispiele in der Dokumentation geben mehrere Dateien aus. Ich habe ein Beispiel hinzugefügt. Wie für das Ticket, lesen Sie bitte den Thread und Sie werden sehen, warum es keine externe Source Map-Unterstützung gibt. –

+0

Ihr Beispiel sieht so aus, als ob es nur eine Datei in den Ordner dist ausgibt. Wie ist das multiple? In dem Thread sagt Contra, dass man Plattenschreiben vermeiden soll, aber nachdem ich auf das Problem hingewiesen habe, scheint er mir zuzustimmen. – mpen

0

Im docs es zeigt Ihnen, wie mehrere Ausgabedateien haben:

gulp.src('./client/templates/*.jade') 
    .pipe(jade()) 
    .pipe(gulp.dest('./build/templates')) 
    .pipe(minify())` 
    .pipe(gulp.dest('./build/minified_templates')); 
+1

Sie lesen die Frage falsch. Ich spreche darüber, wenn eine * einzelne Aufgabe * zwei oder mehrere separate Dateien ausgeben soll. Ich weiß, ich kann '.dest' so oft ich will nennen; das hilft nicht. Dies hat mit der Plugin-Architektur zu tun, nicht mit der grundlegenden Verwendung. – mpen

+0

Gotcha :) Interessiert, wenn es in der Praxis einen Unterschied macht? –

+1

Quellkarten sind in der Praxis sehr nützlich. Ich bin mir sicher, dass es viele andere Szenarien gibt, in denen Sie zwei oder mehr Dateien unterschiedlichen Typs aus einer einzigen Aufgabe ausgeben möchten. Sie können sie nicht in separate Aufgaben aufteilen, sonst muss jede Aufgabe die Eingabe analysieren. – mpen