2015-05-22 34 views
2

我正在嘗試用兩個任務建立一個具有鮑爾依賴關係的Grunt項目:development and deploy。該項目的文件夾結構目前看起來是這樣的:如何使用grunt和dist項目文件夾開發和部署時如何管理鮑爾依賴關係?

. 
├── bower_components 
│   ├── animate.css 
│   ├── jquery 
│   ├── semantic-ui 
│   └── wow 
├── dist 
│   └── assets 
│  ├── styles 
│  └── js 
├── node_modules 
└── src 
    └── assets 
     ├── less 
     └── js 

我目前使用grunt-wiredep,自動將包括在dist的HTML文件的涼亭依賴。我試圖保留bower_components不在dist文件夾中,以保持開發和部署的分離(即使在開發期間該站點的服務來自dist)。

由於我對此很陌生,因此在完成正確的grunt/bower模塊和開發和部署的最佳實踐方面有一個完整的想象失敗(是的,Yeoman需要處理很多這樣的問題,但我試圖學習)。我目前的願景是:

  1. Connect服務於dist文件夾中的HTML頁面。
  2. 在開發中,涼亭組件將自動包含在頁面中(wiredep),但需要在dist文件夾(grunt-wiredep-copy)內提供。
  3. 在部署中,bower組件將獲取最小化版本,並將它們與項目JS和CSS文件或者單個JS和CSS文件中的bower組件連接起來。

我的問題是:什麼是使用亭子組件的開發,並以最少grunt-contrib-copy/grunt-contrib-concat/grunt-string-replace或這些模塊部署的目標,以移動文件和HTML改寫引用(或)好辦法嗎?或者這一步總是會有一個很高的手動元素 - 對於我來說,像肯德基芯片和「馬鈴薯和肉汁」一樣的涼亭和咕嚕肉一起走到一起似乎很奇怪。

對於每種類型的uglify和minify grunt模塊,JS和LESS/CSS連接都很容易。 Bower文件被排除在這些進程之外,wiredep和wiredepCopy似乎沒有提供簡單的方法來爲部署任務「清理」(縮小/連接並更新HTML文件中的相應鏈接)。 wiredepCopy在開發任務期間甚至不更新HTML中的引用,這對我來說似乎很奇怪(並且請求Pull Request)。也許wiredep不是前進的方向?謝謝!

+1

剛剛在另一張有關grunt-usemin http://stackoverflow.com/a/16762060/158815的票上發現此評論。我可能會嘗試探索 - 看起來很有希望。 – mummybot

+1

還讀取其他評論,有一些參數不會編譯或連接縮小的lib文件(jquery et cetera),因爲它會破壞緩存,特別是在更新時。也就是說,請求越少越好,如果一個項目有很多依賴庫,那麼連接它們可能會提高性能。 – mummybot

回答

0

不是嚴格的答案,但對我來說,這不再是一個問題 - 前端開發繼續前進。

該解決方案不使用Grunt和Bower--代之以使用npmWebpack。 Bower通過幫助您keep control of the exact assets and versions that are built in the front end與其他軟件包管理器/構建彙編器不同。這恕我直言,不再需要。

在新的(和改進的)堆棧中,npm拉下資產,Webpack使您能夠輕鬆地將應用程序切片到單獨的構建文件中,以最大限度地減小文件大小。只需要在您的JS中需要/導入所需的前端模塊,並且Webpack爲您完成組合。

npm和webpack的組合接管了Grunt(讀Gulp,Broccoli等cetera)實現的大多數(如果不是全部的話)功能。

相關問題