镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

Experiment with storing output timestamps in .tsbuildinfo #46677

Description

Occasionally, TypeScript makes the choice not to write output files in --watch mode if the output is the same as what's on disk; however, this causes complications with --incremental. Under --incremental, --watch still needs to update each output file's timestamps so that a subsequent invocation of tsc --build will avoid rebuilding certain files. See more here: 7b290fd.

One concern with this is that it causes issues with downstream tooling - messing with output files that wouldn't have been rewritten causes issues for tools that want to be more incremental as well. See #46661.

Another concern is that this causes a bunch of file-touching anyway which can potentially be slow. It's not clear whether this is really a bottleneck, but there is some discussion in #45082 around issues here, and it may warrant some investigation.

We should investigate book-keeping with .tsbuildinfo to avoid manually touching timestamps every time.

Activity

  1. jfstephe commented on Nov 9, 2021

    @jfstephe

    Note: A potential further consideration may be around browser caching of the output files. If the modified time of the file changes then browsers may not cache the unchanged file. Just trying to add weight to this really painful issue (for us).

  2. DanielRosenwasser commented on Nov 15, 2021

    @DanielRosenwasser
    MemberAuthor

    Ron Buckton (@rbuckton) try tackling this soon in the 4.6 cycle, loop Jake Bailey (@jakebailey), Andrew Casey (@amcasey), and me in reviews.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Domain: PerformanceReports of unusually slow behaviorDomain: tsc -bIssues related to build modeDomain: tsc: --incrementalThe issue relates to incremental compilationExperimentation NeededSomeone needs to try this out to see what happensFix AvailableA PR has been opened for this issueIn DiscussionNot yet reached consensusRescheduledThis issue was previously scheduled to an earlier milestoneSuggestionAn idea for TypeScript

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions