2016-02-05 99 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'); 
});