2014-02-13 65 views
11

我剛剛開始玩gulp,它使用起來非常快速且易於使用,但它似乎有一個嚴重缺陷:當任務需要輸出多種類型時,您會做什麼的文件?例如,gulp-less表示它甚至不支持sourceMapFilename選項。我不希望我的源代碼地圖嵌入到我的CSS文件中。我呃?我應該回到使用Grunt,還是有辦法解決這個問題?Gulp +源地圖(多個輸出文件)

+0

[咕嘟咕嘟-IF](https://github.com/robrich/gulp-if)可能會與此有所幫助。 [示例](https://github.com/wearefractal/gulp-coffee/issues/16#issuecomment-35227635) – mpen

回答

10

這個任務將需要多個文件,做的東西給他們,並將其輸出與源地圖一起。

默認情況下,它將在地圖文件中包含源代碼,因此您不必分發源代碼文件。這可以通過將includeContent選項設置爲false來關閉。請參閱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" 

src目錄:

first.scss 
second.scss 

運行test-multiple任務後result目錄:

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

如果通過'@ import'將部分.scss文件導入到主.scss文件中,這仍然有效嗎?如果瀏覽器可以鏈接回導入的部分文件,我會很喜歡它。 – jaminroe

-1

Gulp支持多個輸出文件。請閱讀文檔。

實施例:

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

這將在一堆JS文件讀取,它們再壓縮並把它們輸出到dist文件夾。

至於一g不足的問題。您可以對相關的ticket發表評論。

+0

我確實查看了文檔。它究竟在說什麼?此外,您的「相關」票證討論*內聯*源地圖,這正是我不想要的。 – mpen

+0

通過文檔輸出多個文件的大多數示例。我已經添加了一個例子。至於票證,請閱讀主題,你會看到爲什麼沒有外部源地圖支持。 –

+0

你的例子看起來像只輸出一個文件到dist文件夾。那多倍? Contra說,這是爲了避免磁盤寫入,但在我指出問題之後,他似乎同意我的觀點。 – mpen

0

docs它表明你如何有多個輸出文件:

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

你在誤讀這個問題。我正在談論什麼時候一個*單個任務需要輸出兩個或多個單獨的文件。我知道我可以根據需要多次調用'.dest';這沒有幫助。這與插件架構有關,而不是基本的用法。 – mpen

+0

陷阱:)有興趣,如果它在實踐中有所作爲? –

+1

源圖在實踐中非常有用。我敢肯定,還有很多其他場景可以讓你從單個任務中輸出兩個或更多不同類型的文件;你不能把它們分成單獨的任務,否則每個任務都必須重新分析輸入。 – mpen

相關問題