React+ts+less+storybook的组件项目相关配置及其内容

React实战-基于Storybook的React组件测试 React实战-基于Storybook的React组件测试 ReactJs的测试方法和测试工具很多,主要有Jtest、Karma,但是有一些小的第三方工具也很简单、方便,其中StoryBook这款小工具很适合在页面UI直观的展示控件的允许效果,设置不同的运行场景。简单几步就能在网友上展示你的测试场景。 1.将storybook加入项目中 执行npm i --save @kadira/stor 阅读详情

使用create-react-app创建react项目

本地已有create-react-app

终端命令,脚手架生成react项目

create-react-app react-storybook-ts --template typescript

本地没有create-react-app

终端命令,脚手架生成react项目

npx create-react-app react-storybook-ts --template typescript

生成完项目后,cd到该文件夹

配置less样式(暴露webpack配置文件)

该方法通过暴露webpack配置文件来配置less
暴露配置文件
这里注意不要改动刚生产的项目,可能会造成无法eject
终端命令

npm run eject 

终端安装依赖

yarn add less less-loader --save-dev

在刚刚拉取出来的config文件件下面找到webpack.config.js(webpack配置文件,不同版本的webpack会有不同的名称,只要找到配置文件即可)
添加相关代码

const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;

{
	test: lessRegex,
	exclude: lessModuleRegex,
	use: getStyleLoaders(
		{
			importLoaders: 3,
			sourceMap: isEnvProduction
				? shouldUseSourceMap
				: isEnvDevelopment,
			modules: {
				mode: 'icss',
			},
		},
		'less-loader'
	),
	sideEffects: true,
},

{
	test: lessModuleRegex,
	use: getStyleLoaders(
		{
			importLoaders: 3,
            sourceMap: isEnvProduction
            	? shouldUseSourceMap
                : isEnvDevelopment,
            modules: {
                mode: 'local',
                getLocalIdent: getCSSModuleLocalIdent,
           	},
        },
        'less-loader'
	),
},

具体位置如下代码

// style files regexes
const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
const sassRegex = /\.(scss|sass)$/;
const sassModuleRegex = /\.module\.(scss|sass)$/;
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;

{
              test: sassRegex,
              exclude: sassModuleRegex,
              use: getStyleLoaders(
                {
                  importLoaders: 3,
                  sourceMap: isEnvProduction
                    ? shouldUseSourceMap
                    : isEnvDevelopment,
                  modules: {
                    mode: 'icss',
                  },
                },
                'sass-loader'
              ),
              // Don't consider CSS imports dead code even if the
              // containing package claims to have no side effects.
              // Remove this when webpack adds a warning or an error for this.
              // See https://github.com/webpack/webpack/issues/6571
              sideEffects: true,
            },
            {
              test: lessRegex,
              exclude: lessModuleRegex,
              use: getStyleLoaders(
                {
                  importLoaders: 3,
                  sourceMap: isEnvProduction
                    ? shouldUseSourceMap
                    : isEnvDevelopment,
                  modules: {
                    mode: 'icss',
                  },
                },
                'less-loader'
              ),
              // Don't consider CSS imports dead code even if the
              // containing package claims to have no side effects.
              // Remove this when webpack adds a warning or an error for this.
              // See https://github.com/webpack/webpack/issues/6571
              sideEffects: true,
            },
            // Adds support for CSS Modules, but using SASS
            // using the extension .module.scss or .module.sass
            {
              test: sassModuleRegex,
              use: getStyleLoaders(
                {
                  importLoaders: 3,
                  sourceMap: isEnvProduction
                    ? shouldUseSourceMap
                    : isEnvDevelopment,
                  modules: {
                    mode: 'local',
                    getLocalIdent: getCSSModuleLocalIdent,
                  },
                },
                'sass-loader'
              ),
            },
            {
              test: lessModuleRegex,
              use: getStyleLoaders(
                {
                  importLoaders: 3,
                  sourceMap: isEnvProduction
                    ? shouldUseSourceMap
                    : isEnvDevelopment,
                  modules: {
                    mode: 'local',
                    getLocalIdent: getCSSModuleLocalIdent,
                  },
                },
                'less-loader'
              ),
            },
                 // "file" loader makes sure those assets get served by WebpackDevServer.
            // When you `import` an asset, you get its (virtual) filename.
            // In production, they would get copied to the `build` folder.
            // This loader doesn't use a "test" so it will catch all modules
            // that fall through the other loaders.

