2014-09-30 30 views
1

我們正在考慮將我們的項目移植到Sails.js。我們的靜態資產非常大 - 超過3 GB。所以,這已經造成了一個嚴重的限制,因爲它將我們的應用程序擴大了一倍。我們可以修改Sails js來防止這種默認行爲,或者可以推薦一些其他框架嗎?Sails js - 創建資產副本

+0

屬於資產自動加載到帆? – Gelidus 2014-09-30 11:27:11

+0

@Gelidus剛剛將我們的應用的靜態文件複製到資產文件夾中,並且它自動創建了一個.tmp/public文件夾,其中所有資產已被複制。 – 2014-09-30 11:31:59

+0

Sails將該文件夾創建爲公共服務器文件夾。我會嘗試去配置文件,並設置「路徑」:{public:}資產文件夾 – Gelidus 2014-09-30 11:37:15

回答

6

Sails使用Grunt在每次解除應用程序時將您的資產複製到(默認)清潔.tmp/public文件夾中。這使您可以選擇並公開哪些資產,還可以讓您在不同的環境中編譯和縮小資產。除非您在版本控制下將.tmp置於版本控制之下,否則這不一定是應用程序大小的兩倍,但如果您擁有大量資產,它肯定會使您的應用程序啓動緩慢。

這裏最簡單的解決方案是關閉Grunt並直接從資產文件夾中爲您的靜態資產提供服務。要做到這一點:

  1. 刪除Gruntfile.js(或者其重命名爲Gruntfile.js.bak
  2. 創建名爲配置/ assets.js一個新的配置文件(或任何你喜歡,名字並不重要),並把裏面如下:

    module.exports = { 
        paths: { 
        public: __dirname+"/../assets" 
        } 
    }; 
    

之所以把這個在NE W¯¯配置文件,而不是配置/ local.jslocal.js在你的.gitignore文件默認情況下,所以如果你使用Git版本控制你必須每次都重新創建該文件你在新機器上安裝應用程序。

就像我說的,這是最簡單的解決方案,但它也有一些缺點:

  • 沒有更多的自動編譯/資產的縮小文件在生產模式
  • 的的JavaScript/CSS文件中沒有更多的自動連接使用在asset pipeline

如果您想保留這些功能,但仍避免將大量的文件到的.tmp,那麼答案就在於修改默認咕嚕任務(這就是他們在你的項目!)。

0

在Sails.js 0.11你可能只是添加下面的代碼到.sailsrc文件:

 
"hooks": { 
"grunt": false 
}