使用Angular-CLI构建NPM包的方法


Posted in Javascript onSeptember 07, 2018

1.创建项目

# PROJECT_NAME :创建的项目名称
ng new PROJECT_NAME

2.创建第三方包(我们要构建的NPM包)

cd PROJECT_NAME

# LIBRARY_NAME :创建的包的名称(如 zorro)
# PREFIX :组件前缀(如 nz-zorro 的组件前都是 nz-)
ng g library LIBRARY_NAME --prefix PREFIX

上面命令执行后会在我们项目根目录生成projects目录,目录里就是刚才generate的第三方library,如下图:

使用Angular-CLI构建NPM包的方法

3.构建自己的模块

编辑模块,实现我们需要的功能,我在改模块中加入了directive.tsmodels.ts,如下图:

使用Angular-CLI构建NPM包的方法

directive.ts只在模块内部使用,导入在当前module.ts里,如下:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { NePreviewComponent } from './ne-preview.component';

import { ViewerDirectiveModule } from './ne-preview.directive';

@NgModule({
 imports: [
 BrowserModule,
 ViewerDirectiveModule # 这里
 ],
 declarations: [NePreviewComponent],
 exports: [NePreviewComponent]
})
export class NePreviewModule { }

models.ts可能在外部使用,则需在public_api.ts导出,如下:

export * from './lib/ne-preview.service';
export * from './lib/ne-preview.component';
export * from './lib/ne-preview.module';

export * from './lib/ne-preview.model'; # 这个是新加,其他为自动生成

4.构建NPM包

打包前修改package.json中的项目信息,每次更新npm包需修改version,版本相同提交不上去,可以手动修改,也可命令修改,如下:

npm version prepatch

更多操作

# 版本号从 1.2.3 变成 1.2.4-0,就是 1.2.4 版本的第一个预发布版本。
npm version prepatch

# 版本号从 1.2.4-0 变成 1.3.0-0,就是 1.3.0 版本的第一个预发布版本。
npm version preminor

# 版本号从 1.2.3 变成 2.0.0-0,就是 2.0.0 版本的第一个预发布版本。
npm version premajor

# 版本号从 2.0.0-0 变成 2.0.0-1,就是使预发布版本号加一。
npm version prerelease

编译打包

#切到项目根目录
cd 项目根目录路径
ng build LIBRARY_NAME

编译成功,如下图:

使用Angular-CLI构建NPM包的方法

在项目根目录会生成dist目录,如下:

使用Angular-CLI构建NPM包的方法

到这里我们的NPM包就制作完成了,接下来就是发布到NPM仓库~

5.发布NPM包

这里得先登录NPM,

npm login # 详细操作自行百度
#切到目录
cd dist/LIBRARY_NAME
#发布
npm publish

6.使用发布的NPM包

安装我们发布的包

# NPM_PACKAGE_NAME :projects/LIBRARY_NAME/package.json 里面的 name,默认为:LIBRARY_NAME
npm install NPM_PACKAGE_NAME

在项目app.module.ts中引入我们创建的组件,如下:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { registerLocaleData } from '@angular/common';
import zh from '@angular/common/locales/zh';

import { EchoImagePreviewModule } from './echo-image-preview/echo-image-preview.module';
import { EchoModuleModule } from 'echo-image-preview';
import { NePreviewModule } from 'ne-img-preview'; # <===这里


registerLocaleData(zh);

@NgModule({
 declarations: [
 AppComponent
 ],
 imports: [
 BrowserModule,
 BrowserAnimationsModule,
 FormsModule,
 HttpClientModule,
 EchoImagePreviewModule,
 EchoModuleModule,
 NePreviewModule # <===这里
 ],
 providers: [],
 bootstrap: [AppComponent]
})
export class AppModule { }

model.ts直接引用:

import { IMGLIST } from 'ne-img-preview';

组件使用,如下:

<ne-ne-preview [imgList]="imgList"></ne-ne-preview>

感谢:harlan:如何构建一个Angular6的第三方npm包

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
扩展javascript的Date方法实现代码(prototype)
Nov 20 Javascript
利用div+jquery自定义滚动条样式的2种方法
Jul 18 Javascript
顶部缓冲下拉菜单导航特效的JS代码
Aug 27 Javascript
Javascript基础知识(二)事件
Sep 29 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
Mar 09 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
Sep 16 Javascript
微信小程序request请求后台接口php的实例详解
Sep 20 Javascript
在vue中使用SockJS实现webSocket通信的过程
Aug 29 Javascript
Nuxt使用Vuex的方法示例
Sep 06 Javascript
原生js实现俄罗斯方块
Oct 20 Javascript
vue+element UI实现树形表格
Dec 29 Vue.js
Vue中引入svg图标的两种方式
Jan 14 Vue.js
详解如何构建一个Angular6的第三方npm包
Sep 07 #Javascript
vue2.0 可折叠列表 v-for循环展示的实例
Sep 07 #Javascript
Js中使用正则表达式验证输入是否有特殊字符
Sep 07 #Javascript
vue.js+element-ui动态配置菜单的实例
Sep 07 #Javascript
详解npm 配置项registry修改为淘宝镜像
Sep 07 #Javascript
vue 点击按钮实现动态挂载子组件的方法
Sep 07 #Javascript
关于JavaScript中高阶函数的魅力详解
Sep 07 #Javascript
You might like
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
用js控制组织结构图可以任意拖拽到指定位置
2014/01/17 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
Vue不能观察到数组length的变化
2018/06/08 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
python脚本监控docker容器
2016/04/27 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
大专学生推荐信范文
2013/11/19 职场文书
餐饮部总监岗位职责范文
2014/02/13 职场文书
教师现实表现材料
2014/02/14 职场文书
股权转让协议范本
2014/12/07 职场文书
成绩报告单家长评语
2014/12/30 职场文书
行政处罚告知书
2015/07/01 职场文书
redis实现排行榜功能
2021/05/24 Redis
如何用H5实现好玩的2048小游戏
2022/07/23 HTML / CSS