在全局匹配中编辑文件时,以下Gulpjs任务可以正常工作:
// watch task.
gulp.task('watch', ['build'], function () {
gulp.watch(src + '/js/**/*.js', ['scripts']);
gulp.watch(src + '/img//**/*.{jpg,jpeg,png,gif}', ['copy:images']);
gulp.watch(src + '/less/*.less', ['styles']);
gulp.watch(src + '/templates/**/*.{swig,json}', ['html']);
});
// build task.
gulp.task('build', ['clean'], function() {
return gulp.start('copy', 'scripts', 'less', 'htmlmin');
});
但是,对于新文件或已删除文件,它不起作用(不会触发)。有什么我想念的吗?
编辑 :即使使用grunt-watch插件,它似乎也不起作用:
gulp.task('scripts', function() {
return streamqueue(
{ objectMode: true },
gulp.src([
vendor + '/jquery/dist/jquery.min.js',
vendor + '/bootstrap/dist/js/bootstrap.min.js'
]),
gulp.src([
src + '/js/**/*.js'
]).pipe(plugins.uglify())
)
.pipe(plugins.concat(pkg.name + '.min.js'))
.pipe(gulp.dest(dest + '/js/'));
});
gulp.task('watch', ['build'], function () {
plugins.watch({glob: src + '/js/**/*.js'}, function () {
gulp.start('scripts');
});
});
编辑 :解决了,就是这个问题。以./
(的值为src
)开头的电子邮件似乎无法在ATM上正常工作。
编辑: 显然gulp.watch
现在可以处理新文件或删除的文件。询问问题时没有。
我剩下的答案仍然gulp- watch
是:通常是一个更好的解决方案,因为它使您仅可以对已修改的文件执行特定的操作,而gulp.watch
仅允许您运行完整的任务。对于合理大小的项目,这将很快变得太慢而无法使用。
您什么都不会错过。gulp.watch
不适用于新文件或删除的文件。这是专为简单项目设计的简单解决方案。
要查看可以查找新文件的文件,请使用功能更强大的gulp-watch
plugin。用法如下所示:
var watch = require('gulp-watch');
// in a task
watch({glob: <<glob or array of globs>> })
.pipe( << add per-file tasks here>> );
// if you'd rather rerun the whole task, you can do this:
watch({glob: <<glob or array of globs>>}, function() {
gulp.start( <<task name>> );
});
就个人而言,我建议第一种选择。这样可以加快每个文件的处理速度。只要您不连接任何文件,它在使用livereload进行开发的过程中就可以很好地工作。
您可以使用我的lazypipe
库,也可以仅使用函数来包装流,stream- combiner
如下所示:
var combine = require('stream-combiner');
function scriptsPipeline() {
return combine(coffeeescript(), uglify(), gulp.dest('/path/to/dest'));
}
watch({glob: 'src/scripts/**/*.js' })
.pipe(scriptsPipeline());
更新 2014年10月15日
如下面的@pkyeck所指出的,显然1.0版对gulp-watch
格式进行了稍微的更改,因此上述示例现在应为:
var watch = require('gulp-watch');
// in a task
watch(<<glob or array of globs>>)
.pipe( << add per-file tasks here>> );
// if you'd rather rerun the whole task, you can do this:
watch(<<glob or array of globs>>, function() {
gulp.start( <<task name>> );
});
和
var combine = require('stream-combiner');
functhtml" target="_blank">ion scriptsPipeline() {
return combine(coffeeescript(), uglify(), gulp.dest('/path/to/dest'));
}
watch('src/scripts/**/*.js')
.pipe(scriptsPipeline());
加载项目时出错 无法加载模块FirstWebApp 当我查看详细信息时,它说它找不到我的第一个webapp.iml文件,因此无法加载我的项目。
我偶然发现了一些可以在Firefox中使用但不能在Chrome中使用的代码。 似乎正在发生的是,有一个文件上传文本字段的大小在CSS中。右边还有一个上传按钮,用户可以点击打开一个对话框来选择文件。textfield的长度是60,我想它是用来覆盖“上传”按钮的,而不是调整字段的大小。我在Firebug中减少了60到50,它停止了工作。 如何从上载按钮调用文件上载对话框?我想我需要向文本字段发送某种类
问题内容: 我正在使用Log4j作为我正在研究的项目中的日志记录框架。我有以下情况:Log4j配置为将日志写入日志文件。有时,此日志文件将复制到另一个目标并删除。日志记录框架可以正常工作,但是由于已删除日志,因此日志未写入日志文件。有什么方法可以告诉Log4j重新创建文件并继续将日志写入日志文件。 最好的问候,拉希德 问题答案: 我研究了log4j的来源,发现log4j无法创建新的日志文件,它只是
问题内容: 如何在Python中删除文件或文件夹? 问题答案: 删除文件。 删除一个空目录。 删除目录及其所有内容。 模块中的对象还公开了这些实例方法: 删除文件或符号链接。 删除一个空目录。
我正在使用Inno Setup安装和更新我的python应用程序。 更新时,安装程序不会删除以前安装的py文件,这会产生两个问题: > 我使用的是插件:如果我在新版本中删除了插件,它仍然适用于执行更新的用户。 <罢工>卸载更新的安装时,将不会删除旧安装中的文件。(无法复制…) 如何在升级之前强制Inno安装程序卸载我的应用程序? 这是我的脚本:
问题内容: 我正在使用FileWriter写入文件,并注意到即使删除了文件(进程外),FileWriter也不会引发任何异常。 这正常吗? 问题答案: 这取决于您的操作系统: 在Windows上,通常无法删除打开的文件。 在Unix上,完全可以接受删除打开的文件并继续写入(或从中读取)文件。删除文件后,它将不再具有目录条目。但是,其内容将继续存在于磁盘上,直到关闭该文件。一旦所有引用该文件的打开句