2016-11-21 98 views
2

我想將我的靈丹妙藥的任務分成不同的Gulp任務,所以我可以運行它們的一個子集。Laravel Elixir沒有運行內部任務

這裏是我的gulpfile.js

var gulp = require('gulp'), 
    elixir = require('laravel-elixir'); 

/** 
* CSS 
*/ 

gulp.task('styles', function() 
{ 
    elixir(function(mix) 
    { 
     mix.sass('auth.scss') 
      .sass('main.scss') 
      .sass('dashboard.scss') 
      .sass('contact.scss') 
      .sass('login.scss') 
      .sass('campaign_creator.scss') 
      .sass('campaign_stats.scss'); 
    }); 
}); 

/** 
* JS 
*/ 

gulp.task('scripts', function() 
{ 
    elixir(function(mix) 
    { 
     mix.scriptsIn('public/js/src/shared', 'public/js/dist/shared/all.js') 
      .scriptsIn('public/js/src/logins', 'public/js/dist/logins/all.js') 
      .scriptsIn('public/js/src/campaign', 'public/js/dist/campaigns/all.js') 

      // vendor scripts used in multiple places can be kept separate rather than concatenated with the page's JS files 
      .copy('public/vendor/alertifyjs/dist/js/alertify.js', 'public/js/dist/vendor/alertifyjs/alertify.js'); 
    }); 
}); 

gulp.task('default', [ 'styles', 'scripts' ]); 

運行的是stylesscripts任務產生任何影響。如果我在終端中運行默認任務gulp,那麼stylesscripts任務將無效,但elixir任務成功運行。

端子輸出:

gulp 
[12:28:54] Using gulpfile /path/to/my/app/application/gulpfile.js 
[12:28:54] Starting 'styles'... 
[12:30:03] Finished 'styles' after 1.13 min 
[12:30:03] Starting 'scripts'... 
[12:30:03] Finished 'scripts' after 63 ms 
[12:30:03] Starting 'default'... 
[12:30:03] Starting 'sass'... 

Fetching Sass Source Files... 
    - resources/assets/sass/auth.scss 


Saving To... 
    - public/css/auth.css 

[12:30:25] Finished 'default' after 22 s 
[12:30:27] gulp-notify: [Laravel Elixir] Sass Compiled! 
[12:30:27] Finished 'sass' after 24 s 
[12:30:27] Starting 'sass'... 

Fetching Sass Source Files... 
    - resources/assets/sass/main.scss 


Saving To... 
    - public/css/main.css 

[12:30:27] gulp-notify: [Laravel Elixir] Sass Compiled! 
[12:30:27] Finished 'sass' after 504 ms 
[12:30:27] Starting 'sass'... 

Fetching Sass Source Files... 
    - resources/assets/sass/dashboard.scss 


Saving To... 
    - public/css/dashboard.css 

[12:30:27] gulp-notify: [Laravel Elixir] Sass Compiled! 
[12:30:27] Finished 'sass' after 200 ms 
[12:30:27] Starting 'sass'... 

Fetching Sass Source Files... 
    - resources/assets/sass/contact.scss 


Saving To... 
    - public/css/contact.css 

[12:30:28] gulp-notify: [Laravel Elixir] Sass Compiled! 
[12:30:28] Finished 'sass' after 289 ms 
[12:30:28] Starting 'sass'... 

Fetching Sass Source Files... 
    - resources/assets/sass/login.scss 


Saving To... 
    - public/css/login.css 

[12:30:28] gulp-notify: [Laravel Elixir] Sass Compiled! 
[12:30:28] Finished 'sass' after 210 ms 
[12:30:28] Starting 'sass'... 

Fetching Sass Source Files... 
    - resources/assets/sass/campaign_creator.scss 


Saving To... 
    - public/css/campaign_creator.css 

[12:30:28] gulp-notify: [Laravel Elixir] Sass Compiled! 
[12:30:28] Finished 'sass' after 218 ms 
[12:30:28] Starting 'sass'... 

Fetching Sass Source Files... 
    - resources/assets/sass/campaign_stats.scss 


Saving To... 
    - public/css/campaign_stats.css 

[12:30:29] gulp-notify: [Laravel Elixir] Sass Compiled! 
[12:30:29] Finished 'sass' after 477 ms 
[12:30:29] Starting 'scriptsIn'... 

Fetching ScriptsIn Source Files... 
    - public/js/src/shared/**/*.js 


Saving To... 
    - public/js/dist/shared/all.js 

[12:30:56] gulp-notify: [Laravel Elixir] Scripts Merged! 
[12:30:56] Finished 'scriptsIn' after 27 s 
[12:30:56] Starting 'scriptsIn'... 

Fetching ScriptsIn Source Files... 
    - public/js/src/logins/**/*.js 


Saving To... 
    - public/js/dist/logins/all.js 

[12:30:57] gulp-notify: [Laravel Elixir] Scripts Merged! 
[12:30:57] Finished 'scriptsIn' after 738 ms 
[12:30:57] Starting 'scriptsIn'... 

Fetching ScriptsIn Source Files... 
    - public/js/src/campaign/**/*.js 


Saving To... 
    - public/js/dist/campaigns/all.js 

[12:30:57] gulp-notify: [Laravel Elixir] Scripts Merged! 
[12:30:57] Finished 'scriptsIn' after 609 ms 
[12:30:57] Starting 'copy'... 

Fetching Copy Source Files... 
    - public/vendor/alertifyjs/dist/js/alertify.js 


Saving To... 
    - public/js/dist/vendor/alertifyjs/alertify.js 

[12:30:58] Finished 'copy' after 298 ms 

我在做什麼錯?

回答

2

因此Elixir有很少的預留任務,例如:styles(用於運行所有樣式操作),scriptstdd(用於測試)。有你的樹解決問題:

  1. 更改您的任務名稱(scripts =>scripts_MODULE_NAME),然後就可以通過gulp scripts_MODULE_NAME
  2. 開始使用elixir.extend運行,多讀一些on documentation
  3. 只需使用gulp styles提供Elixir,那麼你將運行所有樣式任務(sass在你的例子中),沒有腳本任務

我也建議你有一個main.scss每米模塊在gulpfile.js中,並且包括此main.scss中的所有*.scss文件。它有幾個優點:

  1. 你的IDE會明白的依賴(例如,如果你在一個文件中設置變量,你的IDE會知道,你可以在另一個文件中使用這個變量,因爲你有文件,該文件集這個變量)
  2. 現在使用你的配置,如果你使用gulp watch並且你想添加一些新的樣式文件,你需要更新gulpfile.js,退出gulp watch並重新運行。如果您在一個SCSS文件中擁有所有依賴項,則不需要重新啓動gulp watch,只需將新文件添加到*.scss文件中,即可瞭解有關更改的知識。

從您例如導入一個SCSS文件SCSS文件,你可以這樣做:

@import "auth"; 
@import "main"; 
@import "dashboard"; 
@import "contact"; 
@import "login"; 
@import "campaign_creator"; 
@import "campaign_stats";