编译TypeScript时,我会生成很多空的JavaScript文件,因为它们的TypeScript对应项只包含接口。目前没有tsc
选项来禁止生成这些文件。我正在使用gulp-tsc
插件进行编译。
是否有插件或其他方法来清理空文件,甚至是更通用的gulp插件,允许我根据其名称和内容删除文件?或者有没有办法在不使用插件的情况下在gulp中执行此操作?
答案 0 :(得分:2)
我认为您可以相对轻松地使用node-glob
来查找gulp
之外的匹配文件,如下所示:
var glob = require('node-glob'),
fs = require('fs);
gulp.task('delete-empty-files', function(cb) {
glob('/path/to/generated/**/*.js', function(err, files) {
files.forEach(function(file) {
if(fs.statSync(file).size === 0) {
fs.unlinkSync(file);
}
});
// make sure the task runs asynchronously!
cb();
});
});
或者,您可以使用gulp-tap
来获得类似的结果,如下所示:
var tap = require('gulp-tap'),
fs = require('fs);
gulp.task('delete-empty-files', function() {
return gulp.src('/path/to/generated/**/*.js')
.pipe(tap(function(file) {
if(file.stat.size === 0) {
fs.unlinkSync(file);
}
});
});
});
他们非常平等,真的。我认为第一个会更快,因为它不会有来自gulp
和vinyl-fs
的额外内容。
您可能能够将{read: false}
选项添加到gulp.src()
以加快速度,但这也可能会导致.stat
被禁用。如果你想尝试一下,你可以这样添加:
return gulp.src('/path/to/files/**/*.js', {read: false}).pipe(...)
答案 1 :(得分:1)
更好的答案是只使用.d.ts扩展名而不是.ts来命名那些接口文件。没有文件以这种方式生成。
答案 2 :(得分:0)
或者,对于遇到类似问题的其他人,gulp-clip-empty-files
解决了这个问题。
从流中删除空文件。这可以防止其他一些错误 像gulp-sass这样的插件可以用来删除占位符。
使用非常简单......
.scss
在此示例中,所有空DataTable
个文件都将被剪切" (在写出之前忽略?)