Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 2.11.0 transpiles incredibly slow. #282

Closed
alexanderharm opened this issue Feb 12, 2016 · 16 comments
Closed

Version 2.11.0 transpiles incredibly slow. #282

alexanderharm opened this issue Feb 12, 2016 · 16 comments
Labels

Comments

@alexanderharm
Copy link

Compiling my project increases from 7s (2.10.0) to 17s (2.11.0). In both version I don't see real speed increase using ts.createProject.

@ivogabe
Copy link
Owner

ivogabe commented Feb 13, 2016

It's hard to see why that's happening without more information. The only thing I could think of is the change related to rootDir. Previous versions had a bug that handled the rootDir incorrectly. This has been fixed. Files outside the rootDir are now also passed to the compiler. Could it be that node_modules is now also compiled? And can you share some more information of your project, such as gulpfile, tsconfig and directory structure?

ts.createProject will only speed up compilation during a second run with gulp.watch for instance.

@alexanderharm
Copy link
Author

My tsconfig.json:

{
  "compilerOptions": {
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": true,
    "noImplicitAny": false,
    "module": "system",
    "moduleResolution": "node",
    "rootDir": "src",
    "target": "es5"
  }

  , "exclude": [
    "jspm_packages",
    "node_modules",
    "typings/main.d.ts",
    "typings/main"
  ]
}

My gulpfile

var PATHSTS = {
  src: 'src/**/*.ts'
}
var sourcemaps = require('gulp-sourcemaps')
var ts = require('gulp-typescript')
var tsProject = ts.createProject('tsconfig.json', { typescript: require('typescript') }); // links to 1.7.5

gulp.task('ts2js', function () {

  return tsProject
  .src()
  .pipe(sourcemaps.init())
  .pipe(ts(tsProject))
  .js
  .pipe(sourcemaps.write())
  .pipe(gulp.dest('app'))

})

gulp.task('play', function () {
  var fs = require('fs')
  var http = require('http')
  var connect = require('connect')
  var serveStatic = require('serve-static')
  var open = require('open')

  var port = 9000, app

  gulp.watch(PATHSTS.src, ['ts2js'])

  app = connect().use(serveStatic(__dirname))
  app.use(function (req, res) {
    // redirect 404s to index.html
    fs.readFile(__dirname + '/dist/index.html', function (err, data) {
        if (err) {
            res.writeHead(500)
            return res.end('Error loading index.html')
        }
        res.writeHead(200)
        res.end(data)
    })
  })
  http.createServer(app).listen(port, function () {
      open('http://localhost:' + port, 'Google Chrome')
  })
})

and my directory structure

.
├── app
├── gulpfile.js
├── index.html
├── jspm_packages
├── lib
├── node_modules
├── package.json
├── semantic
├── semantic.json
├── src
├── system.config.js
├── tsconfig.json
├── typings
└── typings.json

@stefankorun
Copy link

+1

My gulp configuration is pretty much the same and I also noticed speed worsening (in the latest version) and no difference when using .createProject('path/to/tsconfig.json') that should do an incremental build (in all versons).

gulp config

var tsProject = typescript.createProject('tsconfig.json', {
  typescript: require('typescript')
});
gulp.task('typescript', function () {
  var tsResult = gulp.src(config.files.ts)
    .pipe(sourcemaps.init())
    .pipe(typescript(tsProject));

  return tsResult.js
    .pipe(sourcemaps.write('./'))
    .pipe(gulp.dest(config.paths.builds.dev));
});

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "noLib": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "sourceMap": true
  },
  "exclude": [
    "node_modules"
  ],
  "compileOnSave": false
}

@brndusic
Copy link

Hi,
something is happening with performances here. I have a huge performance drop from less than 2sec to more than 8sec. I'm trying to find what happend...

@brndusic
Copy link

Found the reason of slow down. I have added bower package "material-design-icons": "~2.2.0" which is very huge 50MB and this caused performance issue.

I haven't still found the way to resolve it because my bower and node packages are excluded in ts config and my task looks like this:

gulp.task("buildTsForDebug", ['copyTemplates'], function () {
var tsResult = tsProject.src()
.pipe(ts(tsProject));
return tsResult.js.pipe(gulp.dest(paths.debug.jsOutDir));
});

Can any one help?

@ivogabe
Copy link
Owner

ivogabe commented Feb 17, 2016

Could this be related to #275?

@brndusic
Copy link

Not sure because issue isn't the same. I don't have the problems with compiling it compiles OK with no dupes, so I can say it is not using files from ignored folders for building but seems like it still opens them or something like that?

@alexanderharm
Copy link
Author

@ivogabe I just ran some more tests on my system, both versions use [email protected], configuration is identical, both output a mere 54 files.

  • 2.10: transpile in 53 seconds, 6153 read/write ops
  • 2.11: transpile in 1.2 minutes, 5576 read/write ops (so actually it opens less files)

they both access more (2.10) or less (2.11) these files:

/node_modules/angular2/core.d.ts
/node_modules/angular2/src/core/metadata.d.ts
/node_modules/angular2/src/core/metadata/di.d.ts
/node_modules/angular2/src/facade/lang.d.ts
/node_modules/angular2/src/core/di/metadata.d.ts
/node_modules/angular2/src/core/metadata/directives.d.ts
/node_modules/angular2/src/core/change_detection.d.ts
/node_modules/angular2/src/core/change_detection/change_detection.d.ts
/node_modules/angular2/src/core/change_detection/differs/iterable_differs.d.ts
/node_modules/angular2/src/core/change_detection/change_detector_ref.d.ts
/node_modules/angular2/src/core/change_detection/interfaces.d.ts
/node_modules/angular2/src/core/change_detection/parser/locals.d.ts
/node_modules/angular2/src/core/change_detection/binding_record.d.ts
/node_modules/angular2/src/core/reflection/types.d.ts
/node_modules/angular2/src/core/change_detection/parser/ast.d.ts
/node_modules/angular2/src/core/change_detection/directive_record.d.ts
/node_modules/angular2/src/core/change_detection/constants.d.ts
/node_modules/angular2/src/core/di.d.ts
/node_modules/angular2/src/core/di/decorators.d.ts
/node_modules/angular2/src/core/di/forward_ref.d.ts
/node_modules/angular2/src/core/di/injector.d.ts
/node_modules/angular2/src/core/di/provider.d.ts
/node_modules/angular2/src/core/di/key.d.ts
/node_modules/angular2/src/core/di/type_literal.d.ts
/node_modules/angular2/src/core/di/exceptions.d.ts
/node_modules/angular2/src/facade/exceptions.d.ts
/node_modules/angular2/src/facade/exception_handler.d.ts
/node_modules/angular2/src/core/di/opaque_token.d.ts
/node_modules/angular2/src/core/change_detection/differs/keyvalue_differs.d.ts
/node_modules/angular2/src/core/change_detection/parser/lexer.d.ts
/node_modules/angular2/src/core/change_detection/parser/parser.d.ts
/node_modules/angular2/src/core/reflection/reflection.d.ts
/node_modules/angular2/src/core/reflection/reflector.d.ts
/node_modules/angular2/src/core/reflection/platform_reflection_capabilities.d.ts
/node_modules/angular2/src/core/change_detection/exceptions.d.ts
/node_modules/angular2/src/core/change_detection/proto_change_detector.d.ts
/node_modules/angular2/src/core/change_detection/event_binding.d.ts
/node_modules/angular2/src/core/change_detection/proto_record.d.ts
/node_modules/angular2/src/core/change_detection/jit_proto_change_detector.d.ts
/node_modules/angular2/src/core/change_detection/dynamic_change_detector.d.ts
/node_modules/angular2/src/core/change_detection/abstract_change_detector.d.ts
/node_modules/angular2/src/core/change_detection/pipes.d.ts
/node_modules/angular2/src/core/change_detection/pipe_transform.d.ts
/node_modules/angular2/src/core/change_detection/change_detection_util.d.ts
/node_modules/angular2/src/core/metadata/view.d.ts
/node_modules/angular2/src/core/util/decorators.d.ts
/node_modules/angular2/src/core/util.d.ts
/node_modules/angular2/src/core/prod_mode.d.ts
/node_modules/angular2/src/facade/facade.d.ts
/node_modules/angular2/src/facade/async.d.ts
/node_modules/angular2/src/facade/promise.d.ts
/node_modules/rxjs/Observable.d.ts
/node_modules/rxjs/Observer.d.ts
/node_modules/rxjs/Operator.d.ts
/node_modules/rxjs/Subscriber.d.ts
/node_modules/rxjs/Subscription.d.ts
/node_modules/rxjs/Scheduler.d.ts
/node_modules/rxjs/scheduler/Action.d.ts
/node_modules/rxjs/CoreOperators.d.ts
/node_modules/rxjs/observable/ConnectableObservable.d.ts
/node_modules/rxjs/Subject.d.ts
/node_modules/rxjs/operator/groupBy-support.d.ts
/node_modules/rxjs/Notification.d.ts
/node_modules/angular2/src/core/application_ref.d.ts
/node_modules/angular2/src/core/zone/ng_zone.d.ts
/node_modules/angular2/src/core/linker/dynamic_component_loader.d.ts
/node_modules/angular2/src/core/linker/compiler.d.ts
/node_modules/angular2/src/core/linker/view_ref.d.ts
/node_modules/angular2/src/core/linker/view.d.ts
/node_modules/angular2/src/core/linker/element.d.ts
/node_modules/angular2/src/core/linker/view_type.d.ts
/node_modules/angular2/src/core/linker/element_ref.d.ts
/node_modules/angular2/src/core/linker/view_container_ref.d.ts
/node_modules/angular2/src/core/linker/template_ref.d.ts
/node_modules/angular2/src/core/linker/query_list.d.ts
/node_modules/angular2/src/core/linker/interfaces.d.ts
/node_modules/angular2/src/core/linker/resolved_metadata_cache.d.ts
/node_modules/angular2/src/core/linker/directive_resolver.d.ts
/node_modules/angular2/src/core/pipes/pipe_provider.d.ts
/node_modules/angular2/src/core/linker/pipe_resolver.d.ts
/node_modules/angular2/src/core/render/api.d.ts
/node_modules/angular2/src/core/pipes/pipes.d.ts
/node_modules/angular2/src/core/linker/view_manager.d.ts
/node_modules/angular2/src/core/application_tokens.d.ts
/node_modules/angular2/src/core/zone.d.ts
/node_modules/angular2/src/core/render.d.ts
/node_modules/angular2/src/core/linker.d.ts
/node_modules/angular2/src/core/linker/view_resolver.d.ts
/node_modules/angular2/src/core/debug/debug_node.d.ts
/node_modules/angular2/src/facade/collection.d.ts
/node_modules/angular2/src/core/testability/testability.d.ts
/node_modules/angular2/src/core/platform_directives_and_pipes.d.ts
/node_modules/angular2/src/core/platform_common_providers.d.ts
/node_modules/angular2/src/core/application_common_providers.d.ts
/node_modules/angular2/router.d.ts
/node_modules/angular2/src/router/router.d.ts
/node_modules/angular2/src/router/route_registry.d.ts
/node_modules/angular2/src/router/route_config_impl.d.ts
/node_modules/angular2/src/router/route_definition.d.ts
/node_modules/angular2/src/router/instruction.d.ts
/node_modules/angular2/src/router/router_outlet.d.ts
/node_modules/angular2/src/router/location.d.ts
/node_modules/angular2/src/router/location_strategy.d.ts
/node_modules/angular2/src/router/platform_location.d.ts
/node_modules/angular2/src/router/router_link.d.ts
/node_modules/angular2/src/router/hash_location_strategy.d.ts
/node_modules/angular2/src/router/path_location_strategy.d.ts
/node_modules/angular2/src/router/route_config_decorator.d.ts
/node_modules/angular2/src/router/interfaces.d.ts
/node_modules/angular2/src/router/lifecycle_annotations.d.ts
/node_modules/angular2/src/router/lifecycle_annotations_impl.d.ts
/node_modules/angular2/src/router/router_providers_common.d.ts
/node_modules/angular2/src/router/router_providers.d.ts
/node_modules/alertifyjs/package.json
/node_modules/angular2/common.d.ts
/node_modules/angular2/src/common/pipes.d.ts
/node_modules/angular2/src/common/pipes/async_pipe.d.ts
/node_modules/angular2/src/common/pipes/uppercase_pipe.d.ts
/node_modules/angular2/src/common/pipes/slice_pipe.d.ts
/node_modules/angular2/src/common/pipes/date_pipe.d.ts
/node_modules/angular2/src/common/pipes/json_pipe.d.ts
/node_modules/angular2/src/common/pipes/lowercase_pipe.d.ts
/node_modules/angular2/src/common/pipes/number_pipe.d.ts
/node_modules/angular2/src/common/directives.d.ts
/node_modules/angular2/src/common/directives/ng_class.d.ts
/node_modules/angular2/src/common/directives/ng_for.d.ts
/node_modules/angular2/src/common/directives/ng_if.d.ts
/node_modules/angular2/src/common/directives/ng_style.d.ts
/node_modules/angular2/src/common/directives/ng_switch.d.ts
/node_modules/angular2/src/common/directives/observable_list_diff.d.ts
/node_modules/angular2/src/common/directives/core_directives.d.ts
/node_modules/angular2/src/common/forms.d.ts
/node_modules/angular2/src/common/forms/model.d.ts
/node_modules/angular2/src/common/forms/directives/abstract_control_directive.d.ts
/node_modules/angular2/src/common/forms/directives/form_interface.d.ts
/node_modules/angular2/src/common/forms/directives/ng_control.d.ts
/node_modules/angular2/src/common/forms/directives/control_value_accessor.d.ts
/node_modules/angular2/src/common/forms/directives/ng_control_group.d.ts
/node_modules/angular2/src/common/forms/directives/control_container.d.ts
/node_modules/angular2/src/common/forms/directives/ng_control_name.d.ts
/node_modules/angular2/src/common/forms/directives/ng_form_control.d.ts
/node_modules/angular2/src/common/forms/directives/ng_model.d.ts
/node_modules/angular2/src/common/forms/directives/ng_form_model.d.ts
/node_modules/angular2/src/common/forms/directives/ng_form.d.ts
/node_modules/angular2/src/common/forms/directives/default_value_accessor.d.ts
/node_modules/angular2/src/common/forms/directives/ng_control_status.d.ts
/node_modules/angular2/src/common/forms/directives/checkbox_value_accessor.d.ts
/node_modules/angular2/src/common/forms/directives/select_control_value_accessor.d.ts
/node_modules/angular2/src/common/forms/directives.d.ts
/node_modules/angular2/src/common/forms/directives/radio_control_value_accessor.d.ts
/node_modules/angular2/src/common/forms/directives/number_value_accessor.d.ts
/node_modules/angular2/src/common/forms/directives/validators.d.ts
/node_modules/angular2/src/common/forms/validators.d.ts
/node_modules/angular2/src/common/forms/form_builder.d.ts
/node_modules/angular2/src/common/common_directives.d.ts
/node_modules/immutable/package.json
/node_modules/redux/package.json
/node_modules/redux-thunk/package.json
/node_modules/redux-logger/package.json
/node_modules/redux-immutable/package.json
/node_modules/immutable/package.json
/node_modules/pouchdb/package.json
/node_modules/rxjs/package.json
/node_modules/rxjs/Rx.d.ts
/node_modules/rxjs/subject/AsyncSubject.d.ts
/node_modules/rxjs/subject/ReplaySubject.d.ts
/node_modules/rxjs/subject/BehaviorSubject.d.ts
/node_modules/rxjs/util/EmptyError.d.ts
/node_modules/rxjs/util/ArgumentOutOfRangeError.d.ts
/node_modules/rxjs/util/ObjectUnsubscribedError.d.ts
/node_modules/rxjs/scheduler/AsapScheduler.d.ts
/node_modules/rxjs/scheduler/QueueScheduler.d.ts
/node_modules/rxjs/scheduler/QueueAction.d.ts
/node_modules/immutable/package.json
/node_modules/immutable/package.json
/node_modules/immutable/package.json
/node_modules/pouchdb/package.json
/node_modules/immutable/package.json
/node_modules/immutable/package.json
/node_modules/immutable/package.json
/node_modules/immutable/package.json
/node_modules/immutable/package.json
/node_modules/immutable/package.json
/node_modules/immutable/package.json
/node_modules/immutable/package.json
/node_modules/immutable/package.json
/node_modules/immutable/package.json
/node_modules/pouchdb/package.json
/node_modules/angular2/animate.d.ts
/node_modules/angular2/src/animate/animation.d.ts
/node_modules/angular2/src/animate/browser_details.d.ts
/node_modules/angular2/src/animate/css_animation_options.d.ts
/node_modules/angular2/src/animate/animation_builder.d.ts
/node_modules/angular2/src/animate/css_animation_builder.d.ts
/node_modules/angular2/platform/browser.d.ts
/node_modules/angular2/src/core/angular_entrypoint.d.ts
/node_modules/angular2/src/platform/browser_common.d.ts
/node_modules/angular2/src/platform/dom/dom_tokens.d.ts
/node_modules/angular2/src/platform/browser/title.d.ts
/node_modules/angular2/platform/common_dom.d.ts
/node_modules/angular2/src/platform/dom/dom_adapter.d.ts
/node_modules/angular2/src/platform/dom/dom_renderer.d.ts
/node_modules/angular2/src/platform/dom/shared_styles_host.d.ts
/node_modules/angular2/src/platform/dom/events/event_manager.d.ts
/node_modules/angular2/src/platform/dom/events/dom_events.d.ts
/node_modules/angular2/src/platform/dom/debug/by.d.ts
/node_modules/angular2/src/platform/dom/debug/ng_probe.d.ts
/node_modules/angular2/src/platform/browser/browser_adapter.d.ts
/node_modules/angular2/src/platform/browser/generic_browser_adapter.d.ts
/node_modules/angular2/src/platform/browser/tools/tools.d.ts
/node_modules/rxjs/add/operator/debounceTime.d.ts
/node_modules/rxjs/add/operator/distinctUntilChanged.d.ts
/node_modules/alertifyjs/package.json
/node_modules/angular2/typings/browser.d.ts
/node_modules/angular2/typings/es6-collections/es6-collections.d.ts
/node_modules/angular2/typings/es6-promise/es6-promise.d.ts
/node_modules/immutable/package.json
/node_modules/rxjs/add/operator/publish.d.ts
/node_modules/rxjs/add/operator/publishReplay.d.ts
/node_modules/rxjs/package.json
/node_modules/typescript/lib/lib.es6.d.ts

