Gulp 如何有条件地删除生成的javascript文件?

Gulp 如何有条件地删除生成的javascript文件?,gulp,Gulp,我正在使用Intellij,默认情况下,Intellij将typescript文件传输到与typescript源相同的目录中的js文件中(因此传输foo.ts会生成foo.js)。然而,我也有一些javascript文件,它们是我不想无意中删除的源文件(不是从typescript生成的) 示例: someDir\foo.ts // original ts source file someDir\foo.js // generated by inte

我正在使用Intellij,默认情况下,Intellij将typescript文件传输到与typescript源相同的目录中的js文件中(因此传输foo.ts会生成foo.js)。然而,我也有一些javascript文件,它们是我不想无意中删除的源文件(不是从typescript生成的)

示例

   someDir\foo.ts          // original ts source file
   someDir\foo.js          // generated by intellij tsc compile, should be deleted
   someDir\bar.js          // original js sourcefile, should NOTbe deleted!
问题
我想删除所有具有匹配**/*.ts文件的**/*.js文件-在上面的示例中,我想删除foo.js(因为它具有相应的foo.ts),但不删除bar.js。是否有一些gulp.src模式可以用来指定“所有具有匹配**/*.ts文件的**/*.js文件”?如果是这样,我可以将结果src流通过管道传输到del

谢谢,
布拉德

p、 我知道我可以做一些高级Intellij typescript配置来移动生成的js文件的位置,但我更愿意在默认位置使用它们。另一种解决方法是在源代码流中显式排除“source js”文件(使用!),但我更愿意使用模式,因为它不那么脆弱。

这应该可以:

var gulp = require('gulp');
var del = require('del');
var glob = require('glob');

var filter = function(file) {
    return file.replace(/.ts$/, '.js');
};

gulp.task('default', function() {
    return glob('./app/**/*.ts', function(err, files) {
        del(files.map(filter));
    })
});
基本上,您可以使用
glob
获取所有
.ts
文件,当您拥有这些文件时,将生成的数组映射到筛选函数。此函数将文件末尾出现的所有
.ts
替换为
.js
,您将得到一个新数组,并返回这些条目。最后,将新的glob传递给
del

这应该可以:

var gulp = require('gulp');
var del = require('del');
var glob = require('glob');

var filter = function(file) {
    return file.replace(/.ts$/, '.js');
};

gulp.task('default', function() {
    return glob('./app/**/*.ts', function(err, files) {
        del(files.map(filter));
    })
});

基本上,您可以使用
glob
获取所有
.ts
文件,当您拥有这些文件时,将生成的数组映射到筛选函数。此函数将文件末尾出现的所有
.ts
替换为
.js
,您将得到一个新数组,并返回这些条目。最后,将新的globs传递给
del

我已经用批处理文件解决了这个问题。这是我的方法:

删除传输的.bat


我用批处理文件解决了这个问题。这是我的方法:

删除传输的.bat

不客气:-)如果它被证明是正确的,请为将来偶然发现它的人将我的答案标记为正确:-)不客气:-)如果它被证明是正确的,请为将来偶然发现它的人将我的答案标记为正确:-)