2015-02-11 23 views
2

我正在處理一個關於壓縮較少和縮小CSS的gulp任務,唯一的麻煩點是我需要一些硬編碼3個不同的變量在3個不同的環境(本地,dev,prod )與3個files.less。每次刪除它(原始文件)後,我都會交換正確版本的正確環境。 而在main.less文件中,我包含了original.less文件。在不同的文件中有更少的變量與吞嚥

(MI英語和解釋能力不亮)

gulp.task('before-less', function(cb) { 
    if(gutil.env.dev === true) { 
     gutil.log('  preprod environment \n'); gulp.src('path/to/dev.less').pipe(rename('original.less')).pipe(gulp.dest('path/to/css')); 
    } else if (gutil.env.prod === true) { 
     gutil.log('  prod environment \n'); 
     gulp.src('path/to/prod.less').pipe(rename('original.less')).pipe(gulp.dest('path/to/css')); 
    } else { 
     gutil.log('  local environment \n'); 
     gulp.src('path/to/local.less').pipe(rename('original.less')).pipe(gulp.dest('path/to/css')); 
    } 
}); 

gulp.task('less', ['before-less'], function() { 
    gutil.log(' LESSing '); 

    gulp.src(rute + 'css/*.less') 
     .pipe(less({ 
      paths: [path.join(__dirname, 'less', 'includes')] 
     })).on('error', gutil.log) 
     .pipe(minifycss()) // Minify 
     .pipe(gulp.dest(rute + 'css')) 
     // .pipe(notify({message : "Modifications LESS" })) 
     .pipe(connect.reload()); 
}); 

少我認爲正確運行,但問題是,當吞氣少包括我original.less的文件,他們應該是任務首先閱讀var,或者先包含它,然後再閱讀var?

我包括我的人一飲而盡任務對這個「問題」

回答

2

一個更好的組織,我認爲你應該考慮爲您的不同情況subtasks或完成不同的任務。

少我認爲正確運行,但問題是,當 吞氣少包括我original.less的文件就應該先閱讀 VAR或它們包括其第一和以後要閱讀VAR任務?

較少使用延遲加載和變量的最後聲明獲勝,另請參見http://lesscss.org/features/#variables-feature-lazy-loading。前面的意思是,如果在包含之後再次聲明相同的變量,它將覆蓋代碼中無處不在的變量。

+0

感謝咕-子任務它應該解決這個問題...我用[runSequence](https://www.npmjs.com/package/run-sequence) – davesnx 2015-02-12 10:02:41

0

我用runSequence gulp包找到解決方案。

因爲我發現Gulp可以同步工作,而mi之後的第二個任務少開始之前的第一個任務,他們失敗並給我一個錯誤。

隨着runSequence我可以做這樣的事情:

var runSequence = require('run-sequence'); 

    gulp.task('default', function(callback) { 
    runSequence('before-less', ['less'], callback); 
    }); 

source

找到有關一飲而盡更多信息同步,這可能是真的good other option and more 'elegant node' (using callbacks)