小谈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 相关文章推荐
javascript编程起步(第二课)
Feb 27 Javascript
jquery网页元素拖拽插件效果及实现
Aug 05 Javascript
关于JS中的闭包浅谈
Aug 23 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
Jul 25 Javascript
easyui form validate总是返回false的原因及解决方法
Nov 07 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
Nov 23 Javascript
深入理解javascript函数参数与闭包
Dec 12 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
Apr 20 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
Jun 26 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
Sep 30 Javascript
详解webpack+ES6+Sass搭建多页面应用
Nov 05 Javascript
Vuex的各个模块封装的实现
Jun 05 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/05/24 PHP
smarty section简介与用法分析
2008/10/03 PHP
PHP __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
使用优化器来提升Python程序的执行效率的教程
2015/04/02 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
pandas 层次化索引的实现方法
2019/07/06 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
Python中实现输入一个整数的案例
2020/05/03 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
教育系毕业生中文求职信范文
2013/10/06 职场文书
酒店保安员岗位职责
2014/01/31 职场文书
实习证明格式范文
2014/10/14 职场文书
个人工作表现自我评价
2015/03/06 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
二手房购房意向书
2015/05/09 职场文书
离婚代理词范文
2015/05/23 职场文书