2013-03-12 31 views
0

如果存在其他目錄,是否可以選擇覆蓋Google App Engine app.yaml文件中的靜態文件目錄?我有一個源目錄(unminified)和一個構建目錄(縮小和連接)。我希望Google App Engine自動使用build目錄而不是src目錄(如果存在)。這樣我就可以開發使用src目錄,然後創建一個構建並部署它。然後,如果我刪除了構建目錄,GAE將返回從src目錄提供我的靜態文件。GAE App.yaml - 用於src的獨立目錄並構建靜態文件

我需要這樣做的原因是因爲我正在使用Backbone.js & Require.js作爲模塊構建應用程序。我需要能夠optimize我的代碼和部署,而無需每次更改我的app.yaml文件。

回答

2

我很滿意我目前的系統,我的框架在模板中使用不同的路徑來源JavaScript文件。然後在啓動時,通過檢查os.environ和get_application_id()的組合,我會自動檢測是在dev_appserver上本地運行,還是在GAE上的測試appid或生產appid下運行。

接下來的步驟中,您很可能需要積極緩存縮小的JS,在這種情況下,您將無法強制客戶端更新新版本。典型的解決方法是在更新時將散列或日期字符串附加到縮小的js文件名。這是你還需要在你的框架/模板層而不是app.yaml中做的事情。

+0

好吧,有道理,這是否意味着您將src和build文件夾部署到Google App Engine?這是否意味着你必須在app.yaml中爲它們分別設置端點?爲了避開緩存,我可以使用文件修改時間戳。 – wlindner 2013-03-13 00:02:05

+0

我有2個GAE應用程序運行相同的代碼,一個用於測試,另一個用於生產。在測試app.yaml上我同時上傳了兩個src/build文件夾,因爲我有時確實想從src文件夾中使用js,因爲它更容易調試(我只是將設置翻到我的框架中,使用src文件夾中的js)。在生產app.yaml中,我省略了src文件夾,因爲它從不需要。我有一個部署腳本,在部署之前將我的測試/生產yaml複製到實際的「app.yaml」文件中。 – dragonx 2013-03-13 00:21:50

+0

如何處理靜態文件中引用的靜態文件路徑?例如,我的CSS中有一個字體路徑。 'background:url(「../ imgs/bg-body.jpg」)'我必須將'/ imgs'作爲app.yaml中的src或build目錄。如果我將src目錄作爲'/ imgs'公開,那麼這些文件將會在那裏,但它們不會經歷我構建它們的優化步驟。 CSS,字體和HTML模板也一樣。 – wlindner 2013-03-14 12:28:31

1

我會在模板層執行此操作 - 當您要呈現包含指向資源鏈接的模板時,請檢查縮小版本是否存在。如果是,請鏈接到該鏈接 - 否則,鏈接到未鏈接的版本。

這也可以幫助您在不創建構建的情況下意外部署 - 您只需提供未優化的資產。

+0

您是否將src和build文件夾部署到Google App Engine?這是否意味着你必須在app.yaml中爲它們分別設置端點? – wlindner 2013-03-13 00:02:35

+0

是的。您的模板渲染代碼將負責確定要鏈接到哪個端點,具體取決於優化的文件夾是否存在。 – girasquid 2013-03-13 14:59:30

+0

如何處理靜態文件中引用的靜態文件路徑文件?例如,這是我的CSS中的圖像路徑。 'background:url(「../ imgs/bg-body.jpg」)' 我必須在我的app.yaml中將'/ imgs'公開爲src或build目錄。如果我將src目錄作爲'/ imgs'公開,那麼這些文件將會在那裏,但它們不會經歷我構建它們的優化步驟。 CSS,字體和HTML模板也一樣。 – wlindner 2013-03-14 12:01:54

相關問題