前端从零到一开发自己组件库并发布到npm

好多前端小伙伴干了五六年,一直在做切图仔,一看项目没啥亮点。今天开始,我就分享下自己开发组件库的历程。
注:文章会持续更新

在这里插入图片描述

环境

	"dumi": "^2.2.0",
    "father": "^4.1.0",

这里我们站在巨人的肩膀上,先整出来组件库,从零自己搞也可以,不过会非常浪费时间。

注意:版本很重要,后面会列举father在打包过程中的坑,这里就不展开了。

创建项目

先创建空文件夹,并进入,执行
npx create-dumi

// 选择组件库模板
React Library # 用于构建组件库,有组件例子

// 启动
npm start

配置

主要是导航和菜单的配置: .dumirc.ts
这块比较简单,看官网即可

修改Foo选项为组件库

修改Foo选项为组件库,在.dumirc.ts文件中添加配置

import { defineConfig } from 'dumi';

export default defineConfig({
  // ...
  themeConfig: {
    name: 'dumi2-demo',
    nav: [
      { title: '介绍', link: '/guide' },
      { title: '组件', link: '/components/Foo' }, // components会默认自动对应到src文件夹
    ],
  },
  // ...
});

项目名称换行

.dumirc.ts

export default defineConfig({
 // ...
 styles: [
   `.dumi-default-header-left {
      width: 220px !important;
   }`,
 ],
});

处理打包时less报错问题

问题:demo中使用less是可以的,但是组件用less打包时会报错; 环境:father v4

解决方案:安装 @babel/runtime 即可 ,会自动处理
yarn add @babel/runtime -D

注意:版本的坑来了,网上找到解决方案(如配置lessInBabelMode)大多是 father v2版本的,好多配置已失效。
在这里插入图片描述

开发基础组件

开发button组价并暴露出去

src/Button/index.tsx

import React, { type FC } from 'react';
export interface ButtonProps {
  type?: 'primary' | 'default';
  children?: React.ReactNode;
}


const Button: FC<ButtonProps> = ({
  children
}) => {
  return (
    <div>
      <button>{children}s</button>
    </div>
  )
};

export default Button;

组件源代码添加好后,需要在src/index.ts中引入后暴露一下:

// src/index.ts
export { default as Button } from './Button';

在这里引入并暴露出去以后,就可以在项目中通过import { Button } from ‘dumi2-demo’;来引入了。

添加demo示例

每一个组件我们可以加一个demo示例,方便使用者能更方便的使用。
在Button目录下新建一个demo文件夹,内建一个基础演示base.tsx文件

// src/Button/demo/base.tsx

import React from 'react';
import { Button } from 'dumi2-demo';

export default () => {
  return (
    <>
      <Button type="default">默认按钮</Button> &nbsp;
      <Button type="primary">主要按钮</Button>
    </>
  );
}

添加组件文档

再在该文件同目录新建一个index.md文件作为文档说明,这也是生成静态文档站点所需要的。
src/Button/index.md

---
category: Components
title: Button 按钮 # 组件的标题,会在菜单侧边栏展示
toc: content # 在页面右侧展示锚点链接
group: # 分组
  title: 基础组件 # 所在分组的名称
  order: 1 # 分组排序,值越小越靠前
---

# Button 按钮

## 介绍

基础的按钮组件 Button。

## 示例 

<!-- 可以通过code加载示例代码,dumi会帮我们做解析 -->
<code src="./demo/base.tsx">基础用法</code>

## APi

<!-- 会生成api表格 -->
| 属性 | 类型                   | 默认值   | 必填 | 说明 |
| ---- | ---------------------- | -------- | ---- | ---- |
| type | 'primary' | 'default' | 'default |  false  | 按钮类型 |

添加单元测试

参考3.5节 https://juejin.cn/post/7222804347830206525#heading-10

今天先写到这,有时间继续写
在这里插入图片描述

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Vue 是一个流行的前端框架,可以用于创建 SPA(单页应用程序)。要创建一个 Vue 的前端开发 SDK 包,需要按照以下步骤: 1. 确定你的 SDK 包需要提供哪些功能和接口,这些接口需要与后端 API 接口对接。需要有清晰的设计文档和接口文档。 2. 搭建开发环境,可以使用 Vue CLI 或手动配置。创建好项目后需要添加一些必要的依赖包,例如 axios(用于网络请求)和 vue-router(用于路由)等。 3. 根据设计文档和接口文档,创建 SDK 的接口,可以采用插件的方式来扩展 Vue 的功能,也可以创建一个独立的 Vue 实例来管理接口。 4. 编写测试用例来保证 SDK 的功能正常,可以使用 Jest 等测试框架进行测试。 5. 发布 SDK 包,可以使用 npm 或者私有仓等方式进行发布。 需要注意的是,创建一个前端开发 SDK 包需要有一定的开发经验和技能,需要熟练掌握 Vue 框架和相关技术栈。同时需要保证 SDK 的稳定性和可扩展性,以及易用性和兼容性。 ### 回答2: Vue.js是一个流行的JavaScript框架,用于构建用户界面。创建一个前端开发SDK包可以帮助其他开发者更方便地使用Vue.js进行开发。 首先,我们需要在开发SDK包之前安装好Vue.js,以及其他可能需要的依赖项。可以通过npm或yarn来安装这些依赖项。 然后,我们可以创建一个适当的目录结构来组织我们的SDK包。在这个目录下,可以创建一个名为index.js的主要文件,用于暴露SDK的核心功能。 在index.js文件中,可以编写Vue组件、指令、过滤器等,以及其他处理逻辑。可以使用Vue.js提供的各种API来构建各种功能,以满足SDK用户的需求。 在开发SDK包的过程中,需要考虑到其他开发者可能会使用SDK的各种使用场景。所以,在编写SDK代码时,可以将各种配置选项、参数等暴露出来,使得SDK在不同的环境中更加灵活和可定制。 可以使用ES6的模块化语法来组织代码,以便于其他开发者能够按需引入和使用SDK的功能。可以将各种组件、指令等按照功能进行划分,然后以模块的形式暴露出来。 为了帮助其他开发者更好地了解和使用SDK,可以编写文档和示例代码。文档可以包括SDK的API参考、使用指南、示例代码等。示例代码可以展示如何使用SDK的不同功能,以及在不同场景下的用法。 最后,在编写完SDK包后,可以使用类似npm的工具将SDK发布到包管理器上,供其他开发者下载、使用和贡献。在发布时,可以为SDK包添加版本号,并按照语义化版本控制规范来管理和更新SDK的版本。 通过创建一个前端开发SDK包,可以帮助其他开发者更加便捷地使用Vue.js进行开发,并促进Vue.js社区的发展和成长。 ### 回答3: Vue.js 是一款流行的前端开发框架,可以通过它来创建一个前端开发 SDK 包。 首先,我们需要使用 Vue CLI 命令行工具来快速生成一个基于 Vue.js 的项目。通过运行 "vue create sdk-package" 命令,我们可以创建一个项目并选择需要的特性和插件。接下来,我们可以设置一些初始配置,例如选择使用 TypeScript 还是 JavaScript,是否启用单元测试等等。 在项目创建完成后,我们可以开始编写 SDK 的代码。首先,我们可以在 src 目录下创建一个 sdk 目录,并在其中编写我们的 SDK 功能的各个模块。例如,我们可以创建一个 api.ts 文件来处理和服务器接口的通信,创建一个 utils.ts 文件来存放一些辅助工具函数等等。 在编写功能模块的时候,我们需要根据具体的需求来设计相应的 API 接口和函数。例如,我们可以为 SDK 创建一个初始化函数,该函数可以用来初始化一些全局设置。我们还可以为 SDK 创建一些业务相关的方法,例如登录、注册等等。 在编写完功能模块后,我们可以在 src 下的 main.ts 中导入并注册这些模块。这样,我们的 SDK 功能就可以在项目中使用了。 为了方便其他开发者使用我们的 SDK 包,我们可以将其打包成一个 npm 包。可以使用命令 "npm run build" 来构建我们的 SDK 包文件。构建完成后,我们可以发布npm供其他开发者下载和使用。 总结: 通过使用 Vue CLI 创建一个 Vue.js 项目,并在其中编写 SDK 功能模块,最后通过打包成 npm 包来发布我们的前端开发 SDK 包。这样,其他开发者就可以方便地引入和使用我们的 SDK,加快他们的前端开发流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值