2015-01-05 1 views
2

다음 작업을 통해 앱을 빌드 할 수 있습니다. 웹용으로 다소 축소되었습니다. 출력 결과 모든 작업이 완료되었다고 표시됩니다. 이 누락되었으므로은 Libs 태스크를 제외한 모든 출력 완료 메시지를 통지합니다. 제가 따로 달리게되면, 그것 모두가 작동합니다.Gulp Task Say가 완료되었지만 결과가 나타나지 않음

나는 코드를 조작 해 보았다.하지만 나는 분명히 중요한 사실을 놓쳤다. 도와주세요.

꿀꺽 파일 및 아래 출력 :

//Gulp File 

var gulp = require('gulp'), 
    //.. 
    sass = require('gulp-sass'); 

gulp.task('default', ['clean'], function (cb) { 
    gulp.start('libs', 'app', 'styles'); 
    cb(); 
}); 

gulp.task("app", function (cb) { 
    gulp.src(['./app/main/app.js', './app/**/*.js']) 
     .pipe(changed('public/js')) 
     .pipe(concat('app.js')) 
     .pipe(gulp.dest('public/js')) 
    cb(); 
}); 

gulp.task("styles", function (cb) { 
    gulp.src('./resources/sass/app.scss') 
     .pipe(changed('public/css')) 
     .pipe(sass({...})) 
     .pipe(autoprefixer(...)) 
     .pipe(gulp.dest("./resources/build/")) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(gulp.dest('public/css')) 
    cb(); 
}); 


gulp.task('publish', function (cb) { 
    gulp.src([ 
     'bower_components/jquery/dist/jquery.js', 
     'bower_components/angular/angular.js', 
     //.. 
     'bower_components/angular-aria/angular-aria.min.js' 
    ]) 
     .pipe(gulp.dest('./resources/build/js/')); 

    cb(); 
}); 


gulp.task('libs', ['publish'], function (cb) { 
    gulp.src([ 
     'resources/build/js/angular.js', 
     'resources/build/js/**/*.js' 
    ]) 
     .pipe(concat('libraries.js')) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(gulp.dest('public/js')) 
    cb(); 
}); 

gulp.task('clean', function (cb) { 
    del(['resources/build', 'public/js/', 'public/css/'], cb) 
}); 

/** 문제 LIBRARIES.JS이

//Output of Gulp (default) 
[01:14:05] Using gulpfile ~/dev/ttd/client/gulpfile.js 
[01:14:05] Starting 'clean'... 
[01:14:05] Finished 'clean' after 5.78 ms 
[01:14:05] Starting 'default'... 
[01:14:05] Starting 'publish'... 
[01:14:05] Finished 'publish' after 11 ms 
[01:14:05] Starting 'libs'... 
[01:14:05] Finished 'libs' after 2.81 ms 
[01:14:05] Starting 'app'... 
[01:14:05] Finished 'app' after 3.39 ms 
[01:14:05] Starting 'styles'... 
[01:14:05] Finished 'styles' after 3.85 ms 
[01:14:05] Finished 'default' after 22 ms 
[01:14:05] gulp-notify: [Gulp notification] App Compiled 
[01:14:06] gulp-notify: [Gulp notification] Styles Compiled 

//Output of Gulp libs 
[07:26:16] Using gulpfile ~/dev/ttd/client/gulpfile.js 
[07:26:16] Starting 'publish'... 
[07:26:16] Finished 'publish' after 7.4 ms 
[07:26:16] Starting 'libs'... 
[07:26:16] Finished 'libs' after 2.71 ms 
[07:26:16] gulp-notify: [Gulp notification] Libs Compiled 

어떤 도움 주셔서 감사합니다 작동하지 않습니다 libs와에 대한 통지 꿀꺽, 표시되지 않습니다.

+0

'clean '이 어떻게 든'libs '보다 먼저 실행되는지 궁금합니다. 당신의 디렉토리에서''resources/build ''를 제거하여 목록을 지우고 그 도움이되는지 확인해 주시겠습니까? 사람들은 분명히 공식 콜백 레서피를 사용하여 Gulp에 작업을 동 기적으로 실행시키는 데 문제가 있습니다. 여기에 서면 작성 및 대체 솔루션을 참조하십시오. http://schickling.me/synchronous-tasks-gulp/ –

+0

이러한 'cb' (콜백) 작동합니까? – Rigotti

+0

아니요, 콜백이 수행하지 않습니다. 나는 너무 멀리 모범을 보았고, 교훈을 얻었습니다. – csduarte

답변

2

gulp.src은 비동기식으로 작업합니다. 당신은 오히려 cb immediately` 호출하는 대신 스트림을 반환해야합니다

//Gulp File 

var gulp = require('gulp'), 
    //.. 
    sass = require('gulp-sass'); 

gulp.task('default', ['clean', 'libs', 'app', 'styles']); 

gulp.task("app", ['clean'], function() { 
    return gulp.src(['./app/main/app.js', './app/**/*.js']) 
     .pipe(changed('public/js')) 
     .pipe(concat('app.js')) 
     .pipe(gulp.dest('public/js')); 
}); 

gulp.task("styles", ['clean'], function() { 
    return gulp.src('./resources/sass/app.scss') 
     .pipe(changed('public/css')) 
     .pipe(sass({...})) 
     .pipe(autoprefixer(...)) 
     .pipe(gulp.dest("./resources/build/")) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(gulp.dest('public/css')); 
}); 


gulp.task('publish', ['clean'], function() { 
    return gulp.src([ 
     'bower_components/jquery/dist/jquery.js', 
     'bower_components/angular/angular.js', 
     //.. 
     'bower_components/angular-aria/angular-aria.min.js' 
    ]) 
     .pipe(gulp.dest('./resources/build/js/')); 
}); 


gulp.task('libs', ['clean', 'publish'], function() { 
    return gulp.src([ 
     'resources/build/js/angular.js', 
     'resources/build/js/**/*.js' 
    ]) 
     .pipe(concat('libraries.js')) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(gulp.dest('public/js')); 
}); 

gulp.task('clean', function (cb) { 
    del(['resources/build', 'public/js/', 'public/css/'], cb) 
}); 
+0

와우 감사합니다! 저 사람이 어젯밤에 나를 지켰다. 나는 그 반환이 선택 사항이라고 생각했다. 여전히 스트림의 재미에 새로운. 감사! – csduarte

0

gulp 종종 내가 지금 무시하는 이유가 현재 디렉토리에서 경로의 시작을 이해하지 않는 것 같습니다를 (나는 이것을 적용 할 필요가 없습니다 예를 들어 Laravel 5.4의 프로젝트에 대한 솔루션 ...).

필자의 경우, 출력 결과 (파일이 생성되지 않은)없이 gulp을 올바르게 실행하는 내 css/js 경로 파일보다 후행 .이 누락되었습니다.

그래서 나는이에서 가야했다 :

var gulp = require('gulp'); 
var concat = require('gulp-concat'); 
var js = require('gulp-uglify'); 
var css = require('gulp-uglifycss'); 

var stylesheets = [ 
    '/css/fabric.css' 
]; 

var scripts = [ 
    '/js/fabric.js' 
]; 

gulp.task('css', function() { 
    return gulp.src(stylesheets) 
     .pipe(concat('fabric.min.css')) 
     .pipe(css()) 
     .pipe(gulp.dest('/dist/css/')); 
}); 
이에

:

var gulp = require('gulp'); 
var concat = require('gulp-concat'); 
var js = require('gulp-uglify'); 
var css = require('gulp-uglifycss'); 

var stylesheets = [ 
    './css/fabric.css' 
]; 

var scripts = [ 
    './js/fabric.js' 
]; 

gulp.task('css', function() { 
    return gulp.src(stylesheets) 
     .pipe(concat('fabric.min.css')) 
     .pipe(css()) 
     .pipe(gulp.dest('./dist/css/')); 
}); 

그것이 귀중한 시간을 절약하고 두통을 방지하는 데 도움이 희망!