2012-11-23 55 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