为什么早午餐不从/ app的子目录中添加javascript?

时间:2014-01-19 15:15:11

标签: brunch

我有一个位于~/lens/v的早午餐config.coffee文件,其中包含以下行:

  files:
    javascripts:
      defaultExtension: 'coffee'
      joinTo:
        'javascripts/app.js': /^app/

Brunch获取扩展名为.js的文件,这些文件位于/ app目录的根目录中,并将它们连接到app.js中 - 但它不会连接位于/ app子目录中的文件。

具体来说,我正试图在~/lens/v/app/assets

的coffeescript文件中添加早午餐
~/lens/v/app/assets$ cat r.coffee 
d3.select("body").style("background-color", "black");

我能够像这样构建项目

~/lens/v$brunch b

但是当我在app.js文件中搜索“d3”时,我找不到它。由于某种原因,JS没有被连接起来。

grep -r "d3" app.js //returns nothing

配置文件javascripts/app.js': /^app/中的这一行应该将/ app中的任何javascript文件加入app.js.但这不会发生。当我将javascript文件的扩展名更改为.js(来自.coffee)时,我得到了相同的行为。

我可以采取哪些步骤来调试它?

2 个答案:

答案 0 :(得分:1)

问题在于早午餐对资产有特殊处理。它们的处理方式与您希望编译的文件不同 - 按原样复制到公共目录中。

解决您所描述的问题的最简单方法是将该coffeescript移至app下的其他位置,而不是assets

或者,您可以在conventions.assets下的早午餐配置中重新配置被视为资产的内容。 https://github.com/brunch/brunch/blob/stable/docs/config.md#conventions

答案 1 :(得分:0)

几天前我问了同样的问题,并在这里回答:

How can I compile individual CoffeeScript files in the assets directory?

如果你希望将这些文件保存在assets /中,我的解决方案是使用After-Brunch插件并手动转换它们,就像我在上面的链接中所示。

否则,将它们移出资源/,并使用我首先链接的coffeescript插件。