使用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 相关文章推荐
基于jQuery的获得各种控件Value的方法
Nov 19 Javascript
js控制浏览器全屏示例代码
Feb 20 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
Aug 08 Javascript
JS获得选取checkbox整行数据的方法
Jan 28 Javascript
js实现登陆遮罩效果的方法
Jul 28 Javascript
jquery动感漂浮导航菜单代码分享
Apr 15 Javascript
JS基于Ajax实现的网页Loading效果代码
Oct 27 Javascript
js创建jsonArray传输至后台及后台全面解析
Apr 11 Javascript
Vue中组件之间数据的传递的示例代码
Sep 08 Javascript
vue2 前端搜索实现示例
Feb 26 Javascript
Vue.js中 v-model 指令的修饰符详解
Dec 03 Javascript
javascript的惯性运动实现代码实例
Sep 07 Javascript
详解如何构建一个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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
用js重建星际争霸
2006/12/22 Javascript
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
浅谈Python脚本开头及导包注释自动添加方法
2018/10/27 Python
python编写猜数字小游戏
2019/10/06 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
大众服装店创业计划书范文
2014/01/01 职场文书
买房委托公证书
2014/04/08 职场文书
药剂专业毕业生求职信
2014/06/24 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
个人先进材料范文
2014/12/30 职场文书
叶问观后感
2015/06/15 职场文书
退休欢送会致辞
2015/07/31 职场文书
同学联谊会邀请函
2019/06/24 职场文书
家电创业计划书
2019/08/05 职场文书