I have upgraded an Angular library to Angular 9. However when I attempt to use that library in another Angular 9 project I get an error like this:
The target entry-poi
I think I have just worked through the situation you describe. I have an NPM package called my-pkg
that contains several "libraries" (created with ng g library lib[1..N]
, etc). It just so happens that my libN
depends on lib1
. When I try to use libN
in an application, I get the error:
The target entry-point "my-pkg/libN" has missing dependencies:
- lib1
Here is how I originally imported lib1
into libN
:
// libN.component.ts
import { Lib1Comp } from 'lib1';
This works when I build my-pkg
. The problem is that 'lib1' doesn't resolve to a top-level package inside my application's node_modules
folder. There, it should be known as my-pkg/lib1
. So, let's change the import in libN.component.ts
:
// libN.component.ts
import { Lib1Comp } from 'my-pkg/lib1'; // note lib1 is now prefixed with my-pkg
Of course, we don't have my-pkg
installed in my-pkg
's node_modules, so it can't find my-pkg/lib1
and now my-pkg
doesn't build.
But what if we were able to "install" my-pkg
into it's own node_modules folder? Let's try copying it in there via NPM scripts:
// package.json
...
"scripts": {
"copy:lib1": "npx copy .\\dist\\lib1\\**\\* .\\node_modules\\my-pkg\\lib1",
"build:lib1": "ng build --prod lib1 && npm run copy:lib1",
// repeat copy/build scripts as needed for libs[2..N]
"build:pkg": "npm run build:lib1 && npm run build:libN"
},
Now, we run npm run build:pkg
. It builds lib1
then copies it to our local node_modules
folder, and now libN
can happily import from the path my-pkg/lib1
in both your library and your application!