Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一饮而尽;当对数据、包含或布局进行更改时,gulp watch不会重新编译站点_Gulp_Gulp Watch_Assemble - Fatal编程技术网

一饮而尽;当对数据、包含或布局进行更改时,gulp watch不会重新编译站点

一饮而尽;当对数据、包含或布局进行更改时,gulp watch不会重新编译站点,gulp,gulp-watch,assemble,Gulp,Gulp Watch,Assemble,我在使用gulp assemble和gulp watch时遇到问题。我想gulp查看整个汇编源目录(数据,包括,布局和页面),并在文件更改时重新编译站点 我能够使页面正常工作,但是gulp在对数据进行更改时不会重新编译站点,包括或布局文件 我在gulp assembly存储库中添加了一个watch任务: var gulp=require('gulp'); var htmlmin=require('gulp-htmlmin'); var extname=require('gulp-extname'

我在使用
gulp assemble
gulp watch
时遇到问题。我想
gulp
查看整个汇编源目录(
数据
包括
布局
页面
),并在文件更改时重新编译站点

我能够使
页面正常工作,但是
gulp
在对
数据进行更改时不会重新编译站点,
包括
布局文件

我在
gulp assembly
存储库中添加了一个
watch
任务:

var gulp=require('gulp');
var htmlmin=require('gulp-htmlmin');
var extname=require('gulp-extname');
var assemble=需要('assemble');
var中间件=require('./示例/中间件');
var gulpAssemble=require('./');
//集合对象上的设置项
数据({site:{title:'Blog'}});
data(['test/fixtures/data/.{json,yml}']);
组装布局(['test/fixture/layouts/*.hbs']);
组装.零件(['test/fixture/includes/*.hbs']);
//加载文件时运行的任意中间件
onLoad(/index\.hbs/,中间件(assemble));
//在“测试/设备”中呈现模板`
吞咽任务('default',函数(){
gulp.src('test/fixture/pages/*.hbs')
.pipe(gulpAssemble(汇编,{layout:'default'}))
.pipe(htmlmin({collapseWhitespace:true}))
.pipe(extname())
.pipe(大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口);
});
// ============================================================
//我的手表任务
// ============================================================
gulp.task('watch',['default',function()){
gulp.watch('test/fixtures/***.{hbs,yml,json}',['default']);
});
如果我运行
gulp watch
并将更改保存到
pages
目录中的任何
.hbs
文件,我会看到
gulp
触发终端输出中的
默认值
,我会看到
\gh\u pages
中的
.html
文件随更改而更新

但是,如果我在
数据
包含
布局
目录中保存对
.hbs
.json
.yml
文件的更改,我会在终端输出中看到
gulp
触发
默认
,但是我看不到
\u gh_页面
.html
文件有任何更改。我必须手动运行
gulpdefault
任务,以便将更改应用于
\u gh_页面
文件


为了获得所需的行为,我需要更改什么?

gulp watch将只在默认任务的函数内部执行代码,因此要重新加载数据和布局等内容,需要将这些代码片段移动到函数内部(就在gulp.src之前)

var gulp = require('gulp');
var htmlmin = require('gulp-htmlmin');
var extname = require('gulp-extname');
var assemble = require('assemble');
var middleware = require('./examples/middleware');
var gulpAssemble = require('./');

// arbitrary middleware that runs when files loaded
assemble.onLoad(/index\.hbs/, middleware(assemble));

// render templates in `test/fixtures`
gulp.task('default', function () {
  // setup items on the assemble object
  assemble.data({site: {title: 'Blog'}});
  assemble.data(['test/fixtures/data/*.{json,yml}']);
  assemble.layouts(['test/fixtures/layouts/*.hbs']);
  assemble.partials(['test/fixtures/includes/*.hbs']);

  gulp.src('test/fixtures/pages/*.hbs')
    .pipe(gulpAssemble(assemble, { layout: 'default' }))
    .pipe(htmlmin({collapseWhitespace: true}))
    .pipe(extname())
    .pipe(gulp.dest('_gh_pages/'));
});

// ============================================================
// my watch task
// ============================================================
gulp.task('watch', ['default'], function() {
  gulp.watch('test/fixtures/**/*.{hbs,yml,json}', ['default']);
});