无法删除当前工作目录之外的文件 Grunt

4
我正在使用grunt来构建我的angular项目。一开始它很好用,但是在某个时候我不能再运行'grunt serve'或者'grunt build'了。每次我都会得到以下错误信息:

无法删除当前工作目录之外的文件

奇怪的是,只有我遇到了这个错误。我的所有同事都可以正常构建或服务。当然,我找到了解决方法(使用'--force'选项),但我认为这不可能是解决方案,因为只有我遇到了这个错误。请问有谁能给我解释一下这个错误,并且给我一个更好的解决方案而不是强制选项吗?
// Empties folders to start fresh
    clean: {
      dist: {
        files: [{
          dot: true,
          src: [
            '.tmp',
            '<%= yeoman.dist %>/{,*/}*',
            '!<%= yeoman.dist %>/.git{,*/}*'
          ]
        }]
      },
      server: '.tmp'
    }, 

使用--force不应该处理删除操作,它只会继续进行其他任务。你能确认一下吗? 另外,你在使用什么Grunt插件进行删除操作?你能提供你的Gruntfile代码吗? - Sebastien Daniel
是的,没错。我将编辑我的帖子,展示grunt clean任务。然而,这只是基本的Yeoman代码,没有任何更改。 - threxx
你能否使用“-verbose”选项运行任务,并在此处转储控制台日志。谢谢。 - Sebastien Daniel
OSX最新版。一分钟后将粘贴代码。 - threxx
@SebastienDaniel http://pastebin.com/jsRGXh3V - threxx
显示剩余2条评论
3个回答

5
对于好奇的人来说,这可能是由于 https://github.com/gruntjs/grunt/issues/1469 引起的。
该问题在node 5.7中是新问题,我打赌@threxx正在使用它,而她的同事仍在使用5.6或更早版本。
在该问题的PR合并之前,force标志是一个很好的解决方法。

3

我将Gruntfile.js进行了编辑,具体如下:

// Empties folders to start fresh
clean: {
  options: {
    force: true
  },
  dist: {
    files: [{
      dot: true,
      src: [
        '.tmp',
        '<%= yeoman.dist %>/{,*/}*',
        '!<%= yeoman.dist %>/.git{,*/}*'
      ]
    }]
  },
  server: '.tmp'
},

1
显然,您需要使用任务的force选项(而不是grunt的--force选项)来允许grunt-contrib-clean删除cwd外的文件。现在,在您测试之前,我建议您在测试环境中尝试它,因为与许多grunt任务不同,grunt-contrib-clean是破坏性的,您已被警告。
clean: {
  dist: {
    files: [{
      dot: true,
->    force: true,
      src: [
        '.tmp',
        '<%= yeoman.dist %>/{,*/}*',
        '!<%= yeoman.dist %>/.git{,*/}*'
      ]
    }]
  },
  server: '.tmp'
}, 

那应该可以解决你遇到的错误。

3
那种方法对我没有用,所以我在 "clean" 的左括号后面加上 "options: {force: true}"。 - Yash Vekaria

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接