2013-10-31 52 views
0

因此,在我的配置文件中,我靜態定義要觀看的css文件以及一些html偏旁。 (最終我會與排除對象進行最小匹配..我現在只是第一關)在gruntjs中觀察多個「文件陣列」

本來我是將這些存儲在grunt配置對象中,但努力獲得我想要的輸出,所以我將它們移出該方法initConfig並進入包裝功能:

原件通:

grunt.initConfig({ 
    cssFiles: [ ... list of files ... ], 
    htmlFiles: [ ... list of files ...], 
    watch: { 
    reload: { 
     files: ['<%= cssFiles.concat(htmlFiles).join(",") %>'] 
    } 
    } 
}); 

我嘗試的這幾種變化(有或沒有加入),作爲一個例子。

當前「工作」版本:

module.exports = function(grunt) { 
    var cssFiles = ['someFile.css',...'lastFile.css'], 
     htmlFiles = [ ... ]; 

    grunt.initConfig({ 
    watch: { 
     reload: { 
     files: cssFiles.concat(cshtmlFiles) 
     } 
    } 
    }); 
}; 

我覺得我應該能夠做到這一點,而不必移動繁重的配置我的陣列的輸出(雖然我不知道爲什麼,我覺得他們應該做的呆在那裏......我想我只是

回答

0

我使用的存儲,我需要在一個單一的配置對象,像這樣的所有路徑的系統還沒有看到許多Gruntfile與代碼initconfig以外):

grunt.initConfig({ 

    pathTo: { 
     distcss   : './dist/css/master.css', 
     srcstyles  : './lib/styles/**/*.scss', 
     vendor   : './lib/vendor' 
    }, 
    // tasks... 
}); 

然後,我像第一個例子中那樣通過下劃線模板加載這些模板。如果你的項目結構很好,那麼通常只需要一個minimatch模式就足夠了。我所有的CSS結果都是lib/styles,還有其他的雜項。第三方的東西通常在lib/vendor,因爲這是通過鮑爾管理。

有了正確的目錄結構和模式,你不應該需要大量的路徑。樣本的JavaScript項目看起來是這樣的:

lib 
└── src 
    ├── app 
    └── tests 

然後你minimatch模式皮棉您的應用程序和測試代碼也只是lib/src/**/*.js,例如。

但什麼適合你的作品適合你;如果你寫了一個你很滿意的系統,不管你是否在其他地方看過它,沒有理由去改變它。 :-)

+0

我根本沒有寫系統。我剛剛成爲前端領導人,並試圖在流程中添加一些工作流程自動化,並且在我們遷移到sass/scss時將解決css更改問題。他們沒有韻律或理由來建立結構。實現的設計模式介於「意大利麪條」模式和「wut?」之間。模式。所以,直到sass解決方案被實現(時序函數w /需要發生的完整迴歸測試)時,我試圖處理20個以上文件的kludgy數組...... –