javascript - javascript Grunt文件对象格式: 所有正处于顶层目录下的常规文件文件

  显示原文与译文双语对照的内容
76 1

我不知道我怎样才能获得这项工作。 使用( grunt )的模块的grunt配置需要文件对象的格式设置。 使用这个,我希望能够将所有常规文件( 。例如,非目录) 立即匹配到顶级目录下。

例如假设这是我的目录结构,其中 + 表示一个目录,- 表示一个规则的file:


repo


 + dir


 - unwanted.js


 - server.js



如何使用grunt文件的格式来匹配 server.js,但不使用 dir 或者 dir/unwanted.js

这就是在 compact Fomat 中的外观:


mine: {


 src: [


 '*'


 ]


}



或者,在bash中,你可以像这样获得它们:


ls -p | grep -v/;



以下是我在文件对象格式中尝试的内容:

  • 这不能工作:

    
    mine: {
    
    
     files: {
    
    
     '.': ['*']
    
    
     }
    
    
    }
    
    
    
    
  • 这里操作也不执行:

    
    mine: {
    
    
     files: {
    
    
     './': ['*']
    
    
     }
    
    
    }
    
    
    
    
  • 连这个都没有

    
    mine: {
    
    
     files: {
    
    
     './': ['*/server.js']
    
    
     }
    
    
    }
    
    
    
    
  • 也不是这样:

    
    mine: {
    
    
     files: {
    
    
     './': ['server.js']
    
    
     }
    
    
    }
    
    
    
    
  • 这里操作有效,但递归运行,我不希望这样做:

    
    mine: {
    
    
     files: {
    
    
     './': ['**/server.js']
    
    
     }
    
    
    }
    
    
    
    

在进行了大量测试和代码读取之后,我已经验证了它实际上是 minimatch 包( Grunt的depencency ),它没有返回我正在查找的匹配项。 所以我使用的不是grunt模块,而是我的grunt配置。

由于sdl是如这里流行,这似乎是一个非常常见的用例,我觉得有一种方法可以做到这一点。 有谁知道那是什么?

更新

就像 RobC 指出的那样,我的最后一个例子是 。 它在我的node_modules 目录中接收了 server.js,这使我觉得它在工作。

时间: 原作者:

52 5

第一个 FWIW,使用文件对象格式方法列出的示例也不适用于我,包括你的最后一个:


//Although this worked for you, this failed for me...


 mine: {


 files: {


 './': ['**/server.js']


 }


 }



让它工作的唯一方法是匹配所有的内容,然后使用Grunt的组合模式negate顶层的目录。

下面的要点演示了适合我的工作,它需要知道/配置你要排除的顶级目录的名称:

目录结构

给定如下所示的目录:


repo


│


├─── dir


│ │


│ └─── unwanted.js


│


├─── foo.js


│


├─── Gruntfile.js


│


├─── node_modules


│ │


│ └───.. .


│


├─── package.json


│


└─── server.js



Gruntfile.js

。和 Gruntfile.js 配置如下:


module.exports = function(grunt) {


 grunt.initConfig({


 sloc: {


 mine: {


 files: {


 '.': [


 '**',//Match everything and add to the results set.



//Explicitly state which directories under the top


//level directory to negate from the results set.


 '!**/node_modules/**',


 '!**/dir/**',



//Files can be negated from the results set too.


 '!**/Gruntfile.js'//


 ]


 }


 }


 }



 });


 grunt.loadNpmTasks('grunt-sloc');


 grunt.registerTask('default', [


 'sloc:mine'


 ]);


};



Sloc结果

正确通过CLI运行 grunt 导致了 grunt-sloc报告统计信息,即和 server.js

根据预期,由于JSON是一个非支持的语言,所以省略了 package.json的统计。

附加说明:

在解释如何从 中排除以开头的模式的情况下,我发现这个帖子的答案是相当有用的。!

原作者:
...