"use strict";(self.webpackChunkfes_js=self.webpackChunkfes_js||[]).push([[617],{4148:(e,a,s)=>{s.r(a),s.d(a,{data:()=>n});const n={key:"v-d7fa887a",path:"/guide/contributing.html",title:"贡献指南",lang:"zh-CN",frontmatter:{},excerpt:"",headers:[{level:2,title:"包概览",slug:"包概览",children:[]},{level:2,title:"开发准备",slug:"开发准备",children:[]},{level:2,title:"贡献文档",slug:"贡献文档",children:[]},{level:2,title:"贡献源码",slug:"贡献源码",children:[]},{level:2,title:"提交PR",slug:"提交pr",children:[]}],filePathRelative:"guide/contributing.md",git:{updatedTime:1656323604e3,contributors:[{name:"harrywan",email:"445436867@qq.com",commits:1}]}}},2526:(e,a,s)=>{s.r(a),s.d(a,{default:()=>I});var n=s(6252);const l=(0,n._)("h1",{id:"贡献指南",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#贡献指南","aria-hidden":"true"},"#"),(0,n.Uk)(" 贡献指南")],-1),r=(0,n._)("h2",{id:"包概览",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#包概览","aria-hidden":"true"},"#"),(0,n.Uk)(" 包概览")],-1),t=(0,n.Uk)("项目仓库借助于 "),o={href:"https://classic.yarnpkg.com/zh-Hans/docs/workspaces",target:"_blank",rel:"noopener noreferrer"},c=(0,n.Uk)("Yarn 工作区"),i=(0,n.Uk)(" 来实现 "),d={href:"https://en.wikipedia.org/wiki/Monorepo",target:"_blank",rel:"noopener noreferrer"},p=(0,n.Uk)(" Monorepo"),u=(0,n.Uk)(" ,在 "),h=(0,n._)("code",null,"packages",-1),b=(0,n.Uk)(" 目录下存放多个互相关联的独立包。"),f=(0,n.uE)('
@fesjs/create-fes-app
: 创建项目模板模块。提供create-fes-app
命令,提供创建多种类型项目模板的能力。
@fesjs/compiler
: 编译时插件管理模块。定义插件的生命周期、插件配置、插件通讯机制等。
@fesjs/runtime
: 运行时插件模块。集成了vue-router,定义运行时插件生命周期、插件通讯机制。
@fesjs/preset-build-in
: 内置插件集。包含dev
、build
等命令,集成webpack5+babel,提供方便编写插件的API,入口文件处理,路由处理等能力。
@fesjs/fes-template
: 适用于PC类型的模板项目。
@fesjs/fes-template-h5
: 适用于H5类型的模板项目。
@fesjs/plugin-${name}
: 官方插件。
@fesjs/fes
: 入口模块。提供fes
命令和 API 入口,封装@fesjs/compiler
+ @fesjs/runtime
+ @fesjs/preset-build-in
,用户只需要安装此依赖和其他插件。
开发要求:
',3),m={href:"http://nodejs.org",target:"_blank",rel:"noopener noreferrer"},g=(0,n.Uk)("Node.js v14+"),k={href:"https://classic.yarnpkg.com/zh-Hans/docs/install",target:"_blank",rel:"noopener noreferrer"},v=(0,n.Uk)("Yarn v1"),_=(0,n._)("p",null,"本项目开发使用的一些主要工具:",-1),j={href:"https://jestjs.io/",target:"_blank",rel:"noopener noreferrer"},x=(0,n.Uk)("Jest"),U=(0,n.Uk)(" 用于单元测试"),w={href:"https://eslint.org/",target:"_blank",rel:"noopener noreferrer"},y=(0,n.Uk)("ESLint"),W=(0,n.Uk)(" + "),q={href:"https://prettier.io/",target:"_blank",rel:"noopener noreferrer"},P=(0,n.Uk)("Prettier"),z=(0,n.Uk)(" 用于代码检查和格式化"),E=(0,n.uE)('克隆仓库:
git clone https://github.com/WeBankFinTech/fes.js.git\n
进入fes.js
目录,安装依赖:
yarn\n
yarn docs:dev\n
菜单配置在/docs/.vuepress/configs/sidebar/zh.ts
中,可以通过此配置找到对应想修改的文档。
如果想添加图片,则可以先把图片添加至/docs/.vuepress/public
,在代码中使用:
<img :src="$withBase('framework.png')" alt="架构">\n
当md文档保存后,文档会自动更新,在http://localhost:8080/
查看。
Fes.js
统一使用ES Module
规范编写源码,代码会在 node 端和浏览器端执行,所以源码需要编译后才能发布成包,再被执行。
yarn dev\n
当我们修改build.config.js
中配置的包代码时,会把src
目录的源码编译后到lib
目录。
在了解Fes.js
设计前提下,修改核心代码或者插件代码。
根据需求选择模板项目来验证修改内容,比如选择fes-template
:
yarn
关联依赖cd packages/fes-template\nyarn dev\n
localhost:8000
查看结果每次修改插件或者核心代码后,等待自动编译完,需要在模板目录重新执行fes dev
,比较费时费力。
可以先在模板的 .fes
目录中找到对应临时代码,更改逻辑,验证完后再将变更逻辑保存到正式文件中。
注意
直接修改临时文件切莫重新执行fes dev
,修改会被覆盖。