New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
渣渣灰手摸手带你开发一个组件库 #1
Comments
用 |
用脚手架是要快一些,但那只是一个工具。这篇帖子偏向是教程,是想抛出一些点:让用户了解开发一个组件库的全貌,大概知道每一步完成的职责,应该注意什么。这是一个开头,稍后会对一些技术点,比如打包优化再进行深入。 |
update: 2019-03-07, 使用umi-library重构,更加小巧更加优雅。 |
@jyzwf 稍后会有 pr 将一些常用 babel 插件集成。 |
好的,,谢谢了🤓 |
Module parse failed: Unexpected token (473:30)
| const { default: Component$$1, getInitialData } = await importspath; 我在本地npm run doc:dev启动的时候,报这个错,大神能帮忙看一下么,我直接用yarn create umi --library启动项目也报这个错 |
你安装依赖是怎么安装的? 使用 yarn install |
您好,在组件打包那里遇到了问题:
rollup打包的结果也是有问题:没有获取到React.createElement方法
然后我改了
打包结果是正确、可执行的,但是多出了es和lib两个目录。 我的问题是: |
@fohui 你好,umi-library 现在已升级为 https://github.com/umijs/father |
@clock157 你好,请问怎么在antdesignpro的工程项目里,指定将某些文件打包为一个组件? 也就是说有一个功能点很好,然后希望把这个功能点的相关代码打包成一个包含js,css文件的插件,其他项目直接引用就可以看到该功能点。 |
准备环境
涉及工具:umi-library
初始化项目
添加配置文件
.umirc.library.js
给
package.json
添加 script:这时, 你已经可以通过以下命令跑起来:
浏览器访问
http://127.0.0.1:8001/
,即可看到我们的组件开发环境。开发组件
规划目录结构, 入口为
src/index.js
,Foo
为我们的第一个组件Foo
组件代码如下:接下来跑一下我们的组件,在
src/Foo
目录下创建index.mdx
,基于mdx
,你可以使用markdown
加jsx
语法来组织文档。再看下我们的开发环境,可以看到组件效果
组件测试
为了保证组件质量,我们需要引入组件测试,测试方案可以直接使用 umi-test
在
src/Foo
目录新建测试文件index.test.js
然后在
package.json
的scripts
添加测试命令"scripts": { "doc:dev": "umi-lib doc dev", + "test": "umi-test" },
执行测试命令
$ yarn run test
执行结果,测试通过!
组件打包
组件开发测试完成后,需要打包成不同的产物以适应不同的场景。默认使用
rollup
打包生成三个格式的包:cjs
: CommonJs,能被 Node 和 打包工具如 webpack 使用。esm
: ES Module,支持静态分析可以 tree shaking。umd
: Universal Module Definition 通用包,既能像cjs
一样被使用,也可以发布到 cdn,通过 script 的方式被浏览器使用。修改
package.json
使用命令
打包结果
$ yarn run build yarn run v1.13.0 $ umi-lib build ℹ info Clean dist directory ℹ info Build cjs with rollup ℹ info Build esm with rollup ✨ Done in 2.75s.
验证产物
为了验证我们的产物是否可用,我们可以基于 umi 创建一个小 demo 使用一下,,在项目下创建目录
example
,目录结构:我们创建了
demo-foo
这个页面, 并使用Foo
组件,其index.js
代码:我们跑一下
启动好以后,console 会提示访问地址,打开后访问页面
/demo-foo
,就可以看到效果:发布组件
组件开发好,发布到 npm registry 就可以被大家使用,也可以发布到私有 registry 内部使用。如果没有 npm 账号需要先注册,然后登陆
yarn login
。修改
package.json
,添加发布 script,发布前执行测试用例,并且包里只含 dist 目录:执行命令
发布成功后,你就可以在 npm 看到 umi-library-demo
对于其他用户,就可以使用以下命令来安装使用这个包。
发布文档
在我们的组件开发完毕,文档相应写完后我们需要打包和部署文档,以便使用者查阅。
首先修改
package.json
,添加 script:umi-library
默认将文档部署到github.io
, url 规则是https://{yourname}.github.io/{your-repo}
,我们需要修改.umirc.library.js
配置一下文档静态资源的前缀base
。接下来执行命令:
部署成功后,以这个项目为例, 文档地址为:
https://clock157.github.io/umi-library-demo/
结语
示例完整代码
至此, 发布一个组件库的流程::搭建、开发、测试、打包、验证、发布、文档整个流程就走通了,在实际的开发过程中,你可能会遇到更多的问题,或者你对这篇教程有不理解的地方,都可以反馈我们。
钉钉群
这是手摸手系列第一篇, 本系列旨在为前端开发者服务, 探索前端开发的最佳实践. 后面会陆续出更多的教程, 欢迎留言提出你宝贵的建议和想了解的点.
The text was updated successfully, but these errors were encountered: