2016-04-19 10 views
1

私はこのプロジェクト構造を持っています。2つのタスクのGulpワイヤ依存関係

enter image description here

私はinject-bowergulp taskを実行すると、それはバウアーフォルダを取り、必要なファイルすべてを注入するようにそれを作りたいです。私がinject-appを実行すると、それはすべてのスクリプトを受け取り、そのように注入します。

私のような1タスクの同時ストリーム内の両方のタスクを置く:

gulp.task('inject', ['inject-bower', 'inject-app'], function() { 
    console.log('Injection done.'); 
}) 

しかし、それだけ亭フォルダを注入するようです。しかし、私がgulp inject-bowergulp inject-appを順番に実行すると...それが動作します。

は/ usr/local/binに/ノードは/ usr/local/libに/ node_modules /一気/ binに/ゴクゴク:ここ

var gulp = require('gulp'), 
    plumber = require('gulp-plumber'), 
    rename = require('gulp-rename'); 
var autoprefixer = require('gulp-autoprefixer'); 
var concat = require('gulp-concat'); 
var uglify = require('gulp-uglify'); 
var cache = require('gulp-cache'); 
var minifycss = require('gulp-minify-css'); 
var sass = require('gulp-sass'); 
var wiredep = require('wiredep').stream; 
var inject = require('gulp-inject'); 

var runSequence = require('run-sequence').use(gulp); 
var del = require('del'); 

gulp.task('inject', ['inject-bower', 'inject-app'], function() { 
    console.log('Injection done.'); 
}) 

gulp.task('inject-bower', ['clean'], function() { 
    gulp.src('./index.html') 
     .pipe(wiredep({})) 
     .pipe(gulp.dest('./src')); 
}); 

gulp.task('clean', function() { 
    return del('src/index.html'); 
}); 

gulp.task('inject-app', function() { 
    gulp.src('./src/index.html') 
    .pipe(inject(
     gulp.src(['./src/js/client/*.js'], {read: true}) 
    )) 
    .pipe(gulp.dest('./src')); 
}); 

// For production/dev 
gulp.task('styles', function(){ 
    gulp.src(['src/stylesheets/*.scss']) 
    .pipe(plumber({ 
     errorHandler: function (error) { 
     console.log(error.message); 
     this.emit('end'); 
    }})) 
    .pipe(sass()) 
    .pipe(autoprefixer('last 2 versions')) 
    .pipe(gulp.dest('src/stylesheets/')) 
    .pipe(rename({suffix: '.min'})) 
    .pipe(minifycss()) 
    .pipe(gulp.dest('src/stylesheets/')) 
}); 

// For production. 
gulp.task('build-scripts', function(){ 
    return gulp.src('src/js/client/**/**/*.js') 
    .pipe(plumber({ 
     errorHandler: function (error) { 
     console.log(error.message); 
     this.emit('end'); 
    }})) 
    .pipe(concat('bundle.js')) 
    .pipe(gulp.dest('src/js/')) 
    .pipe(rename({suffix: '.min'})) 
    .pipe(uglify()) 
    .pipe(gulp.dest('src/js/')) 
}); 

gulp.task('default', ['inject'], function(){ 
    //gulp.watch("src/stylesheets/*.scss", ['styles']); 
    //gulp.watch("src/js/client/**/**/*.js", ['scripts']); 
    gulp.watch("*.html", ['inject']); 
}); 

は、コンソール出力である:ここで

は私gulpfileです.gs --color --gulpfile /Users/dan/Projects/AngularJSApp/gulpfile.js inject [12:21:53] gulpfileを使用する〜/ Projects/AngularJSApp/gulpfile.js [12:21:53]クリーン '... [12:21:53]' inject-app 'を起動しています... [12:21:53] 18ミリ秒後に' inject-app 'を完了しました[12:21:53]終了[12:21:53] 1.89 ms後に 'inject-bower'を完了しました[12:21:53] 'inject into bower'を開始しています'... 注射が完了しました。 [12:21:53] 19μs後に 'inject'を完了しました。 index.htmlに1つのファイルを挿入します。

プロセスは終了コード0

を終え、ここで私はそれで行われていたときに私はsrc/index.html中に残されていますものです:私は間違っ

<!DOCTYPE html ng-app="chat"> 
<html> 
<head> 
    <title>Hello Chat</title> 

    <!-- bower:css --> 
    <link rel="stylesheet" href="bower_components/animate.css/animate.css" /> 
    <!-- endbower --> 

    <!-- inject:css --> 
    <!-- endinject --> 
</head> 
<body> 
    <h1>Ready to play?</h1> 

    <section> 
     Hey man. 

     <div ng-controller="ChatCtrl"></div> 
    </section> 

    <!-- bower:js --> 
    <script src="bower_components/angular/angular.js"></script> 
    <script src="bower_components/jquery/dist/jquery.js"></script> 
    <script src="bower_components/moment/moment.js"></script> 
    <!-- endbower --> 

    <!-- inject:js --> 
    <!-- endinject --> 
</body> 
</html> 

何をしているのですか?

答えて

1

下記のように、 'inject-app'タスクで 'クリーン'タスクの依存関係を指定する必要があると思います。それがなければ

gulp.task('inject-app', ['clean'], function() { ... 

あなたは「クリーンは」「アプリを注入」と「-亭を注入」の間に実行している問題に遭遇。あなたのログ出力にあります:

[12:21:53] Starting 'clean'... 
[12:21:53] Starting 'inject-app'... 
[12:21:53] Finished 'inject-app' after 18 ms 
!!! [12:21:53] Finished 'clean' after 40 ms !!! 
[12:21:53] Starting 'inject-bower'... 

私はそれがあなたのアプリの問題の原因だと推測します。追記として


、がぶ飲み4は、明示的にあなたが見たいと思っている実行中の依存関係の振る舞いと言うことができ「gulp.series」と「gulp.parallel」依存関係を導入する予定です。それはhereと記載されています。

+0

私はgulp injection-bowerとgulp inject-appの両方を同じストリームに入れることができ、すべてがうまくいきました。ありがとうございました。 – nn2

0

同様にpkmiecには、Gulp 4を使用することができます。しかし、別のオプションがあります。既に読み込んだランシーケンスというプラグインが、問題の良い解決策です。

gulp.task('inject', function() { 
    return runSequence('clean', ['inject-bower', 'inject-app']); 
}) 

また、あなたはどんなの依存性を設定する必要はありませんし、あなたのタスクは、次のように実行します:

  • クリーンタスクの実行これを試してみてください。 クリーン仕上げ、注入・バウアー注入アプリ並行して実行作業後

私はGulp 4の最終リリース前にこれをお勧めしますが、必要に応じて安全に使用することができます。

関連する問題