在Grunt.js中使用干净或清空任务删除空文件夹

时间:2014-05-14 17:57:43

标签: javascript gruntjs grunt-cli

我正在尝试创建一个Grunt任务来清理所有文件,子目录及其文件等的目录。

我可以删除所有文件,但文件夹始终保留。

 clean: {
        preview: ["live_preview>/**/*"],
        dist: ["dist/**/*"]
    },
    cleanempty: {
        options: {
            folders: true
        },
        src: ['live_preview/**', 'tmp/**']
    },

我正在尝试清空live_preview文件夹。我尝试了几种通配符组合。更令人费解的是,-v的终端输出使它看起来好像有效,但空文件夹仍在那里。

Verifying property cleanempty.src exists in config...OK
Files: live_preview, live_preview/fonts, live_preview/images, live_preview/partials,      live_preview/partials/elements, live_preview/scripts, live_preview/scripts/data, live_preview/styles, live_preview/views, tmp, tmp/styles, tmp/styles/live_preview.css, tmp/styles/live_preview.css.map, tmp/styles/theme.css, tmp/styles/theme.css.map -> src
Options: folders
Options: files, folders, force=false, no-write=false
Options: files, folders, force=false, no-write=false
Cleaning live_preview/views...Deleting live_preview/views...OK
OK
Cleaning live_preview/styles...Deleting live_preview/styles...OK
OK
Cleaning live_preview/scripts/data...Deleting live_preview/scripts/data...OK
OK
Cleaning live_preview/partials/elements...Deleting live_preview/partials/elements...OK
OK
Cleaning live_preview/images...Deleting live_preview/images...OK
OK
Cleaning live_preview/fonts...Deleting live_preview/fonts...OK
OK

Done, without errors.

2 个答案:

答案 0 :(得分:1)

我使用Grunt任务清理临时目录,并在运行任务时删除整个文件夹。我假设您使用相同的插件,但只是为了确保:https://github.com/gruntjs/grunt-contrib-clean

以下是我的设置的简化版本:

clean: {
    tests: ['testXmls'] // testXmls is a directory in the top level of my app
}

grunt.registerTask('clean-tests', ['clean:tests']);

当我运行grunt clean-tests时,testXmls目录被删除了所有内容。

我认为您的问题是您在目录路径中使用通配符来告诉grunt删除live_preview的所有子目录。如果您希望删除顶级目录,那么只需使用它。内部包含的所有文件和目录将以递归方式删除。想想rm -rf

尝试:

clean: {
    preview: ["live_preview"],
    dist: ["dist"]
}

另外,在您的终端中,当您看到:

Deleting live_preview/styles

这只是意味着它删除了样式目录 - 它为你提供了/ styles和live_preview的完整路径,这就是你看到它的原因 - 那里&#39 ; s什么都没有表明live_preview本身被删除。所以输出实际上是正确的。

答案 1 :(得分:0)

由于存在folders选项,您似乎正在使用grunt-cleanempty包。如果是这样,那么问题在于您已将其配置嵌套在clean任务中,并且它在顶层属于它自己。您在此处创建的是clean的子任务,其中包含folders选项,但它并不了解。当您grunt clean时,子任务正在运行,并且src中指定的子文件夹将被删除。

如果您没有使用grunt-cleanempty套餐......您可能应该: - )

Link to grunt-cleanempty