首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

零打造组件库

组件库打包是我们的重头戏,我们主要实现以下目标: 导出 umd / cjs / esm 三种规范文件 导出组件库 css 样式文件 支持按需加载 这里我们围绕 ​package.json​ 的三个字段展开...main​,是包的入口文件,我们通过 ​require​ 或者 ​import​ 加载 ​npm​ 包的时候,会 ​main​ 字段获取需要加载文件 ​module​,是由打包工具提出的一个字段,目前还不在...package.json 官方规范,负责指定符合 esm 规范的入口文件。...当 ​webpack​ 或者 ​rollup​ 加载 ​npm​ 包的时候,如果看到有 ​module​ 字段,会优先加载esm​ 入口文件,因为可以更好的做 ​tree-shaking​,减小代码体积...导出 ​cjs​ 或者 ​esm​,意味着模块化导出,并不是一个聚合的 ​JS​ 文件,而是每个组件是一个模块,只不过 ​cjs​ 的代码符合 ​Commonjs​ 标准,​esm​ 的代码 ​ES

1.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

React Native 持续部署实践— push 代码构建出新版的 Growth

作为一个『咨询师』,我要再一次地切换技术栈,混合应用开发转向 React Native。 重写 Growth 项目,由于业务内容繁多,也因此变成了一个庞大的工程。...因此在这一篇文章里, 我们将介绍基于下面的几个框架来搭建持续集成: React Native 与持续集成服务器 Travis CI 的使用 单元测试 Jest 及 UI 测试框架 React Test...实践上证明,快了十几秒: cache: yarninstall:- yarn install 正常的持续集成作业,只会进行 eslint 和单元测试。... mock 这些方法,如下是用来 mock 包 react-native-device-info 的 getVersion 方法: jest.mock('react-native-device-info...总的来说,React Native 有一些测试还是不容易写的。并且诸如 WebView 这样的组件,测试的时候会报错~~。

2.1K50

如何自动化测试 React Native 项目 (下篇) - 单元测试

接着上篇的内容, 这篇文章会详细的介绍 Glow 我们如何写单元测试, 以及 React Native 各个模块单元测试的详细实现方式。...当 snapshot 结果需要升级更新, 只需要执行 jest -u 指令即可更新之前生成的 snapshot 结果。 为什么 Snapshot React 测试是可靠的呢?... React(以及 React Native ) 的开发理念, 开发者把重点放在描述要显示的组件不同输入时的静态状态,然后交给React去处理UI的更新。...Logging 测试 我 Logging 测试把 logger 这个 module 初始化测试 global 的 mock 了一个 spy 函数。...总结 Glow 的 React Native 项目测试, 我们有大量的单元测试,包含了Component/Reducers/Action Handlers/Selectors/Utils/WWW

3.2K21

前端单元测试Jest

概述 关于前端单元测试的好处自不必说,基础的介绍和知识可以参考之前的博客链接:React Native单元测试软件的测试领域,测试主要分为:单元测试、集成测试和功能测试。...单元测试计算机编程单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。...这样,进行一些和数据相关的测试,可以测试前准备一些数据,测试完成后清理测试数据。这部分的知识可以参考官方的全局API。...Snapshot 快照测试第一次运行的时候会将被测试ui组件不同情况下的渲染结果保存一份快照文件,后面每次再运行快照测试,都会和第一次的比较,除非执行“yarn test – -u”命令删除快照文件...附: 实例源码 参考: React Native单元测试 Jest测试官方文档

2.6K20

前端单元测试,更进一步

前端测试@2022 如果 2014 年 Jest 的第一个版本发布开始计算,前端开发领域工程化的单元测试能力已经发展了八年有余。...Jest 集成了 Jasmine 等以往各种被证明有效的单元测试框架和断言等工具,也可以用来完成包含外部接口服务的集成测试等。...最近几年热门的 vite 打包工具配套的 vitest,也是完全兼容 Jest 工具栈的;除了本身相比于 Jest 带来了比较大的性能提升之外,vitest 还提供了更好的 ESM 等支持。...play 一下 开发实践对比几种测试,Jest/vitest 单元测试易于开发人员编写,但其运行在命令行下,不够直观;而 Storybook 展示直观,却大部分只能靠开发者人工检查其有效性,由于无法集成到...) ).toBeInTheDocument(); }; 类似单测命令行的红绿结果,交互式测试的每个步骤、其成功失败,都会显示相应的面板: 复用测试用例 不难发现,工具栈相同、写法无异,

