2014-05-16 5 views
1

일련의 꿀꺽 거리는 작업이 끝날 때 셸 명령을 실행하려고합니다. 필자는 쉘 명령이 일부 파일을 가져 와서 다른 곳으로 복사하기 전에 프로젝트의 파일에 기록 된 변경 사항이 기록되지 않고 있음을 확인했습니다. gulp-shell을 사용하여 쉘 명령을 실행하고 있습니다.꿀꺽 셸 지연

파일 복사 전에 'ls'명령을 실행하면 파일을 복사하기 전에 파일이 모두 작성된 것으로 보았습니다. 이 작업을 수행하는 더 깨끗한 방법이 있습니까?

다음은 gruntfile입니다 :

var gulp = require('gulp'); 
var shell = require('gulp-shell'); 

var jshint = require('gulp-jshint'); 
var changed = require('gulp-changed'); 
var imagemin = require('gulp-imagemin'); 
var minifyHTML = require('gulp-minify-html'); 
var concat = require('gulp-concat'); 
//Uncomment out this line before going to production 
//var stripDebug = require('gulp-strip-debug'); 
var uglify = require('gulp-uglify'); 
var autoprefix = require('gulp-autoprefixer'); 
var minifyCSS = require('gulp-minify-css'); 

// JS hint task 
gulp.task('jshint', function() { 
    gulp.src('./code/js/*.js') 
    .pipe(jshint()) 
    .pipe(jshint.reporter('default')); 
}); 

// minify new images 
gulp.task('imagemin', function() { 
    var imgSrc = './code/img/**/*', imgDst = './www/img'; 
    gulp.src(imgSrc) 
    .pipe(changed(imgDst)) 
    .pipe(imagemin()) 
    .pipe(gulp.dest(imgDst)); 
}); 

// minify new or changed HTML pages 
gulp.task('htmlpage', function() { 
    var htmlSrc = './code/*.html', htmlDst = './www'; 
    gulp.src(htmlSrc) 
    .pipe(changed(htmlDst)) 
    .pipe(minifyHTML()) 
    .pipe(gulp.dest(htmlDst)); 
}); 

// JS concat, strip debugging and minify 
gulp.task('scripts', function() { 
    gulp.src(['./code/js/index.js', './code/js/*.js']) 
    .pipe(concat('script.js')) 
    //Uncomment out this line before going to production 
    //.pipe(stripDebug()) 
    .pipe(uglify()) 
    .pipe(gulp.dest('./www/')); 
}); 

// CSS concat, auto-prefix and minify 
gulp.task('styles', function() { 
    gulp.src(['./code/css/*.css']) 
    .pipe(concat('styles.css')) 
    .pipe(autoprefix('last 2 versions')) 
    .pipe(minifyCSS()) 
    .pipe(gulp.dest('./www/')); 
}); 

gulp.task('prepare', shell.task(['ls', 'cordova prepare'])); 

// default gulp task 
gulp.task('default', ['imagemin', 'htmlpage', 'scripts', 'styles', 'prepare'], function() { 
}); 

그것은 준비 작업 - 그것은이 실행될 때, 다른 파일이 아직 실행을 완료하지 않았습니다.

는 내가 전에 완료해야 종속 작업을 설정할 수 있습니다 보인다 내 준비 :

gulp.task('prepare', [styles], shell.task(['ls', 'cordova prepare'])); 

나는 그것을 테스트하지 않은,하지만 난이 일 것으로 예상?

+1

gulpfile 내용을 붙여 넣으십시오 ... – SteveLacy

+2

아마도 [비동기 작업을 올바르게 처리하고 있지 않습니다] (https://github.com/gulpjs/gulp/blob/master/docs/API.md#async-task- 지원하다). – OverZealous

+0

이 링크를 읽었지만 이해가 안되는 일부 파일은 빨리 쓰여지고 다른 사람은 쓸 시간이 필요합니까? – JehandadK

답변

0

시도 gulp-run-sequence 힙 작업은 비동기식이며 동기식으로 실행 가능합니다. 문제를 해결해야합니다.