Команда смотреть и связывать используя brfs без watchify
Я пытаюсь повторить поведение watchify
с brfs
трансформировать, но мне нужно использовать brfs
напрямую, потому что я хочу избежать дополнительного кода, добавляемого в скрипт при использовании require
с browserify/watchify. С помощью brfs
напрямую просто заменяет require(theFile)
с его содержимым и ничего больше.
Использование этой команды для связывания следующего кода дает желаемый результат:
brfs main.js > bundle.js
// main.js
var fs = require('fs');
var templates = {
'header': fs.readFileSync('app/templates/header.html', 'utf8'),
'nav-menu': fs.readFileSync('app/templates/nav-menu.html', 'utf8')
};
Как мне настроить что-то, чтобы следить за изменениями и иметь brfs
связать скрипт снова, когда что-то изменится?
3 ответа
Я рассматриваю этот подход, используя brfs
Программный API, чтобы быть наиболее правильным. Единственное отличие от примера, который мы обсуждали в чате js, заключается в том, что вам нужно использовать fs.createReadStream
передать файл в brfs
вместо передачи имени файла напрямую brfs
как мы делали.
var gulp = require('gulp');
var brfs = require('brfs');
var fs = require('fs');
// task without watch
gulp.task('bundle-templates', function() {
fs.createReadStream('main.js')
.pipe(brfs())
.pipe(fs.createWriteStream('bundle.js'))
;
});
// this runs the `bundle-templates` task before starting the watch (initial bundle)
gulp.task('watch-templates', ['bundle-templates'], function() {
// now watch the templates and the js file and rebundle on change
gulp.watch([
'templates/*.html',
'main.js'
], ['bundle-templates']);
});
Теперь запустите эту команду, и все готово:
gulp watch-templates
gulp
здесь не нужно Вы можете воссоздать это, используя любой исполнитель задач или выполнив скрипт узла напрямую. Вы можете использовать gaze непосредственно для просмотра файлов, который является тем же наблюдателем, который использует gulp для gulp.watch
,
Вы можете попробовать глоток,
тогда глотком будет
gulp.task('default', shell.task(['brfs main.js > bundle.js']);
Не уверен, что это как-то подойдет для вашей ситуации... но вы также можете использовать этот плагин, который будет обнаруживать новые файлы и передавать их:
https://www.npmjs.com/package/gulp-newy/
Пример использования намного меньшего количества файлов и сравнения с одним составным файлом CSS:
function lessVersusOneFile(projectDir, srcFile, absSrcFile) {
//newy gives projectDir arg wich is '/home/one/github/foo/`
var compareFileAgainst = "compiled/css/application.css";
var destination = path.join(projectDir, compareFileAgainst);
// distination returned will be /home/one/github/foo/compiled/css/application.css
return destination;
}
// all *.less files will be compared against
// /home/one/github/foo/compiled/css/application.css
gulp.task('compileLessToCss', function () {
return gulp.src('app/css/**/*.less')
.pipe(newy(lessVersusOneFile))
.pipe(less())
.pipe(gulp.dest('compiled/css'));
});