1.1K00

jest 单元测试改善老旧的 Backbone.js 项目

对于这样的既有项目,之前的文章也进行过分析,常常面临依赖不清、封装混乱,以及缺乏测试等问题;对之进行维护和新需求开发,结合其本身特点, TDD 的方式下进行渐进的改善,而非推倒重来,无疑是个可行的办法...实际的项目中,我们采用了 ES6 语法和 ESM 模块规范来编写源文件,并借助 babel 将其转译为 UMD 模块;最后通过 Require.js 提供的优化工具 r.js 来打包,并由 Require.js...通常的 Backbone 项目也可以忽略文中涉及 react 的部分。 升级测试框架 和之前文章的例子相同,本次依然采用 Jest 作为测试框架。...根据目标项目的情况采用了 enzyme-adapter-react-13 做适配 用 cross-env 设置环境变量 test,从而配置出适用于 jest 的 .babelrc 文件,且不影响生产环境...'npm.cmd' : 'npm', args: ['test'] } }, 这样之后的 build 任务,一旦有单元测试未通过,整个流程将停止执行。

3.4K10

编写跨运行时的 JavaScript 程序

除了历史失败的设计吸取的教训,它也其他编程语言,譬如 Rust、Go 借鉴了一些设计和工程理念。...比如在设计方面,去中心化的模块加载、安全模型、向 Web 标准 API 看齐、开箱即用的 Typescript; 工程化方面则体现在内置单元测试、基准测试、格式化、文档生成、打包成可执行文件。...同时尽量不影响现有的框架和程序的运行(兼容 Node.js) 用”兼容并包”来描述它最好不过,比如它同时支持 ESM 和 CommonJS,甚至允许这两个模块一个文件并存,而现在主流的观点是 CommonJS...Vitest、Jest 它面前就是弟弟 … 大有一番一统天下的架势(取代 Node、npm、webpack、jest 等)。...watch mode 支持 File 类 支持编译文件可执行文件 引入 Web Crypto API 引入实验性的 ESM Loader Hooks API 17.0 引入实验性的 fetch 支持

22120

那些年错过的React组件单元测试(上)

Jest 关于Jest,我们参考一下其Jest 官网[1],它是Facebook开源的一个前端测试框架,主要用于ReactReact Native单元测试,已被集成create-react-app...开源社区有超高人气,同时也获得了React官方的推荐。 ? Jest 本篇文章我们着重来介绍一下Jest,也是我们整个React单元测试的根基。 环境搭建 安装 安装Jest、Enzyme。...所有的模块都自动 mock 导入. clearMocks: 每个测试前自动清理 mock 的调用和实例 instance collectCoverage: 是否收集测试的覆盖率信息 collectCoverageFrom...: 模块搜索路径 moduleFileExtensions:代表支持加载文件名 testPathIgnorePatterns:用正则来匹配不用测试的文件 setupFilesAfterEnv:配置文件...总结 到这里,关于前端单元测试的一些基础背景和Jest的基础api就介绍完了,在下一篇文章,我会结合项目中的一个React组件来讲解如何做组件单元测试。 ?

4.9K20

JavaScript 测试教程 part 1:用 Jest 进行单元测试

