【Angular18】封装自定义组件

1. 准备组件

在这里插入图片描述

2. 创建打包文件夹及部分配置文件

在这里插入图片描述

  1. 创建 文件夹app-legalentities-root
  2. 拷贝组件源文件到新的文件夹app-legalentities中
  3. 创建文件 .npmrc
registry=发布地址
                        
always-auth=true
  1. 创建文件 ng-package.json
{
    "$schema": "./node_modules/ng-packagr/ng-package.schema.json",
    "lib": {
      "entryFile": "public_api.ts"
    }
  }
  1. 创建文件 package.json
{
  "name": "xxx-xx-test",
  "version": "0.0.9",
  "scripts": {
    "ng": "ng",
    "test": "ng test",
    "packagr": "ng-packagr -p ng-package.json"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^18.0.0",
    "@angular/common": "^18.0.0",
    "@angular/compiler": "^18.0.0",
    "@angular/core": "^18.0.0",
    "@angular/router": "^18.0.0",
    "ng-zorro-antd": "^18.0.1",
    "raise-ssh-test": "file:",
    "rxjs": "~7.8.0",
    "tslib": "^2.3.0",
    "zone.js": "~0.14.3"
  },
  "devDependencies": {
    "@angular/animations": "^18.0.0",
    "@angular/common": "^18.0.0",
    "@angular/compiler": "^18.0.0",
    "@angular/core": "^18.0.0",
    "@angular/router": "^18.0.0",
    "rxjs": "~7.8.0",
    "tslib": "^2.3.0",
    "zone.js": "~0.14.3"
  }
}

  • 创建文件 public_api.ts
export * from './app-legalentities/app-legalentities.component';
export * from './app-legalentities/app-legalentities.service';

3. 修改配置文件

  • 修改 public_api.ts,以下内容为导出的模块、service、modal等
export * from './app-legalentities/app-legalentities.component';
export * from './app-legalentities/app-legalentities.service';
  • 修改 package.json

  "name": "app-legalentities-root", // 当前组件打包文件夹名称
  "version": "0.0.1", // 当前组件版本,每次发布后,下次发布前版本号+1
  "scripts": {
  ...
  },

 "dependencies": {
    "@angular/animations": "^18.0.0", // 公共
    "@angular/common": "^18.0.0", //公共
    "@angular/compiler": "^18.0.0", //公共
    "@angular/core": "^18.0.0", //公共
    "@angular/router": "^18.0.0", //公共
    
    "ng-zorro-antd": "^18.0.1", // 当前组件依赖包
    
    "rxjs": "~7.8.0", //公共
    "tslib": "^2.3.0", //公共
    "zone.js": "~0.14.3" //公共
  },

4. down依赖包和安装打包指令

  1. 使用npm i 安装包
    在这里插入图片描述
  2. 执行 npm i ng-packagr //安装打包命令
npm i ng-packagr
  1. 配置 package.json 文件,删除 dependencies 和 devDependencies中的内容
{
  "name": "app-legalentities-root", `// 修改打包的名字`
  "version": "0.0.2",  `// 版本号 +1`
  "scripts": {
    "ng": "ng",
    "test": "ng test",
    "packagr": "ng-packagr -p ng-package.json"  `//配置打包命令`
  },
  "private": false // 这个要修改为false,下面的图忘记改了
}

在这里插入图片描述

5. 打包开始-生成dist文件

  1. 执行 npm run packagr 生成dist文件
