2016-07-29 61 views
1

我在使用grunt时遇到问题。我已经配置了丑化任务是这样的:Grunt因包含源文件夹名称中的“.js”而失败

uglify: { 
    my_targets: { 
     files: [{ 
      expand: true, 
      cwd: 'build/dev/Assets/JavaScript', 
      src: '**/*.js', 
      dest: 'build/dist/Assets/JavaScript' 
     }] 
    } 
} 

基本上,这是工作完美......直到到达该文件夹: 供应商/ conditioner.js/ conditioner.js

咕噜认为, 供应商/ conditioner.js是一个文件(因为它我的SRC模式匹配),并尝试加载文件,这当然在此错误结束:

{ [Error: Unable to read "build/dev/Assets/JavaScript/vendor/conditioner.js" file (Error code: EISDIR).] 
    origError: { [Error: EISDIR: illegal operation on a directory, read] errno: -4068, code: 'EISDIR', syscall: 'read' } } 

我没有线索,如何告诉grunt忽略文件夹(以“.js”结尾),并希望您能提供帮助。提前致谢。

回答

2

有没有必要写一个自定义过滤器。在文件对象的documentation中,指定过滤器可以是“有效的fs.Stats method name”。 isFile方法已经存在。我们只需要在我们的文件对象中设置此筛选器的名称:

files: [{ 
    expand: true, 
    cwd: 'build/dev/Assets/JavaScript', 
    src: '**/*.js', 
    dest: 'build/dist/Assets/JavaScript', 
    filter: 'isFile' 
}] 
+0

谢谢!其实我是在这个页面上,但由于任何原因,我错过了过滤器选项。 – Armin

0

你可以使用一个custom filter function

uglify: { 
    my_targets: { 
     files: [{ 
      expand: true, 
      cwd: 'build/dev/Assets/JavaScript', 
      src: '**/*.js', 
      dest: 'build/dist/Assets/JavaScript', 
      filter: function(filepath) { 
       return filepath.indexOf('conditioner.js') > -1 ? false : true; 
      } 
     }] 
    } 
} 
相关问题