一、创建angular项目

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

提示:组件必须到处去

  1. @NgModule({
  2. imports: [
  3. CommonModule
  4. ],
  5. declarations: [HeadertestComponent],
  6. exports: [HeadertestComponent] //新添加的部分
  7. })

二、安装ng-packagr

  1. npm i ng-packagr --save
  2. npm i ng-packagr --save-dev

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

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

  1. {
  2. "$schema": "./node_modules/ng-packagr/ng-package.schema.json",
  3. "lib": {
  4. "entryFile": "public_api.ts"
  5. },
  6. "whitelistedNonPeerDependencies": [
  7. "."
  8. ]
  9. }

2.public_api.ts,内容如下

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

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

四、修改package.json文件

  1. "scripts": {
  2. "ng": "ng",
  3. "start": "ng serve",
  4. "build": "ng build",
  5. "test": "ng test",
  6. "lint": "ng lint",
  7. "e2e": "ng e2e",
  8. "packagr": "ng-packagr -p ng-package.json" //新添加的
  9. },
  10. "private": false, //修改为false

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

  1. //下方代码全删除
  2. "dependencies": {
  3. "@angular/animations": "^6.1.0",
  4. "@angular/common": "^6.1.0",
  5. "@angular/compiler": "^6.1.0",
  6. "@angular/core": "^6.1.0",
  7. "@angular/forms": "^6.1.0",
  8. "@angular/http": "^6.1.0",
  9. "@angular/platform-browser": "^6.1.0",
  10. "@angular/platform-browser-dynamic": "^6.1.0",
  11. "@angular/router": "^6.1.0",
  12. "core-js": "^2.5.4",
  13. "firstdemodiective": "0.0.0",
  14. "nv-test-header": "^1.0.5",
  15. "rxjs": "~6.2.0",
  16. "zone.js": "~0.8.26"
  17. }

六、执行打包命令

  1. npm run packagr

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

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

  1. 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. 报错:java.sql.SQLException: The server

    报错:java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized 在IDEA运行是报出例如相识的错误时: ...

  2. Logback详细整理,基于springboot的日志配置

    Logback的配置介绍: 1.Logger.appender及layout Logger作为日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型.级别. ...

  3. Java多线程(三):volatile

    volatile volatile是一种轻量同步机制.请看例子 MyThread25类 public class MyThread25 extends Thread{ private boolean ...

  4. 透视BlueStore存储结构:如何根据文件名从裸盘提取文件内容

    在FileStore下,用户文件经过切分对象块后最终存放在了单机文件系统(xfs .ext4等)中,我们可以较容易地找到这些对象块对应的文件,然后提取这些对象块文件后组装成用户文件.然而,BlueSt ...

  5. RedisDesktopManager远程连接Linux系统的Redis服务

    linux下安装redis :https://www.runoob.com/redis/redis-install.html 进入 src 运行redis   : ./redis-server 打开另 ...

  6. ajax 的登录认证

    在models中 先创建一个表 from django.db import models # Create your models here. class UserInfo(models.Model) ...

  7. 修改SearchBar的取消按钮Cancel为中文

    一开始在网上看到很多方法都是循环,好吧,我也循环 创建UISearchBar的时候循环,不行 用searchBarTextDidBeginEditing事件去循环,也不行 无语了,搜索了Baidu第一 ...

  8. OSPF 单区域实验

    实验拓扑 实验需求 按照图示配置 IP 地址 按照图示分区域配置 OSPF ,实现全网互通 为了路由结构稳定,要求路由器使用环回口作为 Router-id 实验步骤 每台路由器都要将本地的所有直连网段 ...

  9. solidity智能合约如何判断地址为0或空

    智能合约地址判断 在旧版本中可使用以下代码来进行比较: owner != 0x0 但如果在新版本中使用,则会提示错误信息. 那么,如何正确使用来比较地址是否为空呢. 解决方案 可以使用address( ...

  10. python接口自动化(二十八)--html测试 报告——下(详解)

    简介 五一小长假已经结束了,想必大家都吃饱喝足玩好了,那就继续学习吧.一天不学习,自己知道:两天不学习,对手知道:三天不学习,大家知道:一周不学习,智商输给猪.好了开个玩笑都逗大家一乐,但是想想还是有 ...