npm run packagr
  1. 进入dist 文件目录-执行 `npm pack 生成一个压缩文件
npm pack

6. 安装vsts-npm-auth和配置

  1. 在app-legalentities-root文件夹下 安装 vsts-npm-auth
npm install -g vsts-npm-auth --registry https://registry.npmjs.com --always-auth false
  1. 在dist根目录下创建文件.npmrc,内容同2.3
  2. 在dist文件夹中配置vsts-npm-auth
vsts-npm-auth -config .npmrc

7. 发布打包文件

在dist文件夹中执行指令 npm publish发布组件

npm publish

8. 引入自定义组件

  1. 在使用组件的根目录下,即跟package.json同级创建文件.npmrc,内容同2.3
    在这里插入图片描述

  2. 安装组件 npm i app-country-select@0.0.1

npm i app-country-select@0.0.1

9. 后续升级

  1. 在demo框架中测试升级功能,测试通过后执行下一步。
  2. 版本号 + 1,删除原先的dist文件夹及其内容,完成后执行下一步。
  3. 打包生成dist,复制文件 .npmrc,然后pack压缩文件,完成后执行下一步
// 在root文件夹中执行
npm run packagr

// 在dist中执行
npm pack
  1. 在dist文件夹中配置vsts-npm-auth,然后发布组件
// 配置发布环境
vsts-npm-auth -config .npmrc

// 发布组件
npm publish

遇到的问题

  1. ‘npm run packagr’ 打包报错了
    解决方案:将 angular框架的 app-legalentities-root文件夹移到单独的位置,首先删除已经安装好的依赖包,然后执行第四步
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/870588.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自动化解决 reCAPTCHA v2:CapSolver 教程

对于那些经常进行网页爬取的人来说,你是否曾觉得 reCAPTCHA v2 就像是互联网版的过于严格的裁判员,总是在质疑你的真实性?但如果你能够轻松且合规地与这些裁判员达成和解,使你的网络搜索和自动化任务变得更顺畅,那该有…

社交媒体分析:如何利用Facebook的数据提升业务决

在数字化时代,社交媒体已经成为企业战略中不可或缺的一部分。Facebook,作为全球最大的社交平台之一,提供了丰富的数据资源,这些数据不仅能够帮助企业了解市场趋势,还能提升业务决策的精准度。本文将探讨如何有效利用Fa…

共享经济背景下校园、办公闲置物品交易平台-计算机毕设Java|springboot实战项目

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

navicate premium16破解

下载链接:https://pan.baidu.com/s/1BWowOJLYchFcRMgIn-j97A?pwdvmfu 双击安装navicat160_premium_cs_x64.exe,安装完不要打开 然后断网打开NavicatCracker.exe 打开如果报病毒按照下面方法处理: 记得一定要断网,不断网…

安卓相关环境配置

安卓相关环境配置 偶尔更新。。。 JEB(动态调试好用) JEB动态调试Smali-真机/模拟器(详细,新手必看) 夜步城 JADX官网(静态分析) https://github.com/skylot/jadx/releases/tag/v1.5.0 雷…

嵌入式软件--模电基础 DAY 2

强电和弱电,简单一点是以电死人为标准的,交流电36伏特以下,直流电24V以下,为安全电压,是为弱电,反则强电。 市电进入家庭,连接你的电脑,220V的电压为什么没有让你感到危险&#xff…

怎么屏蔽电脑监控软件?企业管理者的智慧选择——精准定位,合理屏蔽,让监控软件成为助力而非障碍!

电脑监控软件在企业管理中扮演着日益重要的角色,它们能够提升工作效率、保障信息安全、预防内部风险。然而,过度或不当使用监控软件也可能引发员工隐私担忧,影响工作积极性和团队氛围。因此,作为企业管理者,如何精准定…

论文创新大杀器!LSTM结合UNet,性能突出,涨点显著

最近,浙大等团队提出了xLSTM-UNet,通过将U-Mamba中的Mamba换成xLSTM,就可以直接提升2D和3D医学图像分割性能,涨点效果显著! xLSTM-UNet是一种结合了LSTM和UNet的混合网络模型,这类模型保留了UNet出色的空间…

迭代器失效

一、什么是迭代器失效 迭代器的主要作用就是让算法能够不用关心底层数据结构,其底层实际就是一个指针,或者是对指针进行了封装,比如:vector的迭代器就是原生态指针T* 。因此迭代器失效,实际就是迭代器底层对应指针所指…

数据埋点系列 17| 预测分析和预测模型:用数据洞察未来

在数据驱动的决策时代,预测分析和预测模型已成为组织的重要战略工具。通过分析历史数据,我们可以预测未来趋势,做出更明智的决策。本文将深入探讨预测分析的核心概念、常用技术和实际应用。 目录 1. 预测分析的基础1.1 预测分析的类型 2. 高…

Unity与UE,哪种游戏引擎适合你?

PlayStation vs Xbox,Mario vs Sonic,Unreal vs Unity?无论是游戏主机、角色还是游戏引擎,人们总是热衷于捍卫他们在游戏行业中的偏爱。 专注于游戏引擎,Unity和Unreal Engine(简称UE4)是目前市…

C++:平衡二叉搜索树之红黑树

一、红黑树的概念 红黑树, 和AVL都是二叉搜索树, 红黑树通过在每个节点上增加一个储存位表示节点的颜色, 可以是RED或者BLACK, 通过任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树能够确保没有一条路径会比…

C++ 11相关新特性(lambda表达式与function包装器)

目录 lambda表达式 引入 lambda表达式介绍 lambda表达式捕捉列表的传递形式 lambda表达式的原理 包装器 包装器的基本使用 包装器与重载函数 包装器的使用 绑定 C 11 新特性 lambda表达式 引入 在C 98中,对于sort函数来说,如果需要根据不同的比较方式实现…

超网和无类间路由是什么?

​一、超网概述 超网是将多个连续的网络地址组合成一个增加的网络地址的技术。常用于减少路由器的路由表大小,网络的可扩展性。通过合并连续的子网,超网可以减少路由入侵的数量,从而提高网络的效率。 超网的实现基于合并多个具有连续IP地址…

【vue教程】五. Vue 的路由管理

目录 往期列表本章涵盖知识点回顾Vue Router 的基本概念什么是 Vue Router?为什么需要 Vue Router? 路由的配置和使用安装 Vue Router创建路由在 Vue 实例中使用路由模板中的路由链接 动态路由和嵌套路由动态路由嵌套路由 路由守卫什么是路由守卫&#x…

HarmonyOS应用三之组件生命周期和参数传递

目录: 1、生命周期的执行顺序2、页面数据传递3、图片的读取4、数据的备份和恢复5、轮播图6、页面布局图 1、生命周期的执行顺序 /** Copyright (c) 2023 Huawei Device Co., Ltd.* Licensed under the Apache License, Version 2.0 (the "License");* yo…

微服务架构设计中的常见的10种设计模式

微服务架构设计的概念 微服务架构(Microservices Architecture)是一种用于构建分布式系统的软件设计模式。它将大型应用程序拆分成一组小型、自治的服务,每个服务都运行在其独立的进程中,服务之间通过轻量级的通信机制&#xff08…

Nginx 核心配置详解

章节 1 NGINX 的源码安装 2 NGINX 核心配置详解 3 NGINX 之 location 匹配优先级 4 NGINX 基础参数与功能 目录 1 配置文件说明 1.1 nginx 配置文件格式说明 1.2 Nginx 主配置文件的配置指令方式: 1.3 主配置文件结构:四部分 1.4 nginx 文件作用解…

使用Python编写AI程序,让机器变得更智能

人工智能(AI)是当今科技领域最热门的话题之一。随着Python编程语言的逐渐流行,它已经成为许多人工智能编程的首选语言。本文将介绍如何使用Python编写AI程序,让机器变得更智能。 首先,Python提供了大量的AI库和工具&a…

10、stm32实现adc读取数据

一、配置 二、代码 /* USER CODE BEGIN 2 */OLED_Init();OLED_Clear();OLED_ShowString(0,0,"Hello adc",12,0);uint16_t adc_number 0;/* USER CODE END 2 *//* USER CODE BEGIN WHILE */while (1){HAL_ADC_Start(&hadc1);HAL_ADC_PollForConversion(&hadc1…