ivogabe / gulp-typescript

A TypeScript compiler for gulp with incremental compilation support.
MIT License
839 stars 129 forks source link

Invalid glob argument when trying to compile TypeScript code #593

Closed bennycode closed 6 years ago

bennycode commented 6 years ago

Expected behavior:

Transpiled TypeScript files

Actual behavior:

It complains about tsProject.src():

Error: Invalid glob argument: [object Object] at Gulp.src (D:\dev\projects\bennyn\mondlandung\node_modules\vinyl-fs\lib\src\index.js:20:11) at Gulp.gulp.task (D:\dev\projects\bennyn\mondlandung\gulpfile.js:46:25) at module.exports (D:\dev\projects\bennyn\mondlandung\node_modules\orchestrator\lib\runTask.js:34:7) at Gulp.Orchestrator._runTask (D:\dev\projects\bennyn\mondlandung\node_modules\orchestrator\index.js:273:3) at Gulp.Orchestrator._runStep (D:\dev\projects\bennyn\mondlandung\node_modules\orchestrator\index.js:214:10) at D:\dev\projects\bennyn\mondlandung\node_modules\orchestrator\index.js:279:18 at finish (D:\dev\projects\bennyn\mondlandung\node_modules\orchestrator\lib\runTask.js:21:8) at module.exports (D:\dev\projects\bennyn\mondlandung\node_modules\orchestrator\lib\runTask.js:60:3) at Gulp.Orchestrator._runTask (D:\dev\projects\bennyn\mondlandung\node_modules\orchestrator\index.js:273:3) at Gulp.Orchestrator._runStep (D:\dev\projects\bennyn\mondlandung\node_modules\orchestrator\index.js:214:10)

Your gulpfile:

gulp.task('build:backend', () => {
  const tsConfig = require('./tsconfig.json');
  const outDir = tsConfig.compilerOptions.outDir;

  const tsProject = ts.createProject('tsconfig.backend.json');
  const tsResult = gulp.src(tsProject.src())
    .pipe(tsProject());

  return tsResult.js.pipe(gulp.dest(outDir));
});

tsconfig.backend.json

{
  "exclude": ["dist", "node_modules", "src/frontend"],
  "extends": "./tsconfig.json"
}

tsconfig.json

{
  "compilerOptions": {
    "declaration": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "jsx": "react",
    "lib": ["dom", "es7"],
    "module": "commonjs",
    "moduleResolution": "node",
    "noEmitOnError": true,
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "outDir": "dist",
    "rootDir": "src",
    "sourceMap": true,
    "strict": true,
    "target": "es6"
  },
  "exclude": ["dist", "node_modules"]
}

Tested with:

bennycode commented 6 years ago

The problem was to do gulp.src(tsProject.src()). Correct solution is just to use tsProject.src():

gulp.task('build:backend', () => {
  const tsConfig = require('./tsconfig.json');
  const tsProject = ts.createProject('tsconfig.backend.json');
  return tsProject
    .src()
    .pipe(tsProject())
    .js.pipe(gulp.dest(tsConfig.compilerOptions.outDir));
});