This commit adds the basic building blocks for linking partial declarations.
In particular it provides a generic `FileLinker` class that delegates to
a set of (not yet implemented) `PartialLinker` classes.
The Babel plugin makes use of this `FileLinker` providing concrete classes
for `AstHost` and `AstFactory` that work with Babel AST. It can be created
with the following code:
```ts
const plugin = createEs2015LinkerPlugin({ /* options */ });
```
PR Close #39116
		
	
			
		
			
				
	
	
		
			19 lines
		
	
	
		
			863 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			19 lines
		
	
	
		
			863 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Angular Linker
 | |
| 
 | |
| This package contains a `FileLinker` and supporting code to be able to "link" partial declarations of components, directives, etc in libraries to produce the full definitions.
 | |
| 
 | |
| The partial declaration format allows library packages to be published to npm without exposing the underlying Ivy instructions.
 | |
| 
 | |
| The tooling here allows application build tools (e.g. CLI) to produce fully compiled components, directives, etc at the point when the application is bundled.
 | |
| These linked files can be cached outside `node_modules` so it does not suffer from problems of mutating packages in `node_modules`.
 | |
| 
 | |
| Generally this tooling will be wrapped in a transpiler specific plugin, such as the provided [Babel plugin](./babel).
 | |
| 
 | |
| ## Unit Testing
 | |
| 
 | |
| The unit tests are built and run using Bazel:
 | |
| 
 | |
| ```bash
 | |
| yarn bazel test //packages/compiler-cli/linker/test
 | |
| ```
 |