angular-meteor icon indicating copy to clipboard operation
angular-meteor copied to clipboard

"processFilesForTarget" function gets to process .ts files from node_modules

Open iperevozchikov opened this issue 6 years ago • 2 comments

Hi, "angular-compilers" when compiling project processing .ts files from node_modules. It seems that not correct.

Steps to reproduce it:

  1. Get bare project from examples directory
  2. Add new package, which contains .ts file, for example @types/meteor-collection-hooks
  3. Start project via meteor npm start
  4. See errors
> @ start /home/iperevozchikov/Sources/test-pro
> meteor run

[[[[[ ~/Sources/test-pro ]]]]]                

=> Started proxy.                             
[client]: ES2015 modules Compilation: 1038.347ms
node_modules/meteor-typings/1.4/test/test.ts (467, 8): Property '_localStorage' does not exist on type 'typeof Meteor'.
node_modules/meteor-typings/1.4/test/test.ts (468, 8): Property '_localStorage' does not exist on type 'typeof Meteor'.
node_modules/meteor-typings/1.4/test/test.ts (469, 8): Property '_localStorage' does not exist on type 'typeof Meteor'.
node_modules/meteor-typings/1.4/test/test.ts (737, 24): Type '(userId: string) => boolean' has no properties in common with type 'Matcher'.
[client]: TypeScript Files Compilation: 3153.892ms
[client]: HTML Files Compilation: 12.694ms   \
[client]: SCSS Files Compilation: 3.157ms    \
[server]: ES2015 modules Compilation: 555.509ms
node_modules/meteor-typings/1.4/test/test.ts (467, 8): Property '_localStorage' does not exist on type 'typeof Meteor'.
node_modules/meteor-typings/1.4/test/test.ts (468, 8): Property '_localStorage' does not exist on type 'typeof Meteor'.
node_modules/meteor-typings/1.4/test/test.ts (469, 8): Property '_localStorage' does not exist on type 'typeof Meteor'.
node_modules/meteor-typings/1.4/test/test.ts (737, 24): Type '(userId: string) => boolean' has no properties in common with type 'Matcher'.
[server]: TypeScript Files Compilation: 1101.867ms
[server]: HTML Files Compilation: 0.017ms    -
=> Started MongoDB.                           
=> Started your app.                          

=> App running at: http://localhost:3000/

My environment:

  1. meteor 1.6.1
  2. [email protected]

I found that "processFilesForTarget" function exclude only angular based dependencies like rxjs, angular, tsickle, etc. Also was ignored section "exclude" from tsconfig and it's strange undocumented behavior. Because package would need to integrate into the typescript way of compilation, but don't ignore.

iperevozchikov avatar Mar 30 '18 09:03 iperevozchikov

Yes, this is expected behavior which is not well-documented as you said. We added this feature to solve some problems with ES2015 modules which is not bundled for CommonJS, but it causes an ignorance for field exclude in tsconfig.json. This is about external dependency meteor-typescript that we will investigate a solution for this. This post will be updated. Stay tuned!

Thank you for your collaboration!

ardatan avatar Apr 01 '18 14:04 ardatan

Hi @ardatan . I composed the list of errors in my app and it was be next:

  1. node_modules/ng2-material-dropdown/demo/home/components/dropdown-container.ts;
  2. node_modules/meteor-typings/1.4/test/test.ts;
  3. node_modules/ng-lazyload-image/src/lazyload-image.module.ngfactory.ts;
  4. node_modules/sift/test.ts.

Errors above were perfect be grouped into 3 categories:

  1. test
  2. demo
  3. src

If the src category does not look unambiguous, because it may have really important information for your app. But others categories may be excluded without any problem for your app by rules based on detecting demo and tests contents. Also, would be great to enable some custom section in tsconfig.json for the user-based excluding rules, for example

angularTypescript: { 
    exclude: [ 
        "node_modules/**/*/test.ts" 
    ] 
}

iperevozchikov avatar Apr 03 '18 07:04 iperevozchikov