Sri*_*hti 7 javascript gulp visual-studio-2015
我添加了一个 gulp 任务来删除给定路径中的目录。从数组中读取路径。我的 gulp 任务运行正常并完成所需的工作。Task Runner 资源管理器提供启动任务的消息以及进程成功终止的信息,代码为 0。问题在于它没有说明任务已完成。因此,我依赖于此任务的其他任务无法在构建过程自动化期间执行。
const rmr = require('rmr');
// array containing the list of all paths of the folders to be deleted
const removeFoldersArr = [
{
Path: "wwww/scripts"
},
{
Path: "www/styles"
}
];
// Gulp Task to remove all files in a folder
gulp.task('cleanFolders', function () {
return removeFoldersArr.map(function (folder) {
rmr.sync(folder.Path);
});
});
Run Code Online (Sandbox Code Playgroud)
在 Task Runner Explorer 中,任务开始但没有完成,虽然它以代码 0 终止,如下所示:
cmd.exe /c gulp -b "D:\My Projects\Solution1" --color --gulpfile "D:\My Projects\Solution1\Gulpfile.js" cleanFolders
[18:04:23] Using gulpfile D:\My Projects\Solution1\Gulpfile.js
[18:04:23] Starting 'cleanFolders'...
Process terminated with code 0.
Run Code Online (Sandbox Code Playgroud)
正确的方法是返回一个promise。
给定一个可迭代对象(数组或字符串)或一个可迭代对象的承诺,promise.all 将可迭代对象中的所有值迭代到一个数组中,并返回一个承诺,当数组中的所有项目(是) 实现。
以下是解决方案的代码片段:
gulp.task('cleanFolders', function () {
return Promise.all([
removeFoldersArr.map(function (folder) {
rmr.sync(folder.Path);
})
]);
});
Run Code Online (Sandbox Code Playgroud)
现在,该过程首先完成然后终止。
以下是Task Runner Explorer 中显示的输出:
cmd.exe /c gulp -b "D:\My Projects\Solution1" --color --gulpfile "D:\My Projects\Solution1\Gulpfile.js" cleanFolders
[12:25:01] Using gulpfile D:\My Projects\Solution1\Gulpfile.js
[12:45:01] Starting 'cleanFolders'...
[12:45:01] Finished 'cleanFolders' after 3.18 ms
Process terminated with code 0.
Run Code Online (Sandbox Code Playgroud)