在gruntjs中观察多个“文件数组”

时间:2013-10-31 18:21:34

标签: gruntjs

所以在我的配置文件中,我正在静态定义要观看的css文件,以及一些html部分。 (最终我将与排除项目进行微型对比..我现在只是第一次通过)

最初我将这些存储在grunt配置对象中,但是很难获得我想要的输出,所以我把它们从initConfig方法移到了包装函数中:

原始传递:

grunt.initConfig({
  cssFiles: [ ... list of files ... ],
  htmlFiles: [ ... list of files ...],
  watch: {
    reload: {
      files: ['<%= cssFiles.concat(htmlFiles).join(",") %>']  
    }
  }
});

我尝试了几种变体(有和没有连接),作为一个例子。

当前“工作”版本:

module.exports = function(grunt) {
  var cssFiles = ['someFile.css',...'lastFile.css'],
      htmlFiles = [ ... ];

  grunt.initConfig({
    watch: {
      reload: {
        files: cssFiles.concat(cshtmlFiles)
      }
    }
  });
};

我觉得我应该能够做到这一点,而不必将我的阵列移出咕噜声配置(虽然我不知道为什么我觉得他们应该留在那里......我想我只是没见过很多Gruntfile的代码在initconfig之外)

1 个答案:

答案 0 :(得分:0)

我正在使用一个系统,在单个配置对象中存储我需要的所有路径,如下所示:

grunt.initConfig({

    pathTo: {
        distcss         : './dist/css/master.css',
        srcstyles       : './lib/styles/**/*.scss',
        vendor          : './lib/vendor'
    },
    // tasks...
});

然后,我通过下划线模板加载那些,就像你的第一个例子。如果您的项目结构良好,那么通常只有一个迷你匹配模式就足够了。我的所有CSS最终都在lib/styles,以及任何misc。第三方的东西通常在lib/vendor,因为它是通过Bower管理的。

使用正确的目录结构和模式,您不需要大量的路径。示例JavaScript项目可能如下所示:

lib
└── src
    ├── app
    └── tests

然后,您的迷你匹配模式将您的应用程序和测试代码添加到lib/src/**/*.js,例如。

但对你有用的东西对你有用;如果你写了一个你满意的系统,无论你是否在其他地方看过它,都没有理由改变它。 : - )