如何使用 Gulp 向文件中添加一行文本
How can I use Gulp to add a line of text to a file
我一直在尝试弄清楚如何使用 Gulp 向任何类型的文件添加一行文本。
例如添加:
@import 'plugins'
到我的 main.sass 文件。
或者将 CDN 添加到 index.html 文件。
我试过了:
gulp.task('inject-plugins', function(){
gulp.src('src/css/main.sass')
.pipe(inject.after('// Add Imports', '\n@import \'plugins\'\n'));
});
没有快乐。请问我如何才能做到这一点?
取决于你想做什么。
如果您只想在文件的开头或结尾添加文本 gulp-header
and gulp-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'));
});
如果您的文件中有某种 "anchor" 文本,您可以使用 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 + '\n@import \'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'));
});
我一直在尝试弄清楚如何使用 Gulp 向任何类型的文件添加一行文本。
例如添加:
@import 'plugins'
到我的 main.sass 文件。
或者将 CDN 添加到 index.html 文件。
我试过了:
gulp.task('inject-plugins', function(){
gulp.src('src/css/main.sass')
.pipe(inject.after('// Add Imports', '\n@import \'plugins\'\n'));
});
没有快乐。请问我如何才能做到这一点?
取决于你想做什么。
如果您只想在文件的开头或结尾添加文本 gulp-header
and gulp-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'));
});
如果您的文件中有某种 "anchor" 文本,您可以使用 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 + '\n@import \'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'));
});