feat(ngcc): support for new APF where module
points to esm2015 output (#36944)
As of version 10, libraries following the APF will no longer contain ESM5 output. Hence, tests in ngcc need to be updated as they currently rely on the release output of `@angular/core`. Additionally, we'd need to support in ngcc that the `module` property of entry-points no longer necessarily refers to `esm5` output, but instead can also target `esm2015`. We currently achieve this by checking the path the `module` property points to. We can do this because as per APF, the folder name is known for the esm2015 output. Long-term for more coverage, we want to sniff the format by looking for known ES2015 constructs in the file `module` refers to. PR Close #36944
This commit is contained in:

committed by
Alex Rickabaugh

parent
d5293d2aa3
commit
c98a4d6ddd
@ -33,7 +33,28 @@ export function compileIntoFlatEs5Package(pkgName: string, sources: PackageSourc
|
||||
compileIntoFlatPackage(pkgName, sources, {
|
||||
target: ts.ScriptTarget.ES5,
|
||||
module: ts.ModuleKind.ESNext,
|
||||
formatProperty: 'module',
|
||||
formatProperty: 'esm5',
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Instead of writing packaged code by hand, and manually describing the layout of the package,
|
||||
* this function transpiles the TypeScript sources into a flat file structure using the ES2015
|
||||
* format. In this package layout, all compiled sources are at the root of the package, with
|
||||
* `.d.ts` files next to the `.js` files. Each `.js` also has a corresponding `.metadata.js`
|
||||
* file alongside with it.
|
||||
*
|
||||
* All generated code is written into the `node_modules` in the top-level filesystem, ready for use
|
||||
* in testing ngcc.
|
||||
*
|
||||
* @param pkgName The name of the package to compile.
|
||||
* @param sources The TypeScript sources to compile.
|
||||
*/
|
||||
export function compileIntoFlatEs2015Package(pkgName: string, sources: PackageSources): void {
|
||||
compileIntoFlatPackage(pkgName, sources, {
|
||||
target: ts.ScriptTarget.ES2015,
|
||||
module: ts.ModuleKind.ESNext,
|
||||
formatProperty: 'esm2015',
|
||||
});
|
||||
}
|
||||
|
||||
@ -184,7 +205,7 @@ export function compileIntoApf(
|
||||
version: '0.0.1',
|
||||
esm5: './esm5/index.js',
|
||||
esm2015: './esm2015/index.js',
|
||||
module: './esm5/index.js',
|
||||
module: './esm2015/index.js',
|
||||
typings: './index.d.ts',
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user