@serverless-devs/s 2.0.92 → 2.0.93-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/CONTRIBUTORS.md +2 -0
  2. package/bin/s-component +2 -0
  3. package/bin/s-set-workspace +2 -0
  4. package/docs/readme.md +94 -0
  5. package/docs/zh/awesome.md +296 -0
  6. package/docs/zh/cicd.md +200 -0
  7. package/docs/zh/cli_design.md +100 -0
  8. package/docs/zh/command/clean.md +63 -0
  9. package/docs/zh/command/cli.md +92 -0
  10. package/docs/zh/command/component.md +76 -0
  11. package/docs/zh/command/config.md +278 -0
  12. package/docs/zh/command/custom.md +73 -0
  13. package/docs/zh/command/init.md +148 -0
  14. package/docs/zh/command/readme.md +76 -0
  15. package/docs/zh/command/set.md +195 -0
  16. package/docs/zh/default_provider_config/alibabacloud.md +82 -0
  17. package/docs/zh/default_provider_config/aws.md +12 -0
  18. package/docs/zh/default_provider_config/azure.md +9 -0
  19. package/docs/zh/default_provider_config/baiducloud.md +8 -0
  20. package/docs/zh/default_provider_config/gcp.md +21 -0
  21. package/docs/zh/default_provider_config/huaweicloud.md +52 -0
  22. package/docs/zh/default_provider_config/readme.md +9 -0
  23. package/docs/zh/default_provider_config/tencentcloud.md +41 -0
  24. package/docs/zh/install.md +52 -0
  25. package/docs/zh/package_dev.md +142 -0
  26. package/docs/zh/quick_start.md +297 -0
  27. package/docs/zh/readme.md +90 -0
  28. package/docs/zh/tool.md +80 -0
  29. package/docs/zh/yaml.md +203 -0
  30. package/docs/zh/yaml_and_cli.md +67 -0
  31. package/lib/clean/index.js +43 -35
  32. package/lib/cli/cli-manager.js +33 -22
  33. package/lib/cli/index.js +60 -62
  34. package/lib/component/index.d.ts +1 -0
  35. package/lib/component/index.js +161 -0
  36. package/lib/config/add/index.js +39 -39
  37. package/lib/config/delete/index.js +49 -59
  38. package/lib/config/get/index.d.ts +0 -1
  39. package/lib/config/get/index.js +46 -51
  40. package/lib/config/index.js +36 -35
  41. package/lib/constants/index.d.ts +0 -1
  42. package/lib/constants/index.js +1 -5
  43. package/lib/core/command/command-manager.js +36 -43
  44. package/lib/core/component/index.d.ts +14 -7
  45. package/lib/core/component/index.js +78 -52
  46. package/lib/core/plugin/index.js +4 -3
  47. package/lib/daemon/template.js +2 -4
  48. package/lib/error/human-error.d.ts +12 -2
  49. package/lib/error/human-error.js +63 -28
  50. package/lib/error/human-warning.d.ts +8 -0
  51. package/lib/error/human-warning.js +19 -0
  52. package/lib/error/index.d.ts +10 -1
  53. package/lib/error/index.js +74 -27
  54. package/lib/index.js +89 -94
  55. package/lib/init/index.js +76 -79
  56. package/lib/init/init-config.js +3 -5
  57. package/lib/init/init-manager.js +3 -4
  58. package/lib/init/update-template.js +3 -5
  59. package/lib/onboarding/index.js +5 -5
  60. package/lib/set/analysis/index.js +41 -37
  61. package/lib/set/index.js +34 -33
  62. package/lib/set/locale/index.js +54 -53
  63. package/lib/set/registry/index.js +52 -52
  64. package/lib/set/workspace/index.d.ts +1 -0
  65. package/lib/set/workspace/index.js +61 -0
  66. package/lib/specification/parse.js +9 -6
  67. package/lib/update-notifier/index.js +10 -10
  68. package/lib/utils/command-util.d.ts +0 -2
  69. package/lib/utils/command-util.js +2 -42
  70. package/lib/utils/common.d.ts +1 -0
  71. package/lib/utils/common.js +100 -20
  72. package/lib/utils/core.js +3 -3
  73. package/lib/utils/handler-set-config.d.ts +1 -1
  74. package/lib/utils/handler-set-config.js +6 -7
  75. package/lib/utils/i18n/en.js +4 -4
  76. package/lib/utils/i18n/index.js +3 -3
  77. package/lib/utils/i18n/zh.js +3 -3
  78. package/lib/utils/storage.js +3 -4
  79. package/package.json +2 -2
  80. package/readme.md +64 -38
  81. package/shell/postbuild.sh +2 -0
  82. package/spec/readme.md +59 -0
  83. package/spec/zh/0.0.1/readme.md +47 -0
  84. package/spec/zh/0.0.1/serverless_pacakge_model/1.purpose_and_goals.md +3 -0
  85. package/spec/zh/0.0.1/serverless_pacakge_model/2.overview_and_terminology.md +14 -0
  86. package/spec/zh/0.0.1/serverless_pacakge_model/3.package_model.md +434 -0
  87. package/spec/zh/0.0.1/serverless_pacakge_model/4.application_scopes.md +3 -0
  88. package/spec/zh/0.0.1/serverless_pacakge_model/5.design_principles.md +3 -0
  89. package/spec/zh/0.0.1/serverless_pacakge_model/readme.md +12 -0
  90. package/spec/zh/0.0.1/serverless_registry_model/1.purpose_and_goals.md +18 -0
  91. package/spec/zh/0.0.1/serverless_registry_model/2.overview_and_terminology.md +18 -0
  92. package/spec/zh/0.0.1/serverless_registry_model/3.registry_model.md +61 -0
  93. package/spec/zh/0.0.1/serverless_registry_model/4.application_scopes.md +6 -0
  94. package/spec/zh/0.0.1/serverless_registry_model/5.design_principles.md +3 -0
  95. package/spec/zh/0.0.1/serverless_registry_model/readme.md +12 -0
  96. package/spec/zh/0.0.1/serverless_user_model/1.purpose_and_goals.md +3 -0
  97. package/spec/zh/0.0.1/serverless_user_model/2.overview_and_terminology.md +16 -0
  98. package/spec/zh/0.0.1/serverless_user_model/3.user_model.md +218 -0
  99. package/spec/zh/0.0.1/serverless_user_model/4.application_scopes.md +4 -0
  100. package/spec/zh/0.0.1/serverless_user_model/5.design_principles.md +3 -0
  101. package/spec/zh/0.0.1/serverless_user_model/readme.md +12 -0
  102. package/bin/s-set-locale +0 -2
  103. package/readme_zh.md +0 -72