they both do not access the typings folder

@bsommardahl
Copy link

I believe this is closely connected with #275. In the end, my ts compiles as expected, properly excluding all the right files/folders. BUT, I'll bet the tsproject.src() is ignoring the exclude and reading everything in. Without having looked at the code, it feels like that's the source of the performance drop.

Here's my super simple tsconfig.json file:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6"                
    },
    "exclude": [
        "node_modules",
        "typings/browser.d.ts",
        "typings/browser"   
    ]
}

And my gulp task:

gulp.task('compile', ['clean-build', 'copy-features'],function(){
    var tsProject = ts.createProject('tsconfig.json');
    var tsResult = tsProject.src()
        .pipe(ts(tsProject));

    return tsResult.js.pipe(gulp.dest('build/'));        
});

@bsommardahl
Copy link

I'm testing some things and I think I confirmed at least part of my hypothesis about tsProject.src() being the culprit. Here's my new gulp task (using node-duration to help with profiling):

gulp.task('compile', ['clean-build', 'copy-features'],function(){
    var tsProject = ts.createProject('tsconfig.json');

    var compilePipeline = tsProject.src()
        .pipe(duration('src finished. Getting js...'))
        .pipe(ts(tsProject)).js
        .pipe(duration('js finished. Copying files...'))
        .pipe(gulp.dest('build/'))
        .pipe(duration('Copy finished.'));

    return compilePipeline;        
});