在项目中添加storybook

下载初始化storybook

终端命令

npx storybook init

运行启动storybook

下载成功后终端命令启动storybook

yarn storybook

注:在这个版本的教程中,将使用 yarn 来运行大多数命令。 如果你已经安装了 Yarn,但更偏向使用 npm 替代,只需要在上面的命令后添加 --use-npm 标志,CRA 和 Storybook 都将基于此初始化。并且在完成本教程时不要忘记调整其中的命令为 npm 中对应的命令。

storybook配置less

在该项目的.storybook文件夹下的mian.ts文件
如图可以看到目录,及其需要修改的代码
在这里插入图片描述
mian.ts代码如下

import type { StorybookConfig } from "@storybook/react-webpack5";
const path = require("path");

const config: StorybookConfig = {
  stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
  addons: [
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/addon-onboarding",
    "@storybook/addon-interactions",
  ],
  framework: {
    name: "@storybook/react-webpack5",
    options: {},
  },
  docs: {
     autodocs: "tag",
  },
  // 这一个要添加
  webpackFinal: async (config: any) => {
    config.module.rules.push({
      test: /\.less$/,
      use: [
        { loader: "style-loader" },
        { loader: "css-loader", options: { modules: false } },
        {
          loader: "less-loader",
          options: { lessOptions: { javascriptEnabled: true } },
        },
      ],
    });
    return config;
  },
};
export default config;

此时配置组件的时候,引用less文件就不会报错了。

storybook配置别名

main.ts文件代码如下

import type { StorybookConfig } from "@storybook/react-webpack5";
const path = require("path");

const config: StorybookConfig = {
  stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
  addons: [
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/addon-onboarding",
    "@storybook/addon-interactions",
  ],
  framework: {
    name: "@storybook/react-webpack5",
    options: {},
  },
  docs: {
    autodocs: "tag",
  },
  // 这一个要添加
  webpackFinal: async (config: any) => {
    config.module.rules.push({
      test: /\.less$/,
      use: [
        { loader: "style-loader" },
        { loader: "css-loader", options: { modules: false } },
        {
          loader: "less-loader",
          options: { lessOptions: { javascriptEnabled: true } },
        },
      ],
    });
    return {
      ...config,
      // 添加 @ 指向src目录
      resolve: {
        ...config.resolve,
        alias: {
          ...config.resolve.alias,
          "@": path.join(__dirname, "../src/"),
        },
      },
    };
  },
};
export default config;

Playwright组件测试实战:为Vue/React/Svelte组件提供高保真测试方案 在现代前端开发中,单元测试和端到端测试是保障代码质量的两大支柱,但它们之间存在一个关键的测试真空地带——UI组件测试。单元测试在Node.js的JSDOM环境中运行,虽然速度快,但无法模拟真实的浏览器行为,导致样式、布局和原生事件相关的缺陷难以被发现。端到端测试虽然环境真实,但启动成本高、运行慢,且容易受到应用其他部分的影响。为了解决这些问题,组件测试应运而生,它旨在为单个UI组件提供一个隔离的、接近真实浏览器的测试环境,从而高效验证其交互逻辑与视觉表现。Playwright作为一款强大的浏览器自动化工具, 阅读详情

相关推荐

2024最新超详细无痛安装PyTorch,包括下载地址、环境配置与各种避坑指南

