javascript - gulp-typescript 正在编译所有 .ts 文件,而不仅仅是来自特定位置的文件

标签 javascript node.js typescript gulp gulp-typescript

我有一个 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());

关于javascript - gulp-typescript 正在编译所有 .ts 文件,而不仅仅是来自特定位置的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40367239/

相关文章:

javascript - 如何在 NetSuite 上的 "Delete"用户事件期间执行某些操作?

node.js - 在 postgresql 函数中使用 libphonenumber 库

typescript - 防止构造方法拼写错误

javascript - 如何为方法参数中使用的函数回调定义类型(作为任何函数类型,不是通用的)

node.js - Swagger 自定义配置不加载参数

javascript - 将 HTML 字符串(包括样式)转换为 PDF(Electron - React - Typescript)

javascript - 使用每个 Handlebars 模板

javascript - 在 jquery 中显示整个二进制文件

javascript - 通过 "onchildchanged"和 "onchildadded"从 firebase 数据库获取嵌套数据会返回无法识别的内容

node.js - 如何同步运行多个不同的功能