Emi*_* S. 7 npm typescript angular
在创建Angular
应用程序时,我想构建一个库,我可以在其中放置即使在其他项目中也很有用的组件。为了创建库,我创建了另一个Angular
工作区,我在其中生成了库项目并使用在工作区中自动生成的应用程序项目来显示各个组件。
ng new my-components-library
cd my-components-library
ng generate library components-library
Run Code Online (Sandbox Code Playgroud)
现在我有一个包含工作组件的库,这些组件通过了单元测试并在附加的应用程序项目中正常工作,但我需要在我的项目工作区中使用它们。我试图以这种方式包括图书馆。
在我的项目工作区中
npm install ../my-components-library/projects/components-library
Run Code Online (Sandbox Code Playgroud)
该命令运行正常,并且我获得了对该库的引用到宿主项目中,package.json
但是当我必须使用项目的模块中包含来自外部库的模块时,import {myModule} from 'components-library'
我收到一个错误,因为 Angular 找不到该模块。
dee*_*han 14
npm link
,它会在主机应用程序的 node_modules 目录中创建符号链接。npm link
在本地库中运行npm link @local-library-name
在主机应用程序中运行angular.json
文件进行以下更改。如果您使用小于 11 或更低的角度,则添加"preserveSymlinks": true
elsesourceMap
和scripts
, styles
,vendor
作为 true "build": {
"options": {
"preserveSymlinks": true, // angular 11 or less
}
},
Run Code Online (Sandbox Code Playgroud)
{
"projects": {
"your-app": {
"architect": {
"build": {
"options": {
"sourceMap": { // angular 12 or more
"scripts": true,
"styles": true,
"vendor": true
},
Run Code Online (Sandbox Code Playgroud)
npm pack
。npm pack
在您的库中运行npm i your-library-path.tgz
在您的主机应用程序中运行npm i
"your-library-name": "file:your-library-path.tgz",
Run Code Online (Sandbox Code Playgroud)
小智 1
需要在angular.json中注册
"scripts": ["src/assets/scripts/yourComponentLibrary.js"]
在要使用该库的组件中,需要在 @Component({...
declare const YourComponentLibraryName: any;
归档时间: |
|
查看次数: |
8290 次 |
最近记录: |