本文是 JavaScript 测试教程 系列的第1部分 1. JavaScript测试教程-part 1:用 Jest 进行单元测试 2....它们还能够防止你修复一个 bug 生成另一个 bug。你可以测试程序的方方面面,单个函数及其返回值到浏览器运行的复杂程序。由于这是本课程的第一篇文章,因此我会简要对比一些流行的测试类型。...集成测试涵盖跨模块流程,其中各个模块在一起工作进行组合和测试。多亏了他,你可以用一种方法来确保你的代码整体上能够正常运行。...稍后我们将学习如何在 React 中使用 Jest 首先,让我们创建一些可以测试的简单函数。...涵盖的第一类测试是“单元测试”。为了执行它们,我们已经了解了 Jest 框架的基础知识。它包括有关如何运行测试(安装和文件命名)的知识。

2.8K20

QQ音乐商业化Web团队前端工程化实践总结

js文件需要进行网络请求,而网络请求的耗时是不可预期的,这使得CommonJS同步加载模块的机制浏览器端并不适用,我们不能因为要加载某个模块js而一直阻塞浏览器继续执行下面的代码。...解决全局命名污染的问题; 更贴近Web组件化的思想; 可以一些无法解析CSS的运行环境下执行,比如React Native等; JS赋予CSS更多的编程能力,实现了CSS和JS间的变量共享; 支持CSS...“我的模块没问题的,是你的模块出了问题” ——程序每一项功能我们都用测试来验证的它的正确性,快速定位出现问题的某一环。...BDD则是对TDD的一种补充,我们无法保证TDD的测试用例可以完全达到用户的期望,那么BDD就以用户期望为依据,用户的需求出发,强调系统行为。...[CSS模块化方案对比] 单元测试框架 单元测试框架我们选择了Jest,主要是因为开箱即用,不需要再引入断言库,生态也很好,较多用于React项目,而且组内的UI自动化测试系统是支持Jest的,这篇文章

4.2K112

beeshell:开源的 React Native 组件库

我们根据 UI 规范,统一定义样式变量并放置基础工具层,即 beeshell/common/styles/varibles.js 文件 React Native 应用,样式变量其实就是普通的...单元测试 单元测试(Unit Testing),是指对软件的最小可测试单元进行检查和验证。结构化编程的时代,单元测试单元指的就是函数。...一般情况下,考虑以上三种输入可以找出函数的基本功能点,单元测试与代码编写是“一体两面”的关系,编码对上述三种输入都是应该考虑的,否则代码的健壮性就会出现问题。...“白盒测试”也是比较常见的需求,Jest 内置了测试覆盖率工具,可以直接在命令添加 --coverage 参数便可以输出单元测试覆盖率的报告,结果如下: ?...使用 Jest 进行在快照测试, beeshell 第一次对某个组件进行测试,会在测试目录下创建一个 snapshots 文件夹,并将快照结果存放在该文件

1.8K10

React单元测试Jest + Enzyme(二)

前言 在上一篇教程,我们成功搭建了基于Jest和Enzyme的单元测试框架并成功地跑起来第一个单元测试,可以点击这里回顾一下。今天,我们重点讨论如何通过Jest来mock数据。...在上一篇文章,就用到了mock功能来忽略对多媒体文件和字体文件等的请求: "jest": { ... "moduleNameMapper": { "\\...._/__mocks__/fileMock.js", ... } } 当遇到.jpg等文件,就会执行fileMock.js的代码,简单的返回一个字符串: module.exports...root目录下的common/api/data文件夹: 单测实例 假设有以下组件,加载的时候会发送api请求获取数据: import React, {PureComponent} from 'react...在上面的例子,componentDidMount方法里就包含了请求api的方法。 总结 通过上面的步骤,就可以写出一个简单的模拟网络请求的单元测试了。

1.4K20

使用 Jest 进行前端单元测试

