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

Any plan to support --incremental flag? #249

Open
dharijanto opened this issue Apr 6, 2019 · 11 comments
Open

Any plan to support --incremental flag? #249

dharijanto opened this issue Apr 6, 2019 · 11 comments

Comments

@dharijanto
Copy link

dharijanto commented Apr 6, 2019

Hello,
First off, thanks for this wonderful open source project. I've been regularly using this with browserify :)

Since typescript 3.4 introduced --incremental (see: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html), is there a plan to support the flag on tsify library? Seems it'd be nice not having to recompile everything when the build script is restarted (i.e. computer restart) :)

@cartant
Copy link
Contributor

cartant commented Apr 6, 2019

incremental is a compiler option, so if you specify a project file - i.e. a tsconfig.json file - when you run tsify, you can configure the option in the project file's compilerOptions. tsify will use the options specified in said file.

@ericmorand
Copy link

Can you show an example of usage? It doesn't seem to work when setup this way:

plugin: [
            ['tsify', {
                project: {
                    compilerOptions: {
                        incremental: true
                    }
                }
            }]
        ]

tsBuildInfoFile is not created and the build is not faster than without the incremental flag.

@cartant
Copy link
Contributor

cartant commented May 6, 2019

I guess it doesn't work because tsify passes its own compiler host to TypeScript - to abstract the file system - as the compiled files need to be made available to Browserify via streams.

I don't have time to look into this, ATM, but if it's something you'd be interested in looking into, I can give you some pointers regarding where to start in this codebase.

@ericmorand
Copy link

With great pleasure. I've been digging into source code yesterday and will continue today. I'll let you know if I need help with it.

@cartant
Copy link
Contributor

cartant commented May 7, 2019

Cool, I'll write up some pointers tonight - in about 6 hours or so.

The main thing will be to switch debugging on and checkout the logs - to see if TypeScript is using the compiler host's API to write the intermediate data.

@cartant
Copy link
Contributor

cartant commented May 7, 2019

@ericmorand I'd forgotten that I'd written an outline of the codebase. You should start with that. It's here.

Once you've familiarised yourself with that, this is what I'd do:

  • Create a simple example that works with the incremental flag when using the command line.
  • Get the example working with tsify.
  • Enable debug logging.
  • Look to see if TS attempts to write incremental information to the file system in this call.
  • If it does, look at adding some special case handling of file names to ensure the data is written to the file system.

@ericmorand
Copy link

I finally had the chance to perform a simple test.

I have a simple TS project that consists of two files:

  • index.ts
class Foo {

}

  • tsconfig.json
{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "sourceMap": true,
    "incremental": true,
    "tsBuildInfoFile": ".foo"
  },
  "exclude": [
    "../node_modules"
  ]
}

When I run tsc, I successfully obtain a .foo file which means incremental is working.
When I run npx browserify index.ts -p tsify, I don't get a .foo file which means incrmental is not working.
When I run npx browserify index.ts -p [tsify {incremental: true, tsBuildInfoFile: ".foo"}], I don't get it either.

I continue my investigations.

@ericmorand
Copy link

I also confirm that Host.prototype.writeFile never attemps to write the build info file .foo.

@ericmorand
Copy link

I think the issue is related to:

microsoft/TypeScript#29978

ts-loader guys seems to be stuck at the same point than tsify:

TypeStrong/ts-loader#913

What di you think?

@cartant
Copy link
Contributor

cartant commented May 17, 2019

Yep. Probably worth having a look at - or keeping an eye on - TypeStrong/ts-loader#935 too.

@jleider
Copy link

jleider commented Jul 2, 2019

Looks like there has been some progress made regarding an api: microsoft/TypeScript#31432

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

No branches or pull requests

4 participants