npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

incremental-typescript

v3.3.1-1

Published

Incremental TypeScript compiler

Downloads

12

Readme

npm version

Incremental Typescript

This tool allows you make something like "incremental" compilations. For example, if you change only 1 file, you don't need to rebuild the whole project to compile only changed file. Yeah, you can use "watch" mode for that, but sometimes you cannot (or don't want) to use it due some reasons:

  • RAM usage of tsc --watch (for one project where I'm working on it used ~800MB-1GB)
  • If you change files time to time - you won't to have tsc to be run to monitor changes all time
  • (place your reason here)

In my local tests with only 1 changed file (of 2k+ files in total) I got the following results:

  • tsc takes ~45 seconds
  • tsci takes ~5 seconds (~10x faster)

But result of tsci depends on what file you've changed and how many dependencies this files has (with transitive dependencies).

So, sometimes it can be very useful tool to compile part of your project.

It is drop-in replacement for tsc - everywhere you used tsc you can use tsci. All you need to do - just replace tsc with tsci.

How it works

This tool is built on top of tsc from npm - tsci.js is tsc.js from typescript package, but with removed top part with compiler part, which it takes from typescript package. So the tool will use your version of the typescript package.

The tool takes files which tsc want to compile and removed files which aren't changed against their output file. Also, if you have enabled declaration compiler option, and TypeScript tries resolves .ts file the tool checks if there is corresponding to this file .d.ts file with newest last modified date, and if it exists, resolves .d.ts instead. So, we don't compile unchanged files (only loads their declaration files). That's it.

This algorithm is quite similar to how TypeScript's build mode works. But:

  1. We can say that the tool "marks each file as separate composite project" (actually it doesn't, but the behavior is very similar).
  2. It doesn't follow upstream modules to mark they as "dirty" (or "should-be-compiled"), because for that we need to store dependencies tree somewhere (maybe for now, and in the future we'll fix it).

Known restrictions

  1. It doesn't work with outDir compiler option.

    There is a chicken and egg problem: to get output path for some file we need to have created program, but to create the program we need to have list of files.

    (but it seems that it can be fixed via setting rootDir compiler option in the same way as tsbuild)

Versioning

The version of the package is the same as version of the base compiler.

For example, 3.2.2-0 version of incremental-typescript means that the tool is built on top of 3.2.2 TypeScript.