2016-07-14 114 views
5

我一直在试图弄清楚如何使用Gulp将文本行添加到任何类型的文件。如何使用Gulp将文本行添加到文件

例如添加:

@import 'plugins' 

我main.sass文件。

或者将CDN添加到index.html文件。

我曾尝试:

gulp.task('inject-plugins', function(){ 
    gulp.src('src/css/main.sass') 
    .pipe(inject.after('// Add Imports', '\[email protected] \'plugins\'\n')); 
}); 

没有快乐。任何想法我可以如何实现这个好吗?

回答

7

取决于你想要做什么。

如果你只是想将文本添加到文件的开头或结尾gulp-headergulp-footer是你的朋友:

var header = require('gulp-header'); 
var footer = require('gulp-footer'); 

gulp.task('add-text-to-beginning', function() { 
    return gulp.src('src/css/main.sass') 
    .pipe(header('@import \'plugins\'\n')) 
    .pipe(gulp.dest('dist')); 
}); 

gulp.task('add-text-to-end', function() { 
    return gulp.src('src/css/main.sass') 
    .pipe(footer('@import \'plugins\'')) 
    .pipe(gulp.dest('dist')); 
}); 

如果你有某种在你的文件“锚”的文字,你可以使用gulp-replace

var replace = require('gulp-replace'); 

gulp.task('replace-text', function() { 
    var anchor = '// Add Imports'; 
    return gulp.src('src/css/main.sass') 
    .pipe(replace(anchor, anchor + '\[email protected] \'plugins\'\n')) 
    .pipe(gulp.dest('dist')); 
}); 

最后还有乙烯基文件操作的瑞士军刀:map-stream。这使您可以直接访问文件内容,并允许您执行任何可以用JavaScript想到的字符串操作:

var map = require('map-stream'); 

gulp.task('change-text', function() { 
    return gulp.src('src/css/main.sass') 
    .pipe(map(function(file, cb) { 
     var fileContents = file.contents.toString(); 
     // --- do any string manipulation here --- 
     fileContents = fileContents.replace(/foo/, 'bar'); 
     fileContents = 'First line\n' + fileContents; 
     // --------------------------------------- 
     file.contents = new Buffer(fileContents); 
     cb(null, file); 
    })) 
    .pipe(gulp.dest('dist')); 
}); 
+0

不要忘记添加这些库! 如果您使用npm:将它们添加到package.json文件中的“devDependencies”:{..},然后运行“npm install” –