我有一个gulp任务,负责在给定位置转换.ts文件并在另一个给定位置吐出.js。
我遇到的问题是,在发送到目的地之前,它不仅会从给定位置获取.ts并转换为.js,而且它也会对父级和兄弟级文件夹中的所有内容执行相同的操作。
我的文件夹结构如下:
root
|__dist
|
|__source
| |__bot
| |__logon
这是我的gulpfile.js的简化版本:
var gulp = require("gulp"),
ts = require("gulp-typescript");
var paths = {
botScripts: 'source/bot/*.ts',
releaseBot: 'dist/bot'
};
// Create typescript project
var tsBotProject = ts.createProject('tsconfig.json');
// Create the tasks
gulp.task('botscripts', function() {
var tsResult = tsBotProject.src(paths.botScripts)
.pipe(tsBotProject());
return tsResult.js.pipe(gulp.dest(paths.releaseBot));
});
这是我的tsconfig.json:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs"
},
"exclude": [
"node_modules"
]
}
正如我所说,它确实很好地转换为.js,但我最终得到的是所有的typscript文件,无论位置如何,都转换为.js并复制到同一个文件夹中dist下的结构:
root
|__dist
| |__bot
| | |__*.js
| |__logon
| |__*.js
|
|__source
| |__bot
| |__logon
我在这里做错了什么?
答案 0 :(得分:3)
tsBotProject.src()
不接受任何争论。你试图传递它paths.botScripts
,但这个论点被忽略了。相反,tsBotProject.src()
会精确地发出您在tsconfig.json
中指定的文件。在您的情况下,除node_modules
之外的所有内容。
您有两种选择:
选项1:您可以在tsBotProject.src()
中使用gulpfile.js
,如下所示:
var tsResult = tsBotProject.src()
.pipe(tsBotProject());
为了实现此目的,您还必须向include
添加tsconfig.json
媒体资源:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs"
},
"include": [
"source/bot/*.ts"
],
"exclude": [
"node_modules"
]
}
选项2:在gulp.src()
中使用tsBotProject.src()
代替gulpfile.js
:
var tsResult = gulp.src(paths.botScripts)
.pipe(tsBotProject());