Cuando se usa ng-packagr para empaquetar un proyecto @my/common-util, no hay problemas. Esta clase contiene una clase abstracta llamada AbstractPerson en abstract-person.ts.
En otro proyecto llamado @my/common-impl, se creó otra clase Person que amplía AbstractPerson y la importa usando el nombre del paquete @my/common-util. Cuando uso ng-packagr para empaquetarlo, aparece el siguiente error -->
No se proporcionó ningún nombre para el módulo externo '@my/common/abstract-person' en options.globals - adivinando 'abstractPerson'
Como parecía que era una advertencia, sigo instalando npm tanto @my/common como @my/common-impl en otro proyecto, pero aparece el siguiente error cuando importo la clase Person de @my/common-impl
ERROR en ./node_modules/@my/common-impl/esm5/common-impl.js Módulo no encontrado: Error: No se puede resolver '@my/common/abst ract-person' en 'C:\Data\me\ node_modules\@my\common-impl\e sm5' resolve '@my/common/abstract-person' in 'C:\Data\me\node_modules\@my\common-impl\e sm5' La solicitud analizada es un módulo que utiliza la descripción archivo: C:\Data\me\node_modules\@my\common-impl\package.json (ruta relativa: ./esm5) El campo 'navegador' no contiene una configuración de alias válida después de usar el archivo de descripción: C:\ Data\me\node_modules\@my\common-impl\package.json (ruta relativa: ./esm5) se resuelve como módulo
Probé varias cosas como elementos externos, globales, umdModuleIds en package.json (ver a continuación), pero ninguno de estos funcionó.
Aquí está paquete.json
{ "name": "@my/common-impl", "version": "1.0.0-alpha.0", "private": true, "dependencies": { "@my/common": "1.0.0-alpha.0" }, "peerDependencies": { "lodash": "^4.17.4" }, "ngPackage": { "$schema": "./node_modules/ng-packagr/ng-package.schema.json", "dest": "dist/common-impl", "workingDirectory": "../.ng_build", "lib": { "entryFile": "src/public_api.ts", "externals": [ "@my/common/abstract-person" ], "globals": { "@my/common/abstract-person": "AbstractPerson" }, "umdModuleIds": { "abstract-person" : "AbstractPerson" } } } }¿Qué más se requiere para que esto sea rectificado?
Estaba trabajando con un módulo npm llamado katex . Agregar esto a umdModuleIds en ./projects/myLibname/ng-package.json funcionó para mí.
{ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", "dest": "../../dist/documentations", "lib": { "entryFile": "src/public_api.ts", "umdModuleIds": { "katex": "katex" } } }Esto hizo que la siguiente advertencia desapareciera
No se proporcionó ningún nombre para el módulo externo 'katex' en output.globals – adivinando 'katex'
Debe usar la propiedad "paths" de tsconfig.lib.json en su biblioteca.
Este es el problema:
Agrego mi biblioteca1 y biblioteca2 en mi carpeta de proyecto monorepo .
project: -> library1 -> tsconfig.lib.json -> ... -> library2 -> tsconfig.lib.json -> ... -> tsconfig.json -> ... tsconfig.json
{ ... "compilerOptions": { ... "paths": { "library1": [ "../dist/library1" ], "library2": [ "../dist/library2" ], }, } Y usé import {lib1Module} from 'library1' en el código de library2. para resolver no module lib1Module found el error i ovveride la ruta de la biblioteca1 en la biblioteca2 tsconfig.lib.json
tsconfig.lib.json
{ "extends": "../../tsconfig.json", "compilerOptions": { ... "paths": { "library1": [ "../../../dist/library1" ] }, ... }, Probablemente su problema se resolverá si usa la propiedad de paths en lugar de "umdModuleIds", "globales" y "externos"
Y finalmente, debo mencionar este hecho, los "externos" ya no existen en el esquema ng-packagr .
En mi caso resolví las advertencias de esta manera.
{ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", "dest": "../../dist/test-lib", "lib": { "entryFile": "src/public-api.ts", "umdModuleIds": { "@libs/shared": "../../dist/shared", "@libs/animations": "../../dist/animations", "saturn-datepicker": "saturn-datepicker", "moment": "moment" } } } { "compileOnSave": false, "compilerOptions": { "importHelpers": true, "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": false, "module": "esnext", "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, "target": "es5", "typeRoots": [ "node_modules/@types" ], "lib": [ "es2018", "es2019", "dom" ], "allowSyntheticDefaultImports": true, "baseUrl": "./", "paths": { "@app/*": [ "projects/test-app/src/app/*" ], "@libs/*": [ "dist/*" ], "shared": [ "dist/shared" ], "shared/*": [ "dist/shared/*" ], "animations": [ "dist/animations" ], "animations/*": [ "dist/animations/*" ], } } }