PyTorch更新很快,2024最新下载安装经验贴,包括anaconda+CUDA+cuDNN+PyTorch四部分的下载和安装。文章详细介绍了下载地址、环境配置、虚拟环境建立的问题,还温馨提示了各种闭坑指南。有需要的友友快过来康康!

qq_43596278的博客 11万+

搭建storybook--es6+react+less

1.新建项目文件夹项目结构如下,其中src存放源代码,.storybook和stories为storybook做准备 2.项目初始化cnpm init -y3.安装storybookcnpm install --save-dev @storybook/react4.安装es6+react+react-dom+lesscnpm install --save-dev react react-dom e

吴纯玲的博客 3732

UR5双臂Gazebo仿真(Python)

近来在Gazebo上搭了一个ur5双臂仿真平台。 差不多就是以下这样。 使用rostopic list查看一下话题,如下 显然,采用/left_arm_controller/follow_joint_trajectory/goal和/right_arm_controller/follow_joint_trajectory/goal两个话题来控制双臂的运动。 现在的问题是,如何保证双臂运动的一致性,即如何能保证双臂能同时接受到以上两个消息。 思路一:设置/left_arm_controlle

qq_42823342的博客 2233

React组件库实践:React + Typescript + Less + Rollup + Storybook

原先在做低代码平台的时候,刚好有搭载React组件库的需求,所以就搞了一套通用的React组件库模版。目前通过这套模板也搭建过好几个组件库。

Qlly 887

空心杯电机在美容仪器中的应用:为什么你的洗脸刷动力这么强?

本文深入解析了空心杯电机如何成为高端美容仪器的核心动力源。通过对比传统电机,揭示了其无铁芯、低惯量、零齿槽效应的技术优势,从而实现了强劲动力、极致静音与细腻震动的用户体验。文章详细阐述了空心杯电机在洁面刷、导入仪等美容仪器中的具体应用与选型考量,并指出了开发中驱动匹配、测试等关键实战要点。

j2k3l4的博客 1013

详解舵机的基本原理以及控制方法

文章目录什么是舵机?伺服控制硬件连接舵机规格SG90MG90SMG996R总结 什么是舵机? 舵机是伺服电机的一种,伺服电机就是带有反馈环节的电机,我们可以通过伺服电机进行精确的位置控制或者输出较高的扭矩; 舵机也叫也叫 RC 伺服器,通常用于机器人项目,也可以在遥控汽车,飞机等航模中找到它们。 类似舵机这样的伺服系统通常由小型电动机,电位计,嵌入式控制系统和变速箱组成。 电机输出轴的位置由内部电位计不断采样测量,并与微控制器(例如STM32,Arduino)设置的目标位置进行比较; 根据相应的偏差,控制

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 4万+

【Storybook】Storybook在React中的使用

本文将结合自身使用Storybook近半年的感受从: 什么是Storybook? 为什么要使用Storybook? 如何快速使用Storybook? 自定义Webpack配置 代理设置 这几个方面来介绍Storybook 1. 什么是Storybook? Storybook 是一个使用户能够独立创建组件,并在隔离的开发环境中以交互方式展示组件的工具。简单说就是组件的展示工具。 ...

云生流长的博客 5328

AutoJs调用DeepSeek大模型接口实战教程 AutoJs接入DeepSeek、 DeepSeek API调用 、 手机脚本接入大模型

通过这篇文章,我们用 AutoJs 成功接入了 DeepSeek Chat API。使用发送请求在 Header 里正确携带 API Key从里拿到最终返回结果这样一来,你就可以在 AutoJs 里实现一个智能助手脚本,甚至做更复杂的 AI 自动化工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 468

【react storybook】从零搭建react脚手架,并使用storybook发布组件库到npm,并生成可视化UI文档

【react storybook】从零搭建react脚手架,并使用storybook发布组件库到npm,并生成可视化UI文档

tuzi007a的博客 1912

【数据分析八步法】将模糊需求转化为可验证的分析问题

国内访问Huggingface官方源常遇网络问题,可通过切换国内镜像提升下载速度。三种配置方式:1)设置HF_ENDPOINT环境变量;2)在from_pretrained中直接指定镜像参数;3)修改本地Huggingface配置文件。常用镜像包括hf-mirror.com、阿里云ModelScope和清华镜像源。注意镜像同步延迟、私有模型限制,建议配合huggingface-cli工具使用,必要时取消代理设置。合理配置镜像源可显著改善Huggingface生态使用体验。

Mr数据杨 858

【制作100个unity游戏之30】使用unity实现一款2d俯视角RPG战斗游戏,主要使用InputSystem+有限状态机+A*寻路实现(完结,附带项目源码)

【制作100个unity游戏之30】使用unity实现一款2d俯视角RPG战斗游戏,主要使用InputSystem+有限状态机+A*寻路实现

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4653

React Component Library:快速搭建企业级React组件库的完整指南

React Component Library是一个功能强大的项目骨架,专为快速构建企业级React组件库而设计。它集成了Rollup打包工具、TypeScript类型系统和Storybook组件文档工具,让开发者能够轻松创建、测试和展示高质量的React组件。无论你是组件库开发新手还是有经验的开发者,这个完整指南都将帮助你快速上手并掌握企业级组件库的搭建流程。 ## 🚀 为什么选择React

gitblog_00323的博客 1096

【软考高级架构】论文范文12——论生成式AI在软件开发中的应用与挑战

随着生成式AI技术的跨越式发展,以大语言模型为代表的生成式AI正在深刻改变软件开发的传统模式。在代码生成、测试构造、文档编写等环节,生成式AI展现出显著的效率提升潜力,但其应用也面临着代码质量不可控、安全漏洞植入、版权合规等严峻挑战。本文以笔者主导的某大型金融企业智能研发辅助平台建设项目为案例,围绕生成式AI在软件开发中的应用实践与应对挑战的策略展开论述。笔者担任系统架构师,负责平台架构设计、模型选型、质量保障机制及安全防线构建。

qq837993702的博客 275

React Component Library开发实战:5个核心技巧提升组件库质量

React Component Library是一个基于Rollup、TypeScript、SASS和Storybook构建的组件库项目骨架,帮助开发者快速搭建属于自己的React组件库。本文将分享5个核心技巧,助你提升组件库的质量和开发效率。 ## 一、掌握Storybook:组件开发与展示的利器 📚 Storybook是组件库开发中不可或缺的工具,它能帮助你创建和展示组件。要在本地机器上

gitblog_00844的博客 435

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

storybook相关功能

storybook,功能:7.0版本以上增加less功能。适配 `@`....

仙途路漫漫其修远兮 678

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

从零构建企业级React组件库:技术选型、开发与工程化实践

组件化开发是现代前端工程的核心范式,它将可复用的UI元素、交互逻辑和设计规范封装成独立的代码单元。其原理在于通过模块化与封装,实现代码的高内聚、低耦合,从而提升开发效率和维护性。这一技术的核心价值在于统一团队技术栈与设计语言,保障项目长期稳定性,并显著降低新人学习成本。在实际应用场景中,无论是构建基础UI库还是业务组件库,都需要严谨的工程化实践。本文聚焦于使用React技术栈,结合TypeScript、Vite、pnpm workspace等现代工具链,详细拆解从技术选型、Monorepo项目搭建、组件开发

weixin_30814329的博客 537

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

React Component Library性能优化:代码分割与树摇动技术深度解析

在构建现代React组件库时,性能优化是至关重要的环节。本文将深入探讨如何通过代码分割和树摇动技术来优化你的React组件库性能,让你的应用加载更快、运行更流畅。😊 ## 为什么React组件库性能优化如此重要? 随着前端应用的复杂度不断增加,React组件库的性能直接影响用户体验。一个优化良好的组件库可以显著减少应用包大小,提高加载速度,并降低内存使用。通过代码分割和树摇动技术,你可以确保

