8 ответов:
Если вы хотите сделать это глотком, вы можете создать поток "поддельных" виниловых файлов и позвонить
pipeв обычное время. Вот функция для создания потока. "поток" - это основной модуль, поэтому вам не нужно ничего устанавливать:function string_src(filename, string) { var src = require('stream').Readable({ objectMode: true }) src._read = function () { this.push(new gutil.File({ cwd: "", base: "", path: filename, contents: new Buffer(string) })) this.push(null) } return src }вы можете использовать его как это:
gulp.task('version', function () { var pkg = require('package.json') return string_src("version", pkg.version) .pipe(gulp.dest('build/')) })
это в значительной степени один лайнер в узле:
require('fs').writeFileSync('dist/version.txt', '1.2.3');или из пакета.json:
var pkg = require('./package.json'); var fs = require('fs'); fs.writeFileSync('dist/version.txt', 'Version: ' + pkg.version);
я использую его, чтобы указать дату сборки в легкодоступном файле, поэтому я использую этот код перед обычным
return gulp.src(...)наbuildзадачи:require('fs').writeFileSync('dist/build-date.txt', new Date());
Это также можно сделать с помощью винил-источник-поток. Смотрите документ в хранилище глотка.
var gulp = require('gulp'), source = require('vinyl-source-stream'); gulp.task('some-task', function() { var stream = source('file.txt'); stream.end('some data'); stream.pipe(gulp.dest('output')); });
вы также можете использовать gulp-file:
var gulp = require('gulp'); var file = require('gulp-file'); gulp.task('version', function () { var pkg = require('package.json') return gulp.src('src/**') .pipe(file('version', pkg.version)) .pipe(gulp.dest('build/')) });или без использования
gulp.src():gulp.task('version', function () { var pkg = require('package.json') return file('version', pkg.version, {src: true}) .pipe(gulp.dest('build/')) });
согласно сопровождающему Gulp, предпочтительным способом записи строки в файл является использование
fs.writeFileс обратным вызовом задачи.var fs = require('fs'); var gulp = require('gulp'); gulp.task('taskname', function(cb){ fs.writeFile('filename.txt', 'contents', cb); });Источник:https://github.com/gulpjs/gulp/issues/332#issuecomment-36970935
на залпом-заголовок пакет может использоваться для префикса файлов с заголовочными баннерами.
например. Это введет баннер в заголовок ваших файлов javascript.
var header = require('gulp-header'); var pkg = require('./package.json'); var banner = ['/**', ' * <%= pkg.name %> - <%= pkg.description %>', ' * @version v<%= pkg.version %>', ' * @link <%= pkg.homepage %>', ' * @license <%= pkg.license %>', ' */', ''].join('\n'); gulp.src('./foo/*.js') .pipe(header(banner, { pkg: pkg } )) .pipe(gulp.dest('./dist/')Gulp-это потоковая система сборки, использующая трубы.
Если вы просто хотите записать новый файл с произвольной строкой, вы можете использовать встроенный узел fs "объект".
Это также может быть достигнуто с помощью gulp-tap
Это может быть особенно полезно, если вы выделили несколько файлов, которые требуют этот заголовок. Вот соответствующий код (также из документации gulp-tap)
var gulp = require('gulp'), tap = require('gulp-tap'); gulp.src("src/**") .pipe(tap(function(file){ file.contents = Buffer.concat([ new Buffer('Some Version Header', 'utf8'), file.contents ]); })) .pipe(gulp.dest('dist');
С помощью строка-поток и винил-источник-поток модули:
var str = require('string-to-stream'); var source = require('vinyl-source-stream'); var gulp = require('gulp'); str('1.4.27').pipe(source('version.txt')).pipe(gulp.dest('dist'));
Comments