2012-11-23 53 views
4

我與Middleman合作開發,測試和構建我的HAML & SASS項目。包括Require.JS(r.js構建)到Middleman構建

現在我還喜歡require.js。有什麼辦法可以將R.js構建整合到Middleman構建中?

你有什麼經驗嗎?你如何處理中間人的require.js?

回答

5

至於剛剛「跑r.js」而言,這是非常簡單的:

  1. 保存r.js到項目的根。
  2. 定義自定義擴展(config.rb)的構建後執行r.js:

    module RequireJS 
        class << self 
         def registered(app) 
          app.after_build do |builder| 
           exec('node r.js -o build/javascripts/app.build.js'); 
          end 
         end 
         alias :included :registered 
        end 
    end 
    
    ::Middleman::Extensions.register(:requirejs, RequireJS) 
    
  3. 激活自定義擴展(config.rb):

    configure :build do 
        … 
        activate :requirejs 
    end 
    
+3

我建議不要在那裏使用exec,因爲它交換了當前正在執行的進程與新的shell進程,因此當它返回原始進程時也是如此。例如。如果你在irb中嘗試這樣做:'exec「echo hello world」'你會看到irb進程在echo命令返回時被終止。這可能會導致一些有趣的行爲,比如如果你想在exec調用之後運行一些ruby代碼,那麼這些行永遠不會被執行。所以應該使用:'system'node r.js ....「 – Timo

3

r.js可以通過命令行與node一起使用,就像中間人一樣。我不知道你是如何使用中間人,但在你的工作流程中加入另一個命令應該不成問題。你可以從命令行here找到instructions on how to use r.js

+0

我知道如何使用命令行謝謝;)有一個'middleman build'命令。當我這樣做時,我想要包含require.JS構建... – meo

+0

這將需要一個不幸不存在的插件,請參閱[此問題](https://github.com/middleman/middleman/issues/ 622)。你可以通過在你的bash配置文件中使用別名來「破解」它''alias build =「node r.js [...]; middleman build」' – davidpfahler