忽略带有Grunt的文件数组

Ignore array of files with Grunt

本文关键字:文件 数组 Grunt      更新时间:2023-09-26

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

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

如何排除此数组中的每个文件而不必为每个文件预先添加!?这种模式似乎对我不起作用:

!jsFiles

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

在Stack Overflow上有很多类似的问题,但据我所见,没有一个问题涉及忽略文件数组。

否定文件数组:

如果你想否定一个文件列表,比如:

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']

如果您想将列表放在包中。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/**/*'