Angular CLI 在 8.3.0
发布过一个新命令 ng deploy
,能够将 Angular 应用部署到远程服务器或云存储上面,例如:Firebase hosting、Azure、GitHub pages 等等,这也是算是 Angular CLI 最后一个将 Angular 应用从开发到部署打通全能选手工具了。git
这里我以 ng-deploy-oss 为示例,演示如何将 Angular 应用部署到七牛云。github
一、建立一个新项目npm
ng new hello-world --defaults
二、添加 ng-deploy-oss
json
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)
三、部署bash
ng deploy
最后直接打开浏览器,就能直接访问 ng build --prod
后的效果。服务器
事实上,ng deploy
如同其余 Angular schematics 指令 ng add
、ng g
等类同,我曾经在 浅谈 Angular Cli Schematics 针对 Schematics 作过介绍。要自定义一个 ng deploy
只须要完成两个部分:async
ng-add
来修改 angular.json
来告知使用哪一个 Angular Libary 来部署;createBuilder
。给 angular.json
增长 deploy
节点:工具
{ "serve": {}, + "deploy": { + "builder": "ng-deploy-oss:deploy", + "options": {} + } }
以及 package.json
的 devDependencies
增长依赖包:ui
+ "ng-deploy-oss": "~1.0.0",
有兴趣能够参考
ng-deploy-oss
的
ng-add 的完整写法。
它是一个固定的方法:
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 应用部署至国内常见的几个云存储上仍是挺有意义的。
(完)