2016-07-14 75 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」 –

相關問題