大口表只运行一次 我一直在使用基础电子邮件框架中的默认GULPFILE(加上一些附加的任务),GULP监视任务工作得很好。

大口表只运行一次 我一直在使用基础电子邮件框架中的默认GULPFILE(加上一些附加的任务),GULP监视任务工作得很好。,gulp,zurb-foundation,watch,Gulp,Zurb Foundation,Watch,当我让一位同事为这个项目做准备时,我们注意到手表只在文件第一次更改时运行——它会构建、重新加载浏览器,然后进行监视,再也不会启动 在尝试调试它时,我通过将每个任务一次添加到一个系列中来构建完整的构建过程,并且它似乎总是在我添加browser.reload时中断 我已验证是否安装了相同版本的gulp、node和browser sync。我还试着让他建立一个项目,上面有指示,但也没有效果 有没有其他人遇到过这个问题,或者知道如何解决它 以下是默认的gulpfile: import gulp

当我让一位同事为这个项目做准备时,我们注意到手表只在文件第一次更改时运行——它会构建、重新加载浏览器,然后进行监视,再也不会启动

在尝试调试它时,我通过将每个任务一次添加到一个系列中来构建完整的构建过程,并且它似乎总是在我添加browser.reload时中断

我已验证是否安装了相同版本的gulp、node和browser sync。我还试着让他建立一个项目,上面有指示,但也没有效果

有没有其他人遇到过这个问题,或者知道如何解决它

以下是默认的gulpfile:

import gulp     from 'gulp';
import plugins  from 'gulp-load-plugins';
import browser  from 'browser-sync';
import rimraf   from 'rimraf';
import panini   from 'panini';
import yargs    from 'yargs';
import lazypipe from 'lazypipe';
import inky     from 'inky';
import fs       from 'fs';
import siphon   from 'siphon-media-query';

const $ = plugins();

// Look for the --production flag
const PRODUCTION = !!(yargs.argv.production);

// Build the "dist" folder by running all of the above tasks
gulp.task('build',
    gulp.series(clean, pages, sass, inline));

// Build emails, run the server, and watch for file changes
gulp.task('default',
    gulp.series('build', server, watch));



// Delete the "dist" folder
// This happens every time a build starts
function clean(done) {
  rimraf('dist', done);
}

// Compile layouts, pages, and partials into flat HTML files
// Then parse using Inky templates
function pages() {
  return gulp.src('src/pages/**/*.html')
      .pipe(panini({
        root: 'src/pages',
        layouts: 'src/layouts',
        partials: 'src/partials/**',
        helpers: 'src/helpers'
      }))
      .pipe(inky())
      .pipe(gulp.dest('dist'));
}

// Reset Panini's cache of layouts and partials
function resetPages(done) {
  panini.refresh();
  done();
}

// Compile Sass into CSS
function sass() {
  return gulp.src('src/assets/scss/app.scss')
      .pipe($.if(!PRODUCTION, $.sourcemaps.init()))
      .pipe($.sass({
        includePaths: ['node_modules/foundation-emails/scss']
      }).on('error', $.sass.logError))
      .pipe($.if(!PRODUCTION, $.sourcemaps.write()))
      .pipe(gulp.dest('dist/css'));
}

// Copy and compress images
function images() {
  return gulp.src('src/assets/img/*')
      .pipe($.imagemin())
      .pipe(gulp.dest('./dist/assets/img'));
}

// Inline CSS and minify HTML
function inline() {
  return gulp.src('dist/**/*.html')
      .pipe($.if(PRODUCTION, inliner('dist/css/app.css')))
      .pipe(gulp.dest('dist'));
}

// Start a server with LiveReload to preview the site in
function server(done) {
  browser.init({
    server: 'dist'
  });
  done();
}

// Watch for file changes
function watch() {
  gulp.watch('src/pages/**/*.html', gulp.series(pages, inline, browser.reload));
  gulp.watch(['src/layouts/**/*', 'src/partials/**/*'], gulp.series(resetPages, pages, inline, browser.reload));
  gulp.watch(['../scss/**/*.scss', 'src/assets/scss/**/*.scss'], gulp.series(sass, pages, inline, browser.reload));
  gulp.watch('src/assets/img/**/*', gulp.series(images, browser.reload));
}

// Inlines CSS into HTML, adds media query CSS into the <style> tag of the email, and compresses the HTML
function inliner(css) {
  var css = fs.readFileSync(css).toString();
  var mqCss = siphon(css);

  var pipe = lazypipe()
      .pipe($.inlineCss, {
        applyStyleTags: false
      })
      .pipe($.injectString.replace, '<!-- <style> -->', `<style>${mqCss}</style>`)
;

  return pipe();
}
从“gulp”导入gulp;
从“一口气加载插件”导入插件;
从“浏览器同步”导入浏览器;
从“rimraf”进口rimraf;
从“帕尼尼”进口帕尼尼;
从“yargs”进口yargs;
从“lazypipe”导入lazypipe;
从“inky”导入inky;
从“fs”导入fs;
从“虹吸媒体查询”导入虹吸;
const$=插件();
//查找--production标志
常数生产=!!(yargs.argv.生产);
//通过运行上述所有任务来构建“dist”文件夹
吞咽任务(“构建”,
吞咽系列(清洁、页面、sass、内联);
//生成电子邮件、运行服务器并监视文件更改
吞咽任务('default',
狼吞虎咽系列(‘构建’、服务器、手表));
//删除“dist”文件夹
//每次构建开始时都会发生这种情况
功能清理(完成){
rimraf(“区”,完成);
}
//将布局、页面和部分编译为平面HTML文件
//然后使用Inky模板进行解析
功能页(){
返回gulp.src('src/pages/***.html')
.管道(帕尼尼)({
根目录:“src/pages”,
布局:“src/layouts”,
分部:“src/partials/**”,
助手:“src/helpers”
}))
.pipe(inky())
.pipe(大口目的地('dist'));
}
//重置Panini的布局和分区缓存
函数重置页面(完成){
panini.refresh();
完成();
}
//将Sass编译为CSS
函数sass(){
return gulp.src('src/assets/scss/app.scss')
.pipe($.if(!PRODUCTION,$.sourcemaps.init()))
.pipe($.sass({
IncludePath:['node_模块/基金会电子邮件/SCS']
}).on('error',$.sass.logError))
.pipe($.if(!PRODUCTION,$.sourcemaps.write()))
.pipe(大口目的地('dist/css'));
}
//复制和压缩图像
函数图像(){
return gulp.src('src/assets/img/*'))
.pipe($.imagemin())
.管道(大口目的地('./dist/assets/img');
}
//内联CSS和缩小HTML
函数内联(){
return gulp.src('dist/***/.html')
.pipe($.if(生产、内联('dist/css/app.css'))
.pipe(大口目的地('dist'));
}
//使用LiveReload启动服务器以在中预览站点
功能服务器(完成){
browser.init({
服务器:'dist'
});
完成();
}
//注意文件更改
函数监视(){
gulp.watch('src/pages/***.html',gulp.series(pages,inline,browser.reload));
gulp.watch(['src/layouts/***','src/partials/***',gulp.series(resetPages,pages,inline,browser.reload));
gulp.watch(['../scss/***.scss',src/assets/scss/***.scss'],gulp.series(sass,pages,inline,browser.reload));
gulp.watch('src/assets/img/***',gulp.series(images,browser.reload));
}
//将CSS内联到HTML中,将媒体查询CSS添加到电子邮件的标记中,并压缩HTML
函数内联(css){
var css=fs.readFileSync(css.toString();
var mqCss=虹吸(css);
var管道=懒散管道()
.pipe($.inlineCss{
applyStyleTags:false
})
.pipe($.injectString.replace,,`${mqCss}`)
;
回流管();
}

在这个问题发布后不久,这似乎已经为电子邮件奠定了基础。请注意添加的
)。在下面每行中的('change'
)上:

之前:

function watch() {
    gulp.watch('src/pages/**/*.html', gulp.series(pages, inline, browser.reload));
    gulp.watch(['src/layouts/**/*', 'src/partials/**/*'], gulp.series(resetPages, pages, inline, browser.reload));
    gulp.watch(['../scss/**/*.scss', 'src/assets/scss/**/*.scss'], gulp.series(sass, pages, inline, browser.reload));
    gulp.watch('src/assets/img/**/*', gulp.series(images, browser.reload));
}
之后:


这一问题在邮件发布后不久就已经确定了。请注意“<代码>的添加”。 之前:

function watch() {
    gulp.watch('src/pages/**/*.html', gulp.series(pages, inline, browser.reload));
    gulp.watch(['src/layouts/**/*', 'src/partials/**/*'], gulp.series(resetPages, pages, inline, browser.reload));
    gulp.watch(['../scss/**/*.scss', 'src/assets/scss/**/*.scss'], gulp.series(sass, pages, inline, browser.reload));
    gulp.watch('src/assets/img/**/*', gulp.series(images, browser.reload));
}
之后: