꿀꺽꿀꺽.새 파일 또는 삭제된 파일에 대해 watch가 트리거되지 않았습니까?
글로벌 일치에서 파일을 편집할 때 다음 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
이제 새 파일이나 삭제된 파일에서 작동합니다.질문을 받았을 때는 그렇지 않았습니다.
은 여전히 제대의나부여분유전효다니합히은머지답다:▁the유니효합▁still▁stands▁answer.gulp-watch
수정된 파일에 대해서만 특정 작업을 수행할 수 있기 때문에 일반적으로 더 나은 솔루션입니다.gulp.watch
에서는 전체 태스크만 실행할 수 있습니다.적당한 크기의 프로젝트의 경우 이 작업이 너무 느려져 유용하지 않습니다.
당신은 아무것도 놓치지 않았어요.gulp.watch
새 파일이나 삭제된 파일에서는 작동하지 않습니다.간단한 프로젝트를 위해 설계된 간단한 솔루션입니다.
새 파일을 찾을 수 있는 파일 감시 기능을 사용하려면 훨씬 강력한 플러그인을 사용합니다.사용량은 다음과 같습니다.
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>> );
});
개인적으로 첫 번째 옵션을 추천합니다.이를 통해 파일별 프로세스를 훨씬 빠르게 처리할 수 있습니다.이 기능은 파일을 연결하지 않는 한 라이브 다시 로드를 통해 개발 중에 매우 유용합니다.
내 라이브러리를 사용하거나 다음과 같은 기능을 사용하여 스트림을 마무리할 수 있습니다.
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일 업데이트
한 바와 1의 @pkyek 지한바스와는릴, 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');
function scriptsPipeline() {
return combine(coffeeescript(), uglify(), gulp.dest('/path/to/dest'));
}
watch('src/scripts/**/*.js')
.pipe(scriptsPipeline());
둘다요.gulp.watch()
그리고.require('gulp-watch')()
절대 디렉터리를 사용하는 경우에는 그렇지 않지만 새/새 파일에 대해 트리거합니다.테스트에서 사용하지 않았습니다."./"
관련 디렉토리 BTW의 경우.
그러나 전체 디렉토리가 삭제되어도 둘 다 트리거되지 않습니다.
var watch = require('gulp-watch');
//Wont work for new files until gaze is fixed if using absolute dirs. It won't trigger if whole directories are deleted though.
//gulp.watch(config.localDeploy.path + '/reports/**/*', function (event) {
//gulp.watch('src/app1/reports/**/*', function (event) {
// console.log('*************************** Event received in gulp.watch');
// console.log(event);
// gulp.start('localDeployApp');
});
//Won't work for new files until gaze is fixed if using absolute dirs. It won't trigger if whole directories are deleted though. See https://github.com/floatdrop/gulp-watch/issues/104
//watch(config.localDeploy.path + '/reports/**/*', function() {
watch('src/krfs-app/reports/**/*', function(event) {
console.log("watch triggered");
console.log(event);
gulp.start('localDeployApp');
//});
한다면src
경로(으로 하는 경로)입니다./
), 새된 파일을 .), 파일 이름은 "파일 이름"입니다.하지만 여전히 방법이 있습니다.
다음 대신:
gulp.watch(src + '/js/**/*.js', ['scripts']);
쓰기:
gulp.watch('js/**/*.js', {cwd: src}, ['scripts']);
그리고 그것은 효과가 있을 것입니다!
Globs에는 별도의 기본 디렉토리가 지정되어 있어야 하며 기본 위치를 Globs 자체에서 지정하면 안 됩니다.
가지고 계신다면,lib/*.js
중인 를 볼 입니다.process.cwd()
Gulp은 Gaze를 사용하여 파일을 시청하고 Gulp API 문서에서 Gaze 특정 옵션을 Watch 기능에 전달할 수 있음을 확인했습니다.gulp.watch(glob[, opts], tasks)
이제 Gaze 문서에서 현재 작업 중인 dir(global base dir)가cwd
선택.
그래서 알렉스크의 대답은 다음과 같습니다.gulp.watch('js/**/*.js', {cwd: src}, ['scripts']);
이것이 오래된 질문이라는 것을 알지만, 저는 제가 생각해낸 해결책을 던져볼까 생각했습니다.찾은 gulp 플러그인 중에 새 파일이나 이름이 바뀐 파일이 없습니다.그래서 저는 편의 기능으로 모노클을 포장하게 되었습니다.
다음은 해당 기능의 사용 방법에 대한 예입니다.
watch({
root: config.src.root,
match: [{
when: 'js/**',
then: gulpStart('js')
}, {
when: '+(scss|css)/**',
then: gulpStart('css')
}, {
when: '+(fonts|img)/**',
then: gulpStart('assets')
}, {
when: '*.+(html|ejs)',
then: gulpStart('html')
}]
});
gulpStart는 제가 만든 편의 기능이기도 합니다.
이것이 실제 시계 모듈입니다.
module.exports = function (options) {
var path = require('path'),
monocle = require('monocle'),
minimatch = require('minimatch');
var fullRoot = path.resolve(options.root);
function onFileChange (e) {
var relativePath = path.relative(fullRoot, e.fullPath);
options.match.some(function (match) {
var isMatch = minimatch(relativePath, match.when);
isMatch && match.then();
return isMatch;
});
}
monocle().watchDirectory({
root: options.root,
listener: onFileChange
});
};
꽤 간단하죠?모든 것은 제 꿀꺽 스타터 키트에서 찾을 수 있습니다. https://github.com/chrisdavies/gulp_starter_kit
그것은 마치 꿀꺽꿀꺽 마시는 것처럼 보인다는 것을 주목하는 것이 중요합니다.watch는 Windows에서 변경 및 삭제된 파일만 보고하지만 OSX에서는 기본적으로 새 파일 및 삭제된 파일을 수신합니다.
https://github.com/gulpjs/gulp/issues/675
새/이름 변경/삭제된 파일은 gulp.watch 대신 'gulp-watch'를 사용해야 합니다.
var gulpwatch = require('gulp-watch');
var source = './assets',
destination = './dest';
gulp.task('copy-changed-assets', function() {
gulpwatch(source+'/**/*', function(obj){
gulp.src( obj.path, { "base": source})
.pipe(gulp.dest(destination));
});
});
언급URL : https://stackoverflow.com/questions/22391527/gulps-gulp-watch-not-triggered-for-new-or-deleted-files
'programing' 카테고리의 다른 글
엑셀에서 두 숫자 사이에 있는 셀을 어떻게 세나요? (0) | 2023.08.24 |
---|---|
도커에서 컨테이너를 나열하는 방법 (0) | 2023.08.24 |
서버에서 받은 메시지를 구문 분석할 수 없습니다. (0) | 2023.08.24 |
Spring 및 SLF4J를 구성하여 로깅을 가져오려면 어떻게 해야 합니까? (0) | 2023.08.24 |
관계 컬렉션을 라벨로 다시 로드하려면 어떻게 해야 합니까? (0) | 2023.08.24 |