目前 Jest 已经 Facebook 开源的 React, React Native 等前端项目中被做为标配测试框架。 下面简单介绍一些 Jest 比较有用的功能和用法。...Mock Jest 自带一个 mock 系统,并支持自动和手动 mock。 通常项目中,要测试的文件可能带有很多调用依赖,另外单元测试环境和真实环境可也能存在差异,使得脱离真实环境不能直接运行。...可以通过 react-test-renderer,把 React 组件生成快照并暂存下来,之后跑用例如果组件结果发生了改变则报错提醒。 例如下面做个简单的例子: ....Jest ,不同的测试文件是分开独立执行的,如果担心各种 mock 和 unmock 不同测试用例之间造成冲突,可以按照分类把用例分开放到不同文件内。...下图为 react-native 源项目中执行 verbose 的 jest test ,控制台的实时输出: ? Jest 的覆盖率统计: ? 详细报错定位: ?

5.5K90

万字详文:彻底搞懂 Jest 单元测试框架

最后&源码 彻底搞懂 Jest 单元测试框架 本文主要给大家深入了解 Jest 背后的运行原理,并从零开始简单实现一个 Jest 单元测试的框架,方便了解单元测试引擎是如何工作的,Jest 编写单测相信我们已经很熟悉了...,为了测试同一个文件创建一个测试文件,命名为 test.spec.js,这特殊的后缀是 Jest 的约定,用于查找所有的测试文件。...jest-haste-map 用于获取项目中的所有文件以及它们之间的依赖关系,它通过查看 import/require 调用来实现这一点,每个文件中提取它们并构建一个映射,其中包含每个文件及其依赖项...接下来会进入 packages/jest-core/src/runJest.ts 文件的 runJest 方法,这里会使用传过来的 contexts 遍历出所有的单元测试并用数组保存起来。...,先判断是否 ESM 模块,如果是,使用 runtime.unstable_importModule 加载模块并运行该模块,如果不是,则使用 runtime.requireModule 加载模块并运行该模块

7.5K20

前端工程化实践总结 |

js文件需要进行网络请求,而网络请求的耗时是不可预期的,这使得CommonJS同步加载模块的机制浏览器端并不适用,我们不能因为要加载某个模块js而一直阻塞浏览器继续执行下面的代码。...解决全局命名污染的问题; 更贴近Web组件化的思想; 可以一些无法解析CSS的运行环境下执行,比如React Native等; JS赋予CSS更多的编程能力,实现了CSS和JS间的变量共享; 支持CSS...“我的模块没问题的,是你的模块出了问题” ——程序每一项功能我们都用测试来验证的它的正确性,快速定位出现问题的某一环。...BDD则是对TDD的一种补充,我们无法保证TDD的测试用例可以完全达到用户的期望,那么BDD就以用户期望为依据,用户的需求出发,强调系统行为。...CSS模块化方案对比 单元测试框架 单元测试框架我们选择了Jest,主要是因为开箱即用,不需要再引入断言库,生态也很好,较多用于React项目,而且组内的UI自动化测试系统是支持Jest的,这篇文章

4.4K41

写代码无BUG,网易云前端单元测试方案总结

给每一个文件都要手动引入 chai 比较麻烦 ,这时候可以给 mocha 配置全局脚本,项目根目录 .mocharc.js 文件加载断言库, 这样每个文件就可以直接使用 expect 函数了。...,所以搭建测试工具链要确定自己运行在什么环境,如果在 Node 只需要加一层 babel 转换,如果是真实浏览器,则需要增加 webpack 处理步骤。...Karma 本质上就是本地启动一个web服务器,然后再启动一个外部浏览器加载一个引导脚本,这个脚本将我们所有的源文件和测试文件加载到浏览器,最终就会在浏览器端执行我们的测试用例代码。...Jest 和 Jasmine 具有非常相似的 API ,所以 Jasmine 中用到的工具 Jest 依然可以很自然地使用。...另外测试 React组件除了 Enzyme 提供的操作, Jest 还有很多其他有用的特性,比如可以 mock 一个 npm 组件的实现,调整 setTimeout 时钟等,真正进行单元测试,这些工具也是必不可少的

9.5K20
领券