gitblog_00543的博客 959

HTML Tidy 代码风格指南解读:从 CODESTYLE 约定到 foo_openlyrics 仓库源码验证

> 本指南围绕 HTML Tidy(libTidy 库与 tidy 命令行工具)官方维护者制定的代码风格约定展开,逐一解读其五条核心规范,并结合本仓库内 [tidy-html5-5.8.0](https://link.gitcode.com/i/ea19785067eb684b47b9e75a971f2906) 的真实源码逐条验证。读完本文,你将理解 Tidy 风格中缩进、注释、大括号、换行与指针

gitblog_00024的博客 328

项目根目录的CLAUDE.md

- 使用TypeScript + React - 遵循Airbnb代码规范 - 提交前必须通过所有测试 ## 常用命令 - 开发:npm run dev - 测试:npm test - 构建:npm run build ``` **多仓库上下文加载机制**: - **祖先加载**:从当前目录向上查找所有`CLAUDE.md`文件 - **后代加载**:仅在使用相关文件时加载子目录的`CLAUD

gitblog_00898的博客 499

从COLOR_CODE到设计系统:构建高效可维护的颜色管理体系

在软件开发与UI设计中,颜色管理是确保产品视觉一致性和可维护性的基础。其核心原理在于将颜色值从硬编码的散落状态,抽象为集中管理、语义化命名的设计令牌,从而建立单一可信源。这一技术实践的价值在于大幅降低多端协作的沟通成本,提升设计还原度,并为动态主题切换、品牌一致性维护等复杂场景提供底层支持。通过采用CSS自定义属性、设计令牌系统并结合现代前端工具链,开发者可以构建从基础色板定义、语义化映射到项目集成的完整颜色体系。本文以COLOR_CODE为切入点,深入探讨了如何系统化地管理颜色代码,并分享了在CSS变量、

weixin_30753873的博客 361

storybook配合vite + react生成组件文档

并删除多余文件,并创建必要文件夹。

QiuXiang_的博客 892

手把手教你快速搭建专属的storybook

什么是Storybook Storybook是一个辅助UI控件开发的工具。通过story创建独立的控件,让每个控件开发都有一个独立的开发调试环境。 Storybook的运行不依赖于项目,开发人员不用担心由于开发环境、依赖问题导致不能开发控件。 Storybook支持的框架覆盖主流的框架(React、Vue、Angular)。 由于使用React作为技术栈,本文将介绍使用react的项目如何配置S...

weixin_34217711的博客 3208

less和sass支持 css modules 一样的局部环境和使用方式,解决重名样式覆盖的问题

less和sass支持 css modules 一样的局部环境和使用方式,解决重名样式覆盖的问题

qq_33715850的博客 3362

Storybook使用tsconfig中的别名配置

配置在tsconfig中的别名系统在storybook框架下无法生效。

m0_37964621的博客 622

React项目,storybook实现通过git action动态部署到git page上

如果是默认一般都是在gh-pages的/(root)下面,要是存到了别的地方,记得改动pages。3.第三步:运行完成后到setting->pages 里设置自己部署需要的包存放的位置。4.最后显示这样就是成功啦~

scorpioop_1120的博客 425

storybook初探:利用storybook构建组件文档库

storybook初探:利用storybook构建组件文档库 之前的一些项目上用到了storybook来构建组件的文档库,虽不够完善,但仍总结了一些简单的内容以供回顾。 Storybook常用来打造团队的UI组件库,它可以对各个组件进行测试与编写文档。Storybook可以用于React,Vue和Angular上,本文主要介绍Storybook + React系统的构建。 本文将通过以下的顺序来介绍该系统的构建: 构建一个基本的react + storybook框架 完成一个基础的UI组件库 对

dasiylight的博客 4119
上一篇: Taro+React+TS+Redux+Taro UI项目
下一篇: React组件打包发布npm(create-react-app+ts+cesium)
IChenSY
博客等级 码龄6年 14粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值