一、创建angular项目

ng  new  myFirstDemo //angular-cli新建项目
ng g m testm //新建模块
ng g c testm/headertest //新建组件

提示:组件必须到处去

@NgModule({
imports: [
CommonModule
],
declarations: [HeadertestComponent],
exports: [HeadertestComponent] //新添加的部分
})

二、安装ng-packagr

npm i ng-packagr --save
npm i ng-packagr --save-dev

三、根目录下新建2个文件(和项目名同级的目录)

1. ng-package.json,内容如下:

{
"$schema": "./node_modules/ng-packagr/ng-package.schema.json",
"lib": {
"entryFile": "public_api.ts"
},
"whitelistedNonPeerDependencies": [
"."
]
}

2.public_api.ts,内容如下

export * from './src/app/testm/testm.module';

提示:此文件是导出封装的模块。

四、修改package.json文件

"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"packagr": "ng-packagr -p ng-package.json" //新添加的
},
"private": false, //修改为false

五、删除package.json文件dependences内容,

//下方代码全删除
"dependencies": {
"@angular/animations": "^6.1.0",
"@angular/common": "^6.1.0",
"@angular/compiler": "^6.1.0",
"@angular/core": "^6.1.0",
"@angular/forms": "^6.1.0",
"@angular/http": "^6.1.0",
"@angular/platform-browser": "^6.1.0",
"@angular/platform-browser-dynamic": "^6.1.0",
"@angular/router": "^6.1.0",
"core-js": "^2.5.4",
"firstdemodiective": "0.0.0",
"nv-test-header": "^1.0.5",
"rxjs": "~6.2.0",
"zone.js": "~0.8.26"
}

六、执行打包命令

npm run packagr

提示:项目目录会多一个dist文件夹

七、切换目录到dist文件夹(执行 cd dist)

npm pack

提示:如果npm没有登录,请先去npm官网注册账号,并在根目录执行 npm login,依次输入账号和密码以及邮箱

八、接着七的步骤继续执行npm publish

九、此时组件已经发布到npm官网,你可以登录自己的账号去查看相关信息。

最后补充:我在执行上面操作时,遇到的错误以及排查信息。

1.npm run packagr 执行这句命令时,会报node_modules里面的一堆错误,原因是rxjs的版本号不对。

2.npm pack 执行这句命令时,会报@angular/animations不在白名单什么的错误。这个问题已经解决了,我已在ng-package.json文件加了“whitelistedNonPeerDependencies”的配置。

3.修改组件版本号或者名称等配置信息,只需要在package.json文件修改即可。

angular6组件封装以及发布到npm的更多相关文章

  1. 从零开始开发一个vue组件打包并发布到npm (把vue组件打包成一个可以直接引用的js文件)

    自己写的组件 有的也挺好的,为了方便以后用自己再用或者给别人用,把组件打包发布到npm是最好不过了,本次打包支持 支持正常的组件调用方式,也支持Vue.use, 也可以直接引用打包好的js文件, 配合 ...

  2. 如何从0开发一个Vue组件库并发布到npm

    1.新建文件夹在终端打开执行 npm init -y 生成package.json如下,注意如果要发布到npm,name不能有下划线,大写字母等 { "name": "v ...

  3. 从零开始封装React UI 组件库并发布到NPM

    github 开源地址:zswui github 说明文档:wiki 1.新建目录wui (1)进入到 wui 目录 执行 npm init 命令初始化项目.更具提示信息填充将会生成的 package ...

  4. 仿探探卡片滑动vue封装并发布到npm

    项目初始化使用 webpack-simple 方式比较方便和容易配置,原来的方式各种坑慎入 vue init webpack-simple vue-card-slide cd vue-card-sli ...

  5. 自定义Vue组件打包、发布到npm以及使用

    本文将帮助:将自己写的Vue组件打包到npm进行代码托管,以及正常发布之后如何使用自己的组件. 本文讲述的仅仅是最基础的实现,其他复杂的操作需要非常熟悉webpack的相关知识,作者将继续学习. 先附 ...

  6. Vue搭建组件库并发布到 npm

    https://www.jianshu.com/p/72d303449abc

  7. 使用Vue CLI 3将基于element-ui二次封装的组件发布到npm

    前言:之前在网上找的好多都是基于vue-cli 2.x的,而使用vue-cli 3的文章比较少,Vue CLI 3 中文文档,所以我在自己尝试的时候把几篇文章结合了一下,调出来了我想要的模式,也就是V ...

  8. 将 Vue 组件库发布到 npm

    制作了一套自己的组件库,并发布到npm上,项目代码见 GitHub . 前期准备 有一个npm账号 安装了vue-cli 搭建项目 vue init webpack hg-vcomponents cd ...

  9. vue cli3.0 封装组件全局引入js文件并发布到npm

    首先用 vue create创建一个项目 当前的项目目录是这样的: 首先需要创建一个 packages 目录,用来存放组件 然后将 src 目录改为 examples 用作示例 二.修改配置 启动项目 ...

随机推荐

  1. Spark学习之路(三)—— 弹性式数据集RDDs

    弹性式数据集RDDs 一.RDD简介 RDD全称为Resilient Distributed Datasets,是Spark最基本的数据抽象,它是只读的.分区记录的集合,支持并行操作,可以由外部数据集 ...

  2. PHP弱类型总结

    0x01:“==”和“===” PHP中有两种比较符号,“==”与“===”.“==”我们称之为等值符,当等号两边为相同类型时,直接比较值是否相等:当等号两边类型不同时,先转换为相同的类型,再对转换后 ...

  3. 仿照Spring自己实现有各种通知的AOP,AOP实现的步骤分解

    一.需求: 仿照Spring的AOP写的 MyAOP 2.0,有环绕通知.前置通知.后置通知.返回通知.异常通知等. 已实现:①通过动态代理+通知的注解类,实现了前置通知.后置通知等各种通知:②切点( ...

  4. HDU 1811:Rank of Tetris(并查集+拓扑排序)

    http://acm.hdu.edu.cn/showproblem.php?pid=1811 Rank of Tetris Problem Description   自从Lele开发了Rating系 ...

  5. 关于在使用scrapy-redis分布式踩过的那些坑:

    自己的案列:win7上安装ubuntu (win7作为slaver,ubuntu作为master ) 修改配置文件redis.conf 1)打开配置文件把下面对应的注释掉 # bind 127.0.0 ...

  6. C# 创建Windows服务demo

    一.准备工作 1.操作系统:Windows 10 X64 2.开发环境:VS2017 3.编程语言:C# 4. .NET版本:.NET Framework 4.5 二.创建Windows Servic ...

  7. java中String和int相互转换常用方法详解

    java中int和String的相互转换常用的几种方法: String  > int s="10";int i;第一种方法:i=Integer.parseInt(s);//默 ...

  8. 项目中操作redis改brpop阻塞模式为订阅模式的实现-java实习笔记二

    更改项目需求以及项目之前阻塞模式问题的叙述已经在上一篇说过了,详情可参考:https://www.cnblogs.com/darope/p/10276213.html  ,https://yq.ali ...

  9. 企业如何从“API优先”的策略中获益

    在过去的几年里,全球API经济在以难以置信的速度进行快速地增长.物联网.人工智能.自动驾驶等等众多令人充满期待的技术正蓬勃发展,这也证明了API对于如今整个技术圈子的重要性,也预示着在不久的将来它还将 ...

  10. Docker+Maven+Jenkins在Devops中完整应用

    过去与现在 很早之前,当我们需要一个部署环境的时候,我们可能指的是一台PowerEdge R710 2U服务器,走一系列冗长的申请流程,然后上架到机房.调试网络.安装系统.调试环境.最终部署应用,就这 ...