我有一个 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
我在这里做错了什么?
tsBotProject.src()
不接受任何参数。您尝试传递它 paths.botScripts
,但该参数被简单地忽略。相反,tsBotProject.src()
会准确发出您在 tsconfig.json
中指定的文件。在您的情况下,这是除了 node_modules
之外的所有内容。
您有两个选择:
选项 1:您可以在 gulpfile.js
中使用 tsBotProject.src()
,如下所示:
var tsResult = tsBotProject.src()
.pipe(tsBotProject());
为了使其正常工作,您还必须向 tsconfig.json
添加一个 include
属性:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs"
},
"include": [
"source/bot/*.ts"
],
"exclude": [
"node_modules"
]
}
选项 2:在 gulpfile.js
中使用 gulp.src()
而不是 tsBotProject.src()
:
var tsResult = gulp.src(paths.botScripts)
.pipe(tsBotProject());
我是一名优秀的程序员,十分优秀!