package/readme.md CHANGED
@@ -1,71 +1,97 @@
1
- # Serverless Devs help documentation
2
-
3
1
  <div align=center> <img src="https://images.devsapp.cn/devs-github/logo.jpg" width="100%"/> </div>
4
-
2
+ <br>
5
3
  <p align="center">
6
4
  <a href="https://www.npmjs.com/package/@serverless-devs/s">
7
5
  <img src="https://img.shields.io/npm/v/@serverless-devs/s" alt="npm version">
8
6
  </a>
7
+ <a href="https://www.npmjs.com/package/@serverless-devs/s">
8
+ <img src="https://img.shields.io/npm/dy/@serverless-devs/s" alt="npm download">
9
+ </a>
10
+ <a href="https://nodejs.org/en/">
11
+ <img src="https://img.shields.io/badge/node-%3E%3D%2010.8.0-brightgreen" alt="node.js version">
12
+ </a>
9
13
  <a href="https://github.com/Serverless-Devs/Serverless-Devs/blob/master/LICENSE">
10
14
  <img src="https://img.shields.io/badge/License-MIT-green" alt="license">
11
15
  </a>
16
+ <a href="https://github.com/Serverless-Devs/Serverless-Devs/issues">
17
+ <img src="https://img.shields.io/github/issues/serverless-devs/serverless-devs" alt="issues">
18
+ </a>
19
+ <a href="https://github.com/Serverless-Devs/Serverless-Devs/discussions">
20
+ <img src="https://img.shields.io/github/discussions/serverless-devs/serverless-devs" alt="discussions">
21
+ </a>
12
22
  </p>
