小谈angular ng deploy的实现


Posted in Javascript onApril 07, 2020

Angular CLI 在 8.3.0 发布过一个新命令 ng deploy,可以将 Angular 应用部署到远程服务器或云存储上面,例如:Firebase hosting、Azure、GitHub pages 等等,这也是算是 Angular CLI 最后一个将 Angular 应用从开发到部署打通全能选手工具了。

快速入门

这里我以ng-deploy-oss 为示例,演示如何将 Angular 应用部署到七牛云。

1、创建一个新项目

ng new hello-world --defaults

2、添加 ng-deploy-oss

ng add ng-deploy-oss

命令行会让你输入几个参数:

? 请选择云类型? 七牛云
? 请输入 AccessKey: test
? 请输入 SecretKey: test
? 所在机房支持: qiniu.zone.Zone_z0 - 华东
? 请输入 Bucket: ng-test
? 请输入路径前缀,如果不指定表示放在根目录下: 
? 请输入构建生产环境的 NPM 命令行(例如:npm run build),若为空表示自动根据 angular.json 构建生成环境 
UPDATE angular.json (3925 bytes)
UPDATE package.json (1511 bytes)

3、部署

ng deploy

最后直接打开浏览器,就能直接访问 ng build --prod 后的效果。

原理

事实上,ng deploy 如同其他 Angular schematics 指令 ng add、ng g 等类同,我曾经在 浅谈 Angular Cli Schematics 针对 Schematics 做过介绍。要自定义一个 ng deploy 只需要完成两个部分:

  • 编写 ng-add 来修改 angular.json 来告知使用哪个 Angular Libary 来部署;
  • 编写上传动作 createBuilder。

ng-add

给 angular.json 增加 deploy 节点:

{
  "serve": {},
+  "deploy": {
+    "builder": "ng-deploy-oss:deploy",
+    "options": {}
+  }
}

以及 package.json 的 devDependencies 增加依赖包:

+ "ng-deploy-oss": "~1.0.0",

有兴趣可以参考 ng-deploy-oss 的 ng-add 的完整写法。

createBuilder

它是一个固定的方法:

export default createBuilder<any>(async (schema: {}, context: BuilderContext): Promise<BuilderOutput> => {
  return { success: true };
});

将所有上传相关的动作写至该方法内;它返回的是一个 Promise<BuilderOutput> ,要告知 ng deploy 结束务必返回:return { success: true };。

如何部署至不同目标上

目前 ng deploy 只支持单个目标部署,有时多个远程部署也是刚需,比如像当你在做一个开源时总需要照顾国内、国外时,总是希望一份 gh-pages 和 七牛云(免费额度),我们只需要修改 angular.json

{
  "serve": {},
+  "deploy-qiniu": {
+    "builder": "ng-deploy-oss:deploy",
+    "options": {}
+  },
+  "deploy-gh-pages": {
+    "builder": "angular-cli-ghpages:deploy",
+    "options": {}
+  }
}

注意:angular-cli-ghpages:deploy 引用的是 angular-cli-ghpages 依赖包。

然后使用 ng run 来调用这两种不同目标:

ng run <project name>:deploy-qiniu
ng run <project name>:deploy-gh-pages

结论

Angular 在国内有些小窘境,ng deploy 发布这么久,一直都没见到对国内一些云存储进行适配;事实上,直接利用 ng deploy 来部署应用至远程服务器上,可能在越来越多 Docker 应用后变得没那么重要,但对于常写开源的人来说,能够快速将 Angular 应用部署至国内常见的几个云存储上还是挺有意义的。

到此这篇关于小谈angular ng deploy的实现的文章就介绍到这了,更多相关angular ng deploy内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
为你的网站增加亮点的9款jQuery插件推荐
May 03 Javascript
js中各种类型的变量在if条件中是true还是false
Jul 16 Javascript
jQuery中:first选择器用法实例
Dec 30 Javascript
Javascript核心读书有感之词法结构
Feb 01 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
Oct 24 Javascript
利用yarn实现一个webpack+react种子
Oct 25 Javascript
使用veloticy-ui生成文字动画效果
Feb 08 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
May 03 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
Jan 15 jQuery
微信小程序 确认框的实现(附代码)
Jul 23 Javascript
layui自定义插件citySelect实现省市区三级联动选择
Jul 26 Javascript
原生js实现自定义滚动条
Jan 20 Javascript
简单了解Vue + ElementUI后台管理模板
Apr 07 #Javascript
vue开发中遇到的问题总结
Apr 07 #Javascript
手把手教您实现react异步加载高阶组件
Apr 07 #Javascript
javascript绘制简单钟表效果
Apr 07 #Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
Apr 06 #Javascript
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 #jQuery
js实现登录时记住密码的方法分析
Apr 05 #Javascript
You might like
PHP一些常用的正则表达式字符的一些转换
2008/07/29 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
JS动态修改iframe高度和宽度的方法
2015/04/01 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
python生成验证码图片代码分享
2016/01/28 Python
Python中运算符&quot;==&quot;和&quot;is&quot;的详解
2016/10/08 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
Python requests模块cookie实例解析
2020/04/14 Python
Python list和str互转的实现示例
2020/11/16 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
英国门把手公司:Door Handle Company
2019/05/12 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
求职者应聘的自我评价
2013/10/16 职场文书
教育课题研究自我鉴定范文
2013/12/28 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS