为什么早午餐编译在 joinTo 中使用函数时发现的所有内容

Why brunch compile everything it found when using function in joinTo

我不明白为什么 BrunchJS 在我使用这样的函数 (CoffeeScript) 时编译所有文件(在 bower_components 中):

modules = ['i18n', 'pager', 'core', 'module-comment']

javascripts:
  joinTo: 
    # Main
    '/js/master.js': () ->
      paths = ['bower_components/bootstrap/**/*', 'app/**/*']
        for o in modules 
        fs.exists '../../../../workbench/dynamix/' + o, (exists) ->
          if exists
            paths.push '../../../../workbench/dynamix/' + o + '/public/public/**/*'
          else
            paths.push '../../../../vendor/dynamix/' + o + '/public/public/**/*'
      return paths

我想测试是否存在某些路径,如果存在,请将完整路径放入一个变量中 return 它会加入到。我已成功获取 workbench/vendor 中的文件,但它从 bower_components 中获取了一些不需要的文件(未指定?!)

我想优化这个:

javascripts:
  joinTo: 
    # Main
    '/js/master.js':   
      'bower_components/bootstrap/**/*'
      '../../../../workbench/dynamix/i18n/public/public/**/*'
      '../../../../workbench/dynamix/pager/public/public/**/*'
      '../../../../vendor/dynamix/core/public/public/**/*'
      '../../../../workbench/dynamix/module-comment/public/public/**/*'
      '../../../../workbench/dynamix/module-love-live-music/public/public/**/*'
      '../../../../workbench/dynamix/module-rating/public/public/**/*'
      '../../../../workbench/dynamix/module-registration/public/public/**/*'
      'app/**/*'

抱歉,我没有找到在 joinTo 中使用函数的文档。

谢谢

joinTo 中的函数应将文件路径作为参数,return true 如果应包含路径,则 false 不包含。 anymatch 文档中对此进行了描述。

您的函数似乎总是 return 真值,这意味着 Brunch 正在观察的每条路径都将包括在内。

您可能打算使用 IIFE,因此函数的 return 值(在初始代码评估期间调用)被分配给 joinTo。在 coffeescript 中,您可以使用 do 关键字轻松完成此操作,因此与其使用 () -> 开始函数定义,不如使用 do -> 来代替。

感谢您的宝贵时间和回答。

我创建了获取文件的函数并测试该路径是否存在并且工作正常。

如果这对某人有帮助,我就让我的魔法在这里发挥作用

javascripts:
  joinTo: 
    # Main
    '/js/master.js': [
      'bower_components/bootstrap/**/*'
      'bower_components/unveil/**/*'
      'app/**/*'
      (string) ->
        response = false
        modules = ['i18n', 'pager', 'core', 'module-comment']
        for o in modules
          exists = fs.existsSync unixify('../../../../workbench/dynamix/' + o)
          if exists
            if unixify(string).indexOf(unixify('../../../../workbench/dynamix/' + o + '/public/public/')) != -1
              response = true
          else
            if unixify(string).indexOf(unixify('../../../../vendor/dynamix/' + o + '/public/public/')) != -1
              response = true
        return response
    ]