使用Grunt忽略文件数组

时间:2016-07-18 03:04:51

标签: javascript arrays gruntjs grunt-contrib-concat

如果我的Gruntfile中有一个文件数组,如下所示:

var jsFiles = [
  'src/js/abc.js',
  'src/js/def.js'
]

如何排除此数组中的每个文件而不必在每个文件前加!?这种模式对我来说似乎不起作用:

!jsFiles

我也希望能够!<%= project.jsFiles %> <%= project.jsFiles %>是一个文件数组。

在Stack Overflow上有很多类似的问题,但是从我看到的内容中没有一个解决忽略文件数组的问题。

1 个答案:

答案 0 :(得分:0)

取消文件数组:

如果您想要否定文件列表,请执行以下操作:

var jsFiles = [
  'src/js/abc.js',
  'src/js/def.js'
];

您可以创建一个函数来添加“!”:

function addErase(jsFiles){
  var arr = [];
  jsFiles.forEach(function(element){
    arr.push("!" + element);
  });
  return arr;
}

然后你可以转换你的数组:

var jsFileErase = addErase(jsFiles);
//   ['!src/js/abc.js',
//   '!src/js/abc.js']

如果您想将列表放在package.json中:

的package.json:

{
  "name": "foo",
  "version": "0.0.1",
  "jsFiles":[
    'src/js/abc.js',
    'src/js/def.js'
  ],
  ...

在Gruntfile.js中:

var project = require('./package.json');
var jsFiles = project.jsFiles;

然后你可以使用addErase函数

否定所有文件

取消文件夹中的所有元素:

如果要取消文件夹中的所有元素,则需要输入“!”在路径之前和路径末尾的“/ ** / *”:

示例:

var jsFile = '!src/js/**/*'