2011-07-31 63 views
1

我面臨一個奇怪的問題,肯定不難,但我似乎無法找出是什麼原因造成的。通過Capistrano的部署我的應用程序後,我通過我的所有的CSS通過YUI的壓縮機,使用:Capistrano後部署uglify-js鉤子輸出,但不寫文件

run "find #{current_path}/public/static/css/ -name '*.css' -print0 | xargs -0 -I file #{cmd} file -o file" 

就讓我們來看看周圍,幾個測試讓我決定使用節點的醜化-JS爲JavaScript壓縮,所以我去了一個簡單的

uglify_bin = "uglifyjs" 
run "find #{current_path}/public/static/js/ -type f -name '*.js' -print0 | xargs -0 #{uglify_bin}" 

在同一個配方。部署似乎很順利,但對我的js文件進行快速檢查表明uglifyjs沒有做到這一點。

這裏是控制檯輸出的摘錄:

* executing "find /home/USER/www/project/current/public/static/js/ -type f -name '*.js'| xargs uglifyjs --overwrite" 
servers: ["project.com"] 
[project.com] executing command 
command finished in 127ms 

我在哪裏是一個完整的白癡(是的,它的字......)?謝謝。

回答

2

終於找到了問題所在。下面是該行代碼它最終的工作方式:

run "find #{current_path}/public/static/js/ -name '*.js'| xargs -I file #{uglify_path} --overwrite file" 

顯然,--overwrite選項沒有被它應該是...

0

從uglifyjs docs

--overwrite - 如果代碼是從文件(而不是從標準輸入)讀取和傳遞--overwrite那麼輸出將在同一個文件進行寫操作。

所以,或許是這樣的:

uglify_bin = "uglifyjs" 
run "find #{current_path}/public/static/js/ -type f -name '*.js' -print0 | xargs -0 #{uglify_bin} --overwrite" 

會工作。

+0

不管你信不信,我看過的文檔,並已經嘗試過。不幸的是,沒有完成這項工作。 – pixelboy

+0

uglifyjs支持獲取多個文件名作爲參數嗎?如果不是,它可能只處理第一個JS文件。也許你可以嘗試在你的xargs命令中添加-n1: 運行「find#{current_path}/public/static/js/-type f -name'* .js'-print0 | xargs -n1 -0#{uglify_bin} 「--overwrite 另外,它是否工作,如果你手動運行find命令? – sagi

+0

沒有更好的。更令人沮喪的是,當我執行uglifyjs bootstrap.js> bootstrap.min.js時,會創建新文件並完全壓縮。我很困惑... – pixelboy