Unsupported private class error doesn't throw on building library for production #17518
Copy link
Copy link
Open
Labels
area: @schematics/angularfreq1: lowOnly reported by a handful of users who observe it rarelyOnly reported by a handful of users who observe it rarelyseverity3: brokentype: bug/fix
Milestone
Description
🐞 Bug report
Command (mark with an x)
- new
- build
- serve
- test
- e2e
- generate
- add
- update
- lint
- xi18n
- run
- config
- help
- version
- doc
Is this a regression?
i'm not sure
Description
when i export a component in the library module but not in the public API
the build command throw errors only in normal mode, but in production mode it completes successfully
🔬 Minimal Reproduction
clone https://github.com/robertIsaac/test-library
and run ng b and ng b --prod
or generate from scratch
ng new test-library --create-application=false
cd test-library
ng generate library test-library
ng g c test-export --export
ng b
ng b --prod
🔥 Exception or Error
both commands should throw the following error
Unsupported private class TestExportComponent. This class is visible to consumers via TestLibraryModule -> TestExportComponent, but is not exported from the top-level library entrypoint.
🌍 Your Environment
$ ng version
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/
Angular CLI: 9.1.1
Node: 12.14.1
OS: win32 x64
Angular: 9.1.2
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Ivy Workspace: Yes
Package Version
------------------------------------------------------------
@angular-devkit/architect 0.901.1
@angular-devkit/build-angular 0.901.1
@angular-devkit/build-ng-packagr 0.901.1
@angular-devkit/build-optimizer 0.901.1
@angular-devkit/build-webpack 0.901.1
@angular-devkit/core 9.1.1
@angular-devkit/schematics 9.1.1
@angular/cli 9.1.1
@ngtools/webpack 9.1.1
@schematics/angular 9.1.1
@schematics/update 0.901.1
ng-packagr 9.1.1
rxjs 6.5.5
typescript 3.8.3
webpack 4.42.0
Anything else relevant?
it would be nice if --export command also update the public api file if it's running inside a library
Reacted by Daniel Kimmich, Hadrien TOMA, nhhockeyplayer and Andrew Cunliffe
Metadata
Metadata
Assignees
Labels
area: @schematics/angularfreq1: lowOnly reported by a handful of users who observe it rarelyOnly reported by a handful of users who observe it rarelyseverity3: brokentype: bug/fix
Activity
[-]Unsupported private class doesn't throw on building library for production[/-][+]Unsupported private class error doesn't throw on building library for production[/+]alan-agius4 commentedon Apr 21, 2020
@robertIsaac, the problem here is that the above is only an error when using Ivy rendering engine, with View Engine which is used for production builds, this is valid.
That said, we should add the export to the public api when using the schematics so that we generate valid code for both rendering engines.
SvenBudak commentedon Feb 4, 2022
Any news?`i sitll have this issue on a new generated project with angular version 13.1.0
alan-agius4 commentedon Jul 4, 2022
SvenBudak commentedon Jul 4, 2022
alan-agius4 commentedon Jul 4, 2022
Amit221060 commentedon Oct 6, 2023
Do we need to add all exports in public.api.ts or any other work around after angular 12.