2014-01-11 28 views
0

目前我想將我的工作流程從一個Makefile文件轉換爲Grunt以及watcher。我在www.domain.net上有一個開發服務器,在www.domain.nl上有一個生產服務器。我必須手動編譯,更新dev-server上的代碼並刷新網絡瀏覽器。當我從開發環境轉向產品環境時,我也很苦惱。我不得不改變文件路徑,域名,並從dev-js文件更改爲縮小的文件,取消註釋分析代碼在html和那種東西。這是/仍然是體力勞動,很容易出現人爲錯誤!grunt自動化的文件夾結構webapp /網站

我想知道如何設置一個只生成開發CSS,JS,HTML的環境,並且還構建了一個包含所有必要文件縮小和連接的生產目錄。稍後,我只需將目錄中的文件夾/文件上傳到生產服務器,並將所有這些手動作業從我手中帶走。

你們推薦什麼或者你的工作流程是什麼?

回答

1

這是相當通用的,但這裏是一個嘗試。

您首先需要的是一個「構建系統」(或「任務管理器」)。這肯定可能是「make」或「grunt」。然後,您將編寫一個gruntfile(或makefile)來描述生成軟件包所需的每個步驟,並且您將在該文件中創建特定的「目標」,這將描述特定選項/值,具體取決於您是否正在生成開發包或生產(「domain.net」與「domain.nl」)。

假設你的呼嚕聲會,你肯定能做到這一點的東西在的行:

grunt.initConfig({ 
    myConfig: grunt.file.readJSON('configurationFile.json') 
}); 

則:

grunt.config('mytask.dev': { 
    options: '<%= myConfig.dev %>' 
}); 

grunt.config('mytask.prod': { 
    options: '<%= myConfig.prod %>' 
}); 

和configurationFile.json可能看起來像:

{ 
    'dev': {'domain': 'domain.net'}, 
    'prod': {'domain': 'domain.com'} 
} 

通過這樣的設置,您可以:

grunt myTask:dev 

grunt myTask:prod 

以產生包特定的環境。 顯然,您需要使用各種grunt插件來做任何有用的事情,並使用您的選項值來替換源文件中的模板值。

至此,您至少可以通過運行一個生成命令來自動生成可靠的包。

你絕對需要閱讀雖然繁重的文檔:http://gruntjs.com/getting-started

第二部分,你將可能需要的是一個CI服務器。 周圍有很多 - 詹金斯(古老的),或更近的斯特拉德(http://stridercd.com/)。

安裝和配置其中一個將自動化您的構建操作。也就是說,每次提交一些代碼時,都會在CI服務器上觸發構建,並且新包(假設構建成功)可用。

在那裏,你肯定需要閱讀關於CI的一些背景文檔(如http://en.wikipedia.org/wiki/Continuous_integration),然後弄髒它們中的一個。

無論哪種方式,從咕嚕開始,看看去哪裏。

希望有所幫助。

+0

好的,謝謝您的反饋。我正在閱讀Grunt入門,並從Twitter Bootstrap解析grunfile.js(這個很複雜)。 – myradon