13
23
 
14
-
15
-
16
24
  <p align="center">
17
- <span>Use Serverless like a mobile phone</span><br>
18
- <span> <a href="./readme_zh.md">中文文档</a> |English </span>
25
+ <span><b>Serverless 应用全生命周期管理工具</b></span><br>
19
26
  </p>
20
27
 
21
- ## Project introduction
28
+ **Serverless Devs** 是一个开源开放的 Serverless 开发者平台,致力于为开发者提供强大的工具链体系。通过该平台,开发者不仅可以一键体验多云 Serverless 产品,极速部署 Serverless 项目,还可以在 Serverless 应用全生命周期进行项目的管理,并且非常简单快速的将 Serverless Devs 与其他工具/平台进行结合,进一步提升研发、运维效能。
29
+
30
+ ![图片alt](https://serverless-article-picture.oss-cn-hangzhou.aliyuncs.com/1635319587379_20211027072627561648.png)
22
31
 
23
- ```text
24
- _________ .__ ________
25
- / _____/ ______________ __ ___________| | ____ ______ ______ \______ \ _______ ________
26
- \_____ \_/ __ \_ __ \ \/ // __ \_ __ \ | _/ __ \ / ___// ___/ | | \_/ __ \ \/ / ___/
27
- / \ ___/| | \/\ /\ ___/| | \/ |_\ ___/ \___ \ \___ \ | ` \ ___/\ /\___ \
28
- /_______ /\___ >__| \_/ \___ >__| |____/\___ >____ >____ > /_______ /\___ >\_//____ >
29
- \/ \/ \/ \/ \/ \/ \/ \/ \/
32
+ > 更多关于 Serverless Devs 的介绍可以参考[项目介绍文档](./docs/zh/readme.md)
33
+
34
+ # 快速上手
35
+
36
+ 安装 Node.js(>=10.8.0) NPM 包管理工具;
37
+ 安装 Serverless Devs 开发者工具;
38
+ ```shell script
39
+ $ npm install @serverless-devs/s -g
30
40
  ```
41
+ ❸ 在命令行中执行命令`s`,并按回车,开启你的 Serverless 之旅;
42
+
43
+ > 更多详细信息可以参考[Serverless Devs 安装文档](./docs/zh/install.md)和[快速入门指南](./docs/zh/quick_start.md)
44
+
45
+ # 帮助文档
46
+
47
+ - [安装文档](./docs/zh/install.md)
48
+ - [命令行操作](./docs/zh/command/readme.md)
49
+ - [Yaml规范](./docs/zh/yaml.md)
50
+ - [CI/CD平台集成](./docs/zh/cicd.md)
31
51
 
32
- Serverless Devs is an open source serverless platform that provides a robust set of tools for developers. Developers can use Serverless Devs to experience serverless products on multiple clouds and deploy serverless projects.
52
+ > 如果您想为 Serverless Devs 贡献 Package(包括组件和应用),您可以参考 [Package开发文档](./docs/zh/package_dev.md)
33
53
 
54
+ > Serverless Devs 天然支持 Yaml 模式与 Cli 模式,关于两者的区别和试用场景,可以参考文档[ Yaml 模式 Cli 模式对比](./docs/zh/yaml_and_cli.md)
34
55
 
35
56
 
36
- ### Support for mainstream serverless services and frameworks
57
+ # 相关资源
37
58
 
38
- Serverless Devs is a developer platform where components and plug-ins are provided. Serverless Devs allows each user to use the services and frameworks of serverless projects in a pluggable manner and participate in the development of components and plug-ins. Serverless Devs provides friendly support for both industry-grade serverless services and open source serverless frameworks. Developers can quickly get started with mainstream serverless services and frameworks without the need to learn all serverless tools.
59
+ 目前 Serverless Devs 项目已经支持的 FaaS 平台/产品:
39
60
 
40
- ### Flexible and open
61
+ - 阿里云函数计算(FC): [项目仓库](https://github.com/devsapp/fc)
62
+ - AWS Lambda: [项目仓库](https://github.com/devscomp/lambda)
63
+ - 百度智能云函数计算(CFC): [项目仓库](https://github.com/xinwuyun/cfc)
64
+ - 华为云函数工作流(FG): [项目仓库](https://github.com/xinwuyun/fg)
65
+ - 腾讯云云函数(SCF): [项目仓库](https://github.com/devscomp/scf)
41
66
 
42
- Serverless Devs can describe resources in Alibaba Cloud services such as Function Compute, API Gateway, and Object Storage Service. It can also describe actions such as install, build, and publish by using the plug-ins and hooks provided by Serverless Devs. Serverless Devs does not restrict component commands. Developers are encouraged to develop more capabilities for different components to deal with more complicated scenarios. For example, Alibaba Cloud Function Compute components support conventional capabilities such as function deployment and removal, as well as customized capabilities such as log querying, metric querying, local building, dependency installation, and debugging. Such a flexible and open platform is especially useful for automated deployment and operations and maintenance (O&M). You can improve the O&M efficiency of your serverless projects by 90% if you integrate Serverless Devs into the full lifecycle of your projects.
67
+ > 尽管以上 FaaS 平台/产品已经有人贡献或在持续维护中,但是我们仍然非常欢迎大家可以参与贡献/维护,除此之外,其他的 FaaS 平台/产品(例如 Google Cloud Platform Functions、Azure Functions等),我们也非常期望社区的小伙伴们可以参与开发和贡献。
43
68
 
69
+ > 🚀 除此之外 Serverless Devs 项目还拥有很多优秀的组件和应用,可以参考[Awesome](./docs/zh/awesome.md)
44
70
 
45
- ## Help documentation
71
+ # 项目贡献
46
72
 
47
- - [Installation](https://github.com/Serverless-Devs/docs/blob/master/en/install.md)
48
- - [Command Instruction](https://github.com/Serverless-Devs/docs/blob/master/en/command.md)
49
- - [Yaml Specification](https://github.com/Serverless-Devs/docs/blob/master/en/yaml.md)
50
- - [Package Dev](https://github.com/Serverless-Devs/docs/blob/master/en/dev.md)
51
- - [Registry](https://github.com/Serverless-Devs/docs/blob/master/en/registry.md)
73
+ 我们非常希望您可以和我们一起贡献这个项目。贡献内容包括不限于代码的维护、应用/组件的贡献、文档的完善等,更多详情可以参考[ 🏆 贡献指南](./CONTRIBUTING.md)
52
74
 
53
- ## References
75
+ 与此同时,我们也非常感谢所有[ 👬 参与贡献的小伙伴](./CONTRIBUTORS.md),为 Serverless Devs 项目贡献的努力和汗水。
54
76
 
55
- [Component / Application Awesome](https://github.com/Serverless-Devs/package-awesome)
77
+ # 开源许可
56
78
 
57
- ## Get started
79
+ Serverless Devs 遵循 [MIT License](./LICENSE) 开源许可。
58
80
 
59
- ### Steps to deploy a blog system for beginners
81
+ 位于`node_modules`和外部目录中的所有文件都是本软件使用的外部维护库,具有自己的许可证;我们建议您阅读它们,因为它们的条款可能与[MIT License](./LICENSE)的条款不同。
60
82
 
61
- - Download the command-line tool: `npm install -g @serverless-devs/s`
62
- - Initialize a template project: `s init devsapp/start-zblog`
63
- - Deploy the project: `cd start-zblog && s deploy`
83
+ # 交流社区
64
84
 
65
- ### Steps to build an enterprise website for beginners
85
+ 您如果有关于错误的反馈或者未来的期待,您可以在 [Issues](https://github.com/serverless-devs/serverless-devs/issues) [Discussions](https://github.com/serverless-devs/serverless-devs/discussions) 中进行反馈和交流。如果您想要加入我们的讨论组或者了解 Serverless Devs 的最新动态,您可以通过以下渠道进行:
86
+
87
+ <p align="center">
88
+
89
+ | <img src="https://serverless-article-picture.oss-cn-hangzhou.aliyuncs.com/1635407298906_20211028074819117230.png" width="200px" > | <img src="https://serverless-article-picture.oss-cn-hangzhou.aliyuncs.com/1635407044136_20211028074404326599.png" width="200px" > | <img src="https://serverless-article-picture.oss-cn-hangzhou.aliyuncs.com/1635407252200_20211028074732517533.png" width="200px" > |
90
+ |--- | --- | --- |
91
+ | <center>关注微信公众号:`serverless`</center> | <center>联系微信小助手:`xiaojiangwh`</center> | <center>加入钉钉交流群:`33947367`</center> |
92
+
93
+ </p>
66
94
 
67
- - Download the command-line tool: `npm install -g @serverless-devs/s`
68
- - Initialize a template project: `s init devsapp/start-metinfo`
69
- - Deploy the project: `cd start-metinfo && s deploy`
95
+ -----------
70
96
 
71
- For more examples, enter `s init`.
97
+ > Serverless Devs 开发者工具遵循 [Serverless Devs Model](./spec/readme.md),更多模型/规范信息可以参考 [Serverless Registry Model](./spec/zh/0.0.1/serverless_registry_model/readme.md),[Serverless User Model](./spec/zh/0.0.1/serverless_user_model/readme.md) 以及 [Serverless Package Model](./spec/zh/0.0.1/serverless_pacakge_model/readme.md);另外,关于项目设计的一些细节可以参考[开发者工具设计文档](./docs/zh/tool.md)
@@ -10,6 +10,8 @@ esbuild lib/set/index.js --bundle --log-level=error --minify --external:@serverl
10
10
  esbuild lib/set/registry/index.js --bundle --log-level=error --minify --external:@serverless-devs/core --platform=node --format=cjs --target=node10.4 --allow-overwrite --outfile=lib/set/registry/index.js
11
11
  esbuild lib/set/locale/index.js --bundle --log-level=error --minify --external:@serverless-devs/core --platform=node --format=cjs --target=node10.4 --allow-overwrite --outfile=lib/set/locale/index.js
12
12
  esbuild lib/set/analysis/index.js --bundle --log-level=error --minify --external:@serverless-devs/core --platform=node --format=cjs --target=node10.4 --allow-overwrite --outfile=lib/set/analysis/index.js
13
+ esbuild lib/set/workspace/index.js --bundle --log-level=error --minify --external:@serverless-devs/core --platform=node --format=cjs --target=node10.4 --allow-overwrite --outfile=lib/set/workspace/index.js
13
14
  esbuild lib/clean/index.js --bundle --log-level=error --minify --external:@serverless-devs/core --platform=node --format=cjs --target=node10.4 --allow-overwrite --outfile=lib/clean/index.js
15
+ esbuild lib/component/index.js --bundle --log-level=error --minify --external:@serverless-devs/core --platform=node --format=cjs --target=node10.4 --allow-overwrite --outfile=lib/component/index.js
14
16
  esbuild lib/update-notifier/index.js --bundle --log-level=error --minify --external:@serverless-devs/core --platform=node --format=cjs --target=node10.4 --allow-overwrite --outfile=lib/update-notifier/index.js
15
17
 
package/spec/readme.md ADDED
@@ -0,0 +1,59 @@
1
+ # Serverless Devs Model(SDM)
2
+
3
+ Serverless Devs Model(SDM,下文简称SDM)的官方文档,主要用于介绍 SDM 的模型详情与相关规范。
4
+
5
+ Serverless Devs Model(SDM) 是一种与厂商 FaaS 平台无关的 Serverless 架构工具链模型,用于定义通用的 Serverless 架构工具使用标准,让开发者更专注于业务逻辑,提升 Serverless 应用开发、部署、运维效率,通过该模型,开发者可以通过一种更灵活、更通用的方法使用不同云厂商以及开源的 Serverless 产品,进而更高效、更简洁、更便利的实现 Serverless 应用管理。
6
+
7
+ ## 介绍
8
+
9
+ "Serverless应用的开发人员应该更关心业务代码,而不需要更多精力去适应不同Serverless平台(包括不同厂商的开发者工具学习,不同功能的使用等)。"
10
+
11
+ ![](https://serverless-article-picture.oss-cn-hangzhou.aliyuncs.com/1631771269638_20210916054752754202.png)
12
+
13
+ ### 为什么需要工具模型
14
+
15
+ 就目前来看 Serverless 架构厂商锁定严重,不同厂商会有不同的工具,不同的使用途径,这使得开发者在应用开发的过程中,以及在混合云部署、运维的过程中面临了诸多困难:
16
+
17
+ - **学习难度大**:开发者要针对不同的云厂商学习不同的工具使用方法,接受不同 Serverless 平台的使用方法,包括不限于发布部署、运维、构建等众多流程;
18
+ - **工具扩展差**:很多 Serverless 平台提供的开发者工具,往往是由开发团队提供对应的功能,使用者仅具有使用的功能,如需进行部分的定制化能力,或拓展能力,是难以扩展的;
19
+ - **适配成本高**:多云部署,业务迁移是生产过程中常见的行为,由于 Serverless 架构厂商锁定严重导致多云部署、业务迁移时学习成本以及转换成本非常高;
20
+
21
+ 在 Serverless Devs Model(SDM) 中,我们提出了一种以应用为中心,以组件为途径的方法:
22
+
23
+ - **应用概念优先**:该模型将会以应用纬度进行项目管理,而不再单单以资源形式进行项目管理,这将对应用的开发和定义有着更清晰的定义;
24
+ - **组件化功能透出**:该模型将不会提供任何与 Serverless 平台相关的功能,这些所有的功能都将会通过组件,以一种可插拔的形式对开发者透出,Serverless 开发者可以在一个应用中,同时使用多种组件,实现一个完整的应用部署,甚至可以同时实现混合云的部署;
25
+ - **通用功能的抽象**:该模型将会推进 Serverless 架构在不同平台下的通用功能的抽象,例如应用的构建、调试功能等都可以通过组件形式进一步抽象为更多的 Serverless 开发者提供开发支持;
26
+
27
+ :trophy: 我们的目标是:
28
+
29
+ - 开发者可以通过一套工具更简单、更方便、更快速的使用不同 Serverless 平台的产品/功能,包括不限于构建、调试、部署、运维等不同的流程或者阶段;
30
+ - 开发者可以以应用的视角去看到 Serverless 应用,甚至是可以通过一行命令将 Serverless 应用部署到不同的 Serverless 平台;
31
+ - 开发者可以非常简单的进行Onboarding的流程,可以体验一致的进行不能上层能力的抽象;
32
+
33
+ ## 模型学习
34
+
35
+ 模型本身由 Serverless Devs 项目驱动,并作为一组版本话 API 文档进行维护,如下所示:
36
+
37
+ - [v0.0.1 (Serverless Devs v2.x)](zh/0.0.1/readme.md)
38
+
39
+ ## 社区
40
+
41
+ ### 贡献
42
+
43
+ > 有关详细信息,请参阅[贡献指南](../CONTRIBUTING.md)。
44
+
45
+ 针对 spec 的贡献也可以参考以下内容:
46
+ - 将 Serverless Devs 仓库 fork 到自己的账号/组织下;
47
+ - 对 spec 内容进行修改,更新,完善;
48
+ - 对对应版本下的`readme.md`进行更新,添加自己到`作者`->`贡献者`中;
49
+ - 提`Pull requests`到仓库`Serverless-Devs/Serverless-Devs`的`docs`分支下;并添加 [Anycodes](https://github.com/anycodes) 、 [hanxie](https://github.com/hanxie-crypto) 等作为Reviewers,同时在Comment中填写好更新理由;
50
+
51
+ ### 会议时间
52
+
53
+ - 等待社区反馈
54
+
55
+ ## 协议
56
+
57
+ Serverless Devs 是一个遵循 [MIT](../LICENSE) 协议的开源项目。
58
+
59
+ Serverless Devs 使用的 node_modules 以及其他第三方的依赖库都可能有其遵循的协议,我们推荐你阅读并了解这些协议,因为其中的条款可能和 MIT 协议中的不完全相同。
@@ -0,0 +1,47 @@
1
+ # Serverless Devs Model(SDM) v0.0.1 文档
2
+
3
+ - 版本:v0.0.1
4
+ - 作者:
5
+ - 发起人:
6
+ - [Anycodes](https://github.com/anycodes)
7
+ - 贡献者:
8
+ - [hanxie](https://github.com/hanxie-crypto)
9
+ - [git-qfzhang](https://github.com/git-qfzhang)
10
+ - 时间:2021.9.16
11
+ - 内容:
12
+ - [Serverless Registry Model](./serverless_registry_model)
13
+ - [Serverless Package Model](./serverless_tool_model)
14
+ - [Serverless User Model](./serverless_user_model)
15
+
16
+ ## 简介
17
+
18
+ Serverless Devs Model(SDM) v0.0.1 文档是由 Serverless Devs 社区发起编写的第一版关于 Serverless 工具链的规范模型文档。该文档将会主要通过 Serverless 工具链体系中的 **Registry模型**,**开发工具模型**以及**用户使用模型**三个模块进行撰写。
19
+
20
+ ![](https://serverless-article-picture.oss-cn-hangzhou.aliyuncs.com/1631773288370_20210916062130083859.png)
21
+
22
+ 由上图所示,Serverless Devs 的开发角色分为两部分:
23
+ - **Package developer**:指的是开发/贡献符合 Serverless Package Model 规范的组件或者公开的应用案例;这部分开发者通常会吧应用发布到对应的 Registry 上;
24
+ - **Serverless developer**:指的是 Serverless 应用的开发者,这部分开发者通过使用 Package developer 开发的公共应用案例或者引用不同的组件,将自己的应用部署到不同的 Serverless 平台,或者对应用进行不同的处理,包括不限于构建、观测、压测、调试等;
25
+
26
+ 同时通过上图也可以看到两个比较明显的词汇:Component和Application:
27
+ - **Component**:指的是组件;是由 Package developer 开发并发布的符合 Serverless Package Model 规范的一段代码,通常这段代码会在应用中被引用,并在 Serverless Devs 开发者工具 中被加载,并按照预定的规则进行执行某些动作。例如,将用户的代码部署到 Serverless 平台;将 Serverless 应用进行构建和打包;对 Serverless 应用进行调试等;
28
+ - **Application**:指的是应用;可以由 Package developer 公开发布到 Registry,以供更多人学习和使用,例如某位贡献者贡献了一个猫狗识别的案例到Registry;也可以由 Serverless developer 开发,例如某人开发了一个 人脸识别的应用;通常情况下一个应用可以引用一个或者多个组件,并通过 Serverless Devs 开发者工具 工具部署到 Serverless 平台,例如我开发了一个猫狗识别的应用,在这个应用中引用了 Lambda 组件帮助我将部分业务逻辑部署到 FaaS 平台,同时我也引用了 Website 组件帮助我把前端业务代码部署到对象存储中;
29
+
30
+ 通过上图,同样也可以看到 Serverless Devs Model 包含了以下三个模块:
31
+
32
+ - **Registry模型**:一个开放的 Serverless Registry Model。Package的开发者可以将自己开发的组件,或者待分享的应用发布到该平台。该平台可以使用目前 Serverless Devs 所支持的 Github Resitry, Gitee Registry, Serverless Registry,也可以按照该规范搭建私有的 Registry 以完成部分能力。详情可以参考[Registry模型文档](serverless_registry_model)
33
+ - **开发包模型**:一个关于 Serverless Package 的规范。Package developer 需要遵循该规范进行组件的开发或者应用的共享,否则将无法被 Serverless Devs 开发者工具 工具所识别和加载,也无法被 Application 所引用,并实现预期的功能。详情可以参考[开发包模型](serverless_pacakge_model)
34
+ - **用户使用模型**:Serverless developer 在进行应用开发时所需要遵守的约定,以确保 Serverless Devs 开发者工具 可以准确识别相对应的内容,并按照预期加载对应的 Component,完成预期的功能。详情可以参考[用户使用模型文档](serverless_user_model)
35
+
36
+ ## 社区
37
+
38
+ ### 贡献
39
+
40
+ 有关详细信息,请参阅[贡献指南](../../../CONTRIBUTING.md)。
41
+
42
+
43
+ ## 协议
44
+
45
+ Serverless Devs 是一个遵循 [MIT](../../../LICENSE) 协议的开源项目。
46
+
47
+ Serverless Devs 使用的 node_modules 以及其他第三方的依赖库都可能有其遵循的协议,我们推荐你阅读并了解这些协议,因为其中的条款可能和 MIT 协议中的不完全相同。
@@ -0,0 +1,3 @@
1
+ # 目的和目标
2
+
3
+ Serverless Package Model(简称SPM,下文将使用SPM代替)的目标是定义一种 Serverless Package 开发模型以及开发者规范;核心目的是基于这套模型或者规范所开发的项目,可以被 Serverless Registry 所接受,并且被 Serverless Devs 开发者工具所识别,按照 Serverless 开发者的预期实现实现预定的功能。
@@ -0,0 +1,14 @@
1
+ # 概述和术语
2
+
3
+ Serverless Package Model(SPM) 是 Package 开发者所需要使用的模型,以及遵循的规范。从形态组成纬度包括应用与组件两部分;同文件树组成来看包括用于自描述的`publish.yaml`文件,以及业务代码`:
4
+
5
+ ![](https://serverless-article-picture.oss-cn-hangzhou.aliyuncs.com/1631934027954_20210918030028156081.png)
6
+
7
+
8
+ ### Package与Package Model
9
+
10
+ 相对来说,Package是一个实际的产物,由规范的代码组成,目的是完成某个功能或者表示一个案例;而Package Model相对来说是抽象的存在,表示的是一种规范与规则。
11
+
12
+ - Package是由指符合 SPM 规范的代码,其目标是用来实现模型功能,包括不限于部署业务逻辑到 Serverless 平台,调试 Serverless 应用代码等;
13
+ - Package Model 是 Serverless Devs 的 Package 开发规范,只有按照该模型,遵循该规范的 Serverless Package 才可以被 Serverless Devs 开发者工具 所识别,并且可以成功的发布在符合 Serverless Registry Model 规范的 Serverless Registry 平台上;
14
+