Console output:

[08:39:05] Starting 'compile'...
[gulp] src finished. Getting js...: 6.36 s
[gulp] js finished. Copying files...: 7.26 s
[gulp] Copy finished.: 7.27 s
[08:39:12] Finished 'compile' after 7.29 s

The .src() takes 6.36 seconds when it should really take less than a second (I currently have 4 ts files total). Here is the code that should exclude the extra files:

files = files.concat(
-- But I suspect this is not working as expected.

@ivogabe
Copy link
Owner

ivogabe commented Feb 18, 2016

Thanks for the measurements everyone. I think I know what's going on. What happens when you replace tsProject.src() with gulp.src('lib/**/*.ts') (adjust this so it fits your project structure)? Does that give the old compilation time?

@bsommardahl
Copy link

Absolutely! Back to sub-second compile.

@ivogabe ivogabe added the Bug label Feb 24, 2016
@ChrisGrigg
Copy link

+1

@ivogabe
Copy link
Owner

ivogabe commented Apr 1, 2016

I might have some more pointers what the cause might be. Can someone post his list of dependencies, profile gulp using 0x and post results here?

npm install 0x -g
0x node_modules/.bin/gulp taskname

@alexanderharm
Copy link
Author

Here is mine:
package.json:

{
  "name": "xxx",
  "version": "1.0.0-alpha.1",
  "description": "xxx",
  "homepage": "xxx",
  "devDependencies": {
    "babel-plugin-transform-es2015-modules-systemjs": "^6.6.5",
    "babel-preset-es2015": "^6.6.0",
    "browser-sync": "^2.11.2",
    "connect": "^3.4.0",
    "del": "^2.2.0",
    "gulp": "^3.9.0",
    "gulp-babel": "^6.1.2",
    "gulp-changed": "^1.3.0",
    "gulp-sourcemaps": "^1.6.0",
    "gulp-typescript": "^2.12.1",
    "jspm": "^0.16.32",
    "open": "0.0.5",
    "semantic-ui": "^2.1.8",
    "serve-static": "^1.10.0",
    "typescript": "^1.8.9"
  },
  "dependencies": {
    "ag-grid": "^4.0.5",
    "ag-grid-enterprise": "^4.0.7",
    "ag-grid-ng2": "^4.0.2",
    "alertifyjs": "^1.6.1",
    "angular2": "^2.0.0-beta.8",
    "babel-polyfill": "^6.7.4",
    "core-js": "^2.2.0",
    "es6-shim": "^0.35.0",
    "fuse.js": "^2.2.0",
    "google-libphonenumber": "^1.0.15",
    "immutable": "^3.7.6",
    "jsnlog": "^2.17.0",
    "pouchdb": "^5.2.1",
    "pouchdb-authentication": "^0.4.3",
    "pouchdb-load": "^1.4.3",
    "redux": "^3.3.1",
    "redux-immutable": "^3.0.6",
    "redux-logger": "^2.6.1",
    "redux-thunk": "^2.0.1",
    "reflect-metadata": "0.1.2",
    "rxjs": "5.0.0-beta.2",
    "sortablejs": "^1.4.2",
    "systemjs": "^0.19.25"
  },
  "jspm": {
    "configFile": "system.config.js",
    "dependencies": {
      "ag-grid": "npm:ag-grid@^4.0.0",
      "ag-grid-enterprise": "npm:ag-grid-enterprise@^4.0.4",
      "ag-grid-ng2": "npm:ag-grid-ng2@^4.0.2",
      "alertifyjs": "npm:alertifyjs@^1.6.1",
      "angular2": "npm:angular2@^2.0.0-beta.12",
      "crypto-pouch": "npm:crypto-pouch@^1.2.1",
      "fuse.js": "npm:fuse.js@^2.0.0",
      "google-libphonenumber": "npm:google-libphonenumber@^1.0.15",
      "immutable": "npm:immutable@^3.7.6",
      "redux": "npm:redux@^3.3.1",
      "redux-immutable": "npm:redux-immutable@^3.0.3",
      "redux-logger": "npm:redux-logger@^2.5.0",
      "redux-thunk": "npm:redux-thunk@^2.0.1",
      "rxjs": "npm:[email protected]",
      "sortablejs": "npm:sortablejs@^1.4.2",
      "zone.js": "npm:zone.js@^0.6.5"
    },
    "devDependencies": {}
  }
}

0x using gulp.src(): profile-47686.zip
0x using tsProject.src(): profile-47784.zip

https://drive.google.com/folderview?id=0B5rL7ccxYIB7NnpOQ1BsNHc5bEU&usp=sharing

@ivogabe ivogabe closed this as completed in e023346 Apr 2, 2016
@ivogabe
Copy link
Owner

ivogabe commented Apr 2, 2016

Thanks everyone! I think I have fixed the issue. The problem was that glob was really slow for globs like !node_modules/**/*. Even when node_modules was ignored this way, it would still traverse the whole directory (and afterwards it would filter out all files). !node_modules/** does skip the whole directory, which gives good performance.

Can everyone check whether this has fixed the issue? You can download gulp-typescript here from GitHub and place it into your node_modules directory.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants