fix(ngcc): use annotateForClosureCompiler option (#36652)
Adds @nocollapse to static properties added by ngcc iff annotateForClosureCompiler is true. The Closure Compiler will collapse static properties into the global namespace. Adding this annotation keeps the properties attached to their respective object, which allows them to be referenced via a class's constructor. The annotation is already added by ngtsc and ngc under the same option, this commit extends the functionality to ngcc. Closes #36618. PR Close #36652
This commit is contained in:
@ -1541,6 +1541,22 @@ runInEachFileSystem(() => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('with Closure Compiler', () => {
|
||||
it('should give closure annotated output with annotateForClosureCompiler: true', () => {
|
||||
fs.writeFile(
|
||||
_('/tsconfig.json'),
|
||||
JSON.stringify({angularCompilerOptions: {annotateForClosureCompiler: true}}));
|
||||
mainNgcc({basePath: '/dist', propertiesToConsider: ['es2015']});
|
||||
const jsContents = fs.readFile(_(`/dist/local-package/index.js`));
|
||||
expect(jsContents).toContain('/** @nocollapse */ \nAppComponent.ɵcmp =');
|
||||
});
|
||||
it('should default to not give closure annotated output', () => {
|
||||
mainNgcc({basePath: '/dist', propertiesToConsider: ['es2015']});
|
||||
const jsContents = fs.readFile(_(`/dist/local-package/index.js`));
|
||||
expect(jsContents).not.toContain('/** @nocollapse */');
|
||||
});
|
||||
});
|
||||
|
||||
describe('with configuration files', () => {
|
||||
it('should process a configured deep-import as an entry-point', () => {
|
||||
loadTestFiles([
|
||||
|
Reference in New Issue
Block a user