0

因此,在我的配置文件中,我静态定义了要观看的 css 文件以及一些 html 部分。(最终我将使用排除项进行小型匹配..我现在只是先通过)

最初我将这些存储在 grunt config 对象中,但难以获得我想要的输出,所以我将它们从 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)
      }
    }
  });
};

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

4

1 回答 1

0

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

grunt.initConfig({

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

然后,我通过下划线模板将它们加载到您的第一个示例中。如果您的项目结构良好,那么通常只需一个 minimatch 模式就足够了。我所有的 CSS 都以lib/styles, 和任何 misc 结尾。第三方的东西通常lib/vendor是通过 Bower 管理的。

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

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

然后,例如,您用于 lint 您的应用程序和测试代码的 minimatch 模式将是lib/src/**/*.js.

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

于 2013-10-31T19:07:51.207 回答