2014-02-12 19 views
0

我有許多骨幹應用程序都託管在同一個站點上。我正在嘗試使用grunt-manifest爲它們生成appcache清單。它生成清單文件,但鏈接錯誤。我希望每個應用都有獨立的清單文件。使用grunt-manifest生成帶有相關路徑的appcache清單,根據根

例如說我有一個名爲「你好」,它會通過這個網址訪問,應用程序:

mydomain.com/apps/hello

所以主要的js和css文件將在:

mydomain.com/apps/hello/app.js

mydomain.com/apps/hello/style.css

也有一些共享組件,在發現說:

mydomain.com/shared/shared.js

(我用動態加載require.js這些所謂不想Concat的到主app.js)

我指定的體現在咕嚕這樣的:

manifest: { 
    generate: { 
     options: { 
      basePath: '<%= gconf.dist_dir %>/', 
      timestamp: true, 
      network: ['*'], 
     }, 

     files: [ 
      { 
       cwd: 'public/', 
       src: [ 
       'apps/hello/*', 
       'shared/*', 
       // etc 
       ], 
      dest: '<%= gconf.dist_dir %>/public/apps/hello/manifest.appcache' }, 
     ] 
    } 
}, 

我相信這個問題是我試圖讓咕嚕艙單產生明顯的一個站點沒有根網站的一部分的應用程序緩存。清單我得到這個樣子的:

CACHE 

apps/hello/app.js 
apps/hello/style.css 
shared/shared.js 

當我加載的頁面 - 因爲它試圖這樣接入鏈路清單檢索失敗:

mydomain.com/apps/hello/apps/hello/app.js

如果我手動編輯清單文件並在所有內容前添加「/」,如下所示:

CACHE 

/apps/hello/app.js 
/apps/hello/style.css 
/shared/shared.js 

...然後它就可以工作了。

這個問題顯然是在創建相對鏈接的時候,當我想從根目錄獲得它們時。

我不能爲我的生活弄清楚如何讓grunt-manifest爲我在前面創建一個'/'。

我試過嘗試'basePath'本身,'cwd'本身,兩者的結合。如果我把`/'從basePath或cwd的末尾離開,並嘗試將它添加到'src'中,它不起作用,我得到一個空的CACHE部分。

我確定必須有一個簡單的方法來做到這一點與grunt globing模式,但我不能解決它。

任何想法?

(也 - 沒有足夠的代表,以創建一個新的標籤,而是一個「咕嚕艙單」標籤可能是其他人在未來有用)

回答

0

我只是ecnountered同樣的問題。

我已經在這裏分叉的模塊:https://github.com/killfish/grunt-manifest

如果在選項absolutePath經過:真實的,它會在前面加上一個 '/'

options: { 
    **absolutePath: true,** 
    network: ['http://*', 'https://*'], 
    preferOnline: true, 
    verbose: true, 
    timestamp: true 
}, 
+0

尼斯,作品一種享受。比我使用的'../../'解決方法好得多。希望他們將合併變化。 – uberteck