J'essaie d'importer un projet/module Angular Angular $ angular angular $ === [angular $ ===) sans le publier dans le référentiel npm.
Tout d'abord, j'ai suivi ce tutoriel pour construire mon module au format UMD (j'ai sauté la partie publication):
https://medium.com/@cyrilletuzi/how-to-build-and-publish-an-angular-module-7ad19c0b4464
Ensuite, j'ai essayé d'installer mon module dans l'application finale en exécutant cette ligne de commande:
npm install ../path-to-my-module --save
Cela a ajouté avec succès mon module en tant que @myscope/myModule
dans le package.json
de mon application, mais le problème est que l'importation du module dans l'application n'est pas reconnue. J'ai fini par obtenir l'erreur suivante:
Cannot find module @myscope/myModule
Dans mon node_modules
, le dossier @myscope
est créé, et à l'intérieur, il y a un raccourci vers ../path-to-my-module
avec le nom myModule
Le fait qu'il existe un raccourci pourrait-il être à l'origine du problème? et si oui, comment y remédier?
J'ai trouvé cet article qui m'a aidé à résoudre mon problème:
Pour résumer brièvement, voici comment j'ai procédé:
npm install -g ng-packagr
npm install ng-packagr --save-dev
ng-package.json
dans le dossier racine du projet et ajoutez ce qui suit: {
"$schema": "./node_modules/ng-packagr/ng-package.schema.json",
"lib": {
"entryFile": "public_api.ts"
"externals": {
"@angular/cdk": "ng.cdk",
"@angular/cdk/accordion": "ng.cdk.accordion",
//...
}
}
}
Dans mon cas, j'ai dû ajouter des dépendances externes afin d'éviter les erreurs de packaging/build:
créer public_api.ts
dans le dossier racine du projet et ajoutez ce qui suit:
export * from './src/app/modules/myFeature/my-feature.module'
Éditer package.json
, et ajoutez la ligne packagr
à la balise scripts
:
"scripts": {
//...
"packagr": "ng-packagr -p ng-package.json"
}
Créez le package en exécutant la commande suivante à partir du dossier racine:
npm run packagr
Installez-le pour le développement local:
dist
:npm pack
npm install ../some-relative-path/dist/my-component-library-0.0.0.tgz
Ensuite, je pourrais importer mon module à partir de tout autre module ou composant de mon projet final