小谈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 相关文章推荐
基于jQuery制作迷你背词汇工具
Jul 27 Javascript
jquery下实现overlay遮罩层代码
Aug 25 Javascript
AngularJS学习笔记之ng-options指令
Jun 16 Javascript
JS中多步骤多分步的StepJump组件实例详解
Apr 01 Javascript
总结JavaScript设计模式编程中的享元模式使用
May 21 Javascript
vue.js入门教程之绑定class和style样式
Sep 02 Javascript
简单实现jQuery多选框功能
Jan 09 Javascript
angular实现form验证实例代码
Jan 17 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
Aug 23 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
Nov 15 Javascript
小程序获取周围IBeacon设备的方法
Oct 31 Javascript
Vue实现省市区三级联动
Dec 27 Vue.js
简单了解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写出自己的BLOG系统 2
2010/04/12 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
php中hashtable实现示例分享
2014/02/13 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
javascript String 的扩展方法集合
2008/06/01 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
Js和VUE实现跑马灯效果
2020/05/25 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
Python运行的17个时新手常见错误小结
2012/08/07 Python
Python函数式编程指南(二):从函数开始
2015/06/24 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
python 实现的车牌识别项目
2021/01/25 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
幼儿园教师自我鉴定
2014/03/20 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
中考标语大全
2014/06/05 职场文书
环境科学专业求职信
2014/08/04 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
详解MySQL集群搭建
2021/05/26 MySQL
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android