2016-02-05 102 views
0

我想運行這個sort-sass包使用吞嚥任務。它只給出了通過cli或節點運行它的說明,我想知道是否有人可以給我一些關於如何去做這件事的提示。運行npm包作爲吞噬任務

回答

0

我假設sort-sass不接受文件流作爲輸入,但它想要一個字符串或緩衝區。

這裏是相同的例子如npm module頁:

var fs = require('fs'); 
var sortSass = require('sort-sass'); 

gulp.task('sort-sass', [ /* list task deps here*/ ], function(){ 
    var sassString = fs.readFileSync('some.sass'); 
    var sortedSassString = sortSass(sassString); 
    // do something here (perhaps write it) 
    fs.writeFileSync('output.sass'); 
}); 

下面是他的異步版本相同的任務(相同的模式適用於所有其他npm async modules):

var fs = require('fs'); 
var sortSass = require('sort-sass'); 

gulp.task('sort-sass', [ /* list task deps here*/ ], function(done){ 
    // read the file 
    fs.readFile('some.sass', function(err, sassString){ 
    if(err){ 
     return done(err); 
    } 
    var sortedSassString = sortSass(sassString); 

    // do somthing else with the string... 
    // if you want to write it somewhere 
    fs.writeFile('filename.sass', sortedSassString, function(done); 

    }); 
}); 

另一種解決方案可以用a gulp plugin that deals with buffers來包裝這樣的模塊,以便你可以這樣寫:

var sortSass = require('sort-sass'); 

gulp.task('sort-sass', [/* task deps here */], function(){ 
    return gulp.src('some.sass') 
      .pipe(sortSass()) 
      .pipe(gulp.dest('output.sass'); 
});