目前主流的前端框架vue和react都采用rollup来打包,为了探索rollup的奥妙,接下来就让我们一步步来探索,并基于rollup搭建一个库打包脚手架,来发布自己的库和组件。 ?...前言 写rollup的文章是因为笔者最近要规范前端开发的业务流程和架构,并提供内部公有组件库和工具库供团队使用。...在查阅大量资料并对比了webpack和rollup的优缺点之后,最终选择rollup来作为打包工具,我们最终要实现通过npm的方式安装我们的组件库和工具库: // 安装 npm install @xuxi...js代码,包括es6代码压缩 rollup-plugin-eslint — js代码检测 打包一个库用以上插件完全够用了,不过如果想实现对react等组件的代码,可以有更多的插件可以使用,这里就不一一介绍了...5. external属性 使用rollup打包,我们在自己的库中需要使用第三方库,例如lodash等,又不想在最终生成的打包文件中出现jquery。这个时候我们就需要使用external属性。
前言 项目中一直用的都是webpack,前一段需要开发几个类库供其他平台使用,本来打算继续用webpack的,但感觉webpack用来开发js库,不仅繁琐而且打包后的文件体积也比较大。...这里我简单对webpack和rollup做一个比较: 总体来说webpack和rollup在不同场景下,都能发挥自身优势作用。...其实webpack从2.0开始就已经支持Tree-shaking,并在使用babel-loader的情况下还可以支持es6 module的打包。实际上,rollup已经在渐渐地失去了当初的优势了。...但是它并没有被抛弃,反而因其简单的API、使用方式被许多库开发者青睐,如React、Vue等,都是使用rollup作为构建工具的。...我们期望在rollup.js打包的过程中就能使用babel完成代码转换,因此我们需要babel插件。
如果想学习如何发布一个js库或者框架,那么使用rollup更为适合,可以参考如下文章: 前端组件/库打包利器rollup使用与配置实战 实现效果 首先我们看一下实现效果,比如我们本地开发了一个Tag组件...实现 首先我是基于create-react-app来打包我们的UI库的,因为比较方便简单,当然我们也可以使用自己搭建的webpack来实现这一过程。...创建的项目下的src目录下新建components用来存放我们的组件,用app.js要导入我们的组件来测试效果,我们会把打包后的组件目录放在lib下,目录大致如下: ?...最后 完整配置文件我已经发布到github,如果想了解更多webpack,gulp,css3,javascript,nodeJS,canvas等前端知识和实战,欢迎在公众号《趣谈前端》加入我们一起学习讨论...关于es6核心知识点我做成了一个手册,方便大家随时查阅,在公众号回复【es6】即可领取。
相较而言,使用rollup打包组件库,就显得非常的简单容易,而本文也将介绍它的基础用法。...支持引用node_modules外部依赖 在 Rollup 中,我们要想使用 node_modules 里面的包,必须使用 @rollup/plugin-node-resolve 这个插件才行 这一点和...需要rollup版本2.x 开启本地服务 和webpack一样,rollup也可以开启本地服务,方便我们在本地调试组件库等。...:... external:['react'] //告诉rollup不要将此react打包,而作为外部依赖,在使用该库时需要先安装相关依赖 至此,rollup打包的基础配置已经完成 完整配置 rollup.config.js...: path.join(__dirname, 'src') }], }), ], external:['react'] //告诉rollup不要将此lodash打包,而作为外部依赖,在使用该库时需要先安装相关依赖
一、React库说明 React库包含两部分:1、React包含了所有基本功能;2、ReactDOM只包含了操作DOM的功能。...--- 三、HTML中使用React和JSX jsx是js的扩展语法,用标签式方式编写UI元素,无法被浏览器直接支持,需要预处理器把jsx转为浏览器支持的html标签,这个预处理器就是babel, React...# 安装完Node后,在terminal中创建React的单页面应用 npx create-react-app my-app # 运行此单页面项目 cd my-app npm start # 编译项目作为...Next.js - 官方文档 --- 3、Gatsby 用 React 创建 静态网站 的最佳方式,适合内容型的网站,提供最快的访问速度。...项目部署发布时,只需要上传编译后的 public 文件夹到Nginx服务器,即完成部署发布。 Gatsby - 官方文档 --- 五、参考文档: React的安装和使用!
babel-loader babel: 可以将 es6 代码转变为 es5, @babel/preset-react: 让 babel 支持 react 的预设 babel-loader:是让 webpack...使用 create-vite 创建应用 使用 vite 创建项目也非常简单 npm create vite@latest 我们可以在命令行中选择需要使用的的框架 选择使用 JavaScript 还是...老项目迁移会存在一定成本,可以参考我之前的文章《将 React 应用迁移至 Vite》 四:Gatsby Gatsby 不仅仅是一个静态网站生成器,它更是一个渐进式 Web 应用生成器。...创建 gatsby 应用 npm init gatsby 在命令行中选择开发语言,是否使用 CMS、是否支持、md、mdx 等 创建完成后,在命令行运行 npm run dev,打开 http://localhost...cli 来创建前端应用, 这样开发者可以更加专注业务开发, 以上便是创建 react 应用的常见 7 种方式,当然还有其他方案,无论使用哪种方式创建 React 项目,都需要了解 Node.js 和底层技术的使用
目前有许多项目使用了它,包括今年最流行的两个项目:Create React App 和 Gatsby。...Webpack 与 Parcel 同时定位于构建WEB 应用,而 Rollup 则定位于库的构建,它专注于 ES6 模块的性能提升上。...Rollup 已被一些主流的库使用,值得一提的是 React 团队也在 2017 年把它们的构建系统从 Browserify 切换到了 Rollup。...在 React 博客中提到 Rollup 可以预编译并且集成到应用中,能与 React 之类相似的库做到完美配合。...它有一个强大的社区并且 React 官方网站也是用 Gatsby 的来搭建的. React Static 是本类别的新面孔。
前言 组件库,一套标准化的组件集合,是前端工程师开发提效不可或缺的工具。 业内优秀的组件库比如 Antd Design 和 Element UI,大大节省了我们的开发时间。...的完整测试,并且对比了 Enzyme 和 @testing-library/react 的区别,是很好的入门文章 React 单元测试策略及落地:系统的讲述了单元测试的意义及落地方案 组件库打包...为了同时打包 frog.js 和 frog.min.js,在 _compileDistJS 中引入了 teser 插件,执行了两次 rollup 打包。...目录下的 tsx 文件,使用 babel 编译后,拷贝到 es 或 lib 目录。...结尾 本文是我在搭建组件库过程中的学习总结,在过程中学习到了很多知识,并且搭建了清晰的知识体系,希望能够对你有所帮助,欢迎在评论区交流~ 参考文档 Tree-Shaking性能优化实践 - 原理篇 彻底搞懂
Dodds 和一群热情的贡献者创建),它封装了 glamor库。 在过去的几年里,像SASS,Less和Stylus这样的CSS预处理器已经流行起来。...它带来了诸如 ES6 模块(不再需要 Babel 转换 import 语句)和 tree shaking (消除了打包中未使用的代码)等重要功能。...像 Gatsby这样的框架使您能够使用 React 和其他现代工具构建静态网站。不是每个网站都需要或应该成为一个复杂的现代 web 应用。...如果你正在寻找一个很好的例子,React 官方文档就是用 Gatsby 构建的。 在即将到来的2018年中,我们期待: 基于组件应用中的样式是否是组织 CSS 的最佳方式?...Flow 和 TypeScript 采取更强大的举措,使 JavaScript 更具结构。 虚拟现实使用类似 A-Frame、React VR和 Google VR这样的库正在向前迈进。
Rollup构建JavaScript库 在实际使用中,Rollup经常被用于打包一些库或框架(例如Vue、React等)。...在React团队的一篇文章中曾提到使用Rollup的获益: 最低限度的附加代码 对ES6 Modules的良好支持 通过tree shaking去除开发环境代码 通过自定义插件来实现React的一些特殊的打包逻辑...Rollup在设计之初就是主要偏向于JavaScript库的构建,以至于它并没有像Webpack那样对于应用开发有很大的支持,所以我们使用Rollup之前要斟酌下是否偏向自己的项目需求。...例如对于babel-loader的工作流程进行分析,大体为以下几步: 将ES6形式的字符串内容解析为AST(抽象语法树); 对AST进行语法转换; 生成ES5代码,并作为字符串返回。...对此,Parcel的处理流程很简单,它并没有loader的概念,而是自己的一套体系处理:它在不同的编译处理流程之间可以用AST作为输入和输出,不需要转换为字符串处理。
,可以提前在npm中搜索相关的名称字段, 看是否已被使用 main 包引入地址, 当一个包被引入到项目中,被使用时,将通这个地址查找对应的入口文件. version 版本号, 每次提交包到npm时,需要保证当前包版本与已发布的包版本不同...例如: 现在线上的包版本为 v1.1.1, 我本地包的版本设置为 v1.0.0, 不会影响我的发布。...这里我们在根目录下新建 test测试目录,模拟包的引入及使用 创建test目录 md test touch test/index.js 全局注册包 // 在包根目录下 /pkg npm link 引入本地包...发布到npm npm官网注册npm账号 npm login 登录npm npm publish 发布包 这里需要注意 npm的地址,当我们使用 cnpm, nrm等工具时。...需要将当前的npm源地址切换回原来的npm地址。 相关文档 eslint rollup npm 如何使用rollup打包前端组件/库
模块,对于基础库之类的东西很合适,因为es6项目一般会用babel转一遍,这样保证一次统一的babel翻译 支持打包成iife,非常小。...如果preset里含有该项,会把ESn转换为ES6 react:支持React JSX stage-0是最激进的做法,表示想要用babel能转的所有JS新特性,无论是否稳定。...P.S.最近babel提供了babel-preset-env,根据目标平台环境来自动添加preset,就不需要装一堆esxxx了,但只提供ES支持,react和polyfill并不会内置,也不应该内置。...babel-preset-es2015-rollup,external-helpers的作用后面介绍 如果想保留ES6风格,需要这样的babel配置: { "presets": [ ["stage...ES6支持这些特性,但async&await之类的更高级特性会被转换到ES6 babel plugin 在babel的3个处理环节中: parsing -> transforming -> generation
rollup在业务中基本很少会有接触到,通常在我们的业务中大部分接触的脚手架,或者自己搭建项目中,我们都是用webpack,无论是vue-cli,还是react-create-app他们都是基于webpack...二次封装的脚手架,所以我们对rollup更陌生一点,本文是一篇关于rollup的学习笔记,希望看完在项目中有所思考和帮助。...在开始本文前,主要会从以下几点去认识了解rollup 1、基础了解rollup打包不同模式,以及如何打包成不同模式的js 2、以一个实际的例子,将工具库用rollup与gulp实现任务流打包,验证打包后的...js是否ok,加深对rollup的使用 npm 初始化一个基础的package.json npm init -y 局部安装rollup npm i rollup 然后在当前目录下创建一个index.js...es6转换成es5 在上面的例子中我们代码里有使用es6,但是打包后仍未转译,es6转es5主要依赖以下几个关键插件rollup-plugin-babel,@babel/preset-env,@babel
包体的大小 webpack和rollup对比 webpack算是使用程序员使用最多的打包工具,面试中往往会问到webpack的相关问题,而rollup被问到的要少很多。...导致这种现象的一个原因是,「应用开发使用webpack,库开发使用rollup」的说法。...但当我们做前端应用时,性能分析往往要求更小的库,所以rollup更符合开发库的要求。 这次算是一个打包的实验,我们使用两个工具都对这个项目打一次包。...使用rollup打包 在rollup中使用的库比较多一点。...处理es6代码的转换 import babel from 'rollup-plugin-babel' // resolve将我们编写的源码与依赖的第三方库进行合并 import resolve from
,我们要理解变化的本质原因是什么 被限于浏览器的支持中 回到上一篇我讲的不变前端中,我在文章中明显的指出了,前端的变化会有一个分界线,在这个分界线之前,前端有一个最大的困境,就是: 前端技术始终被限制在浏览器的范围之内...事实上,JavaScript连一种基本的能力在很长的时间内都不具备: 在一个JS中引入另一个JS 终于在ES6的时代,JavaScript设计与引入了modules的概念,支持import了。...在其它方向都有自己的依赖管理 后端是使用maven或gradle来进行依赖管理 iOS最流行的是cocoapods Android是gradle来管理依赖 看到没,前端终于和其它技术方向站在同一起跑线上了...主流的转换技术包括: babel -- 这是将es6及以上的一些新特性转换成es5的语法 Webpack -- 它远比babel复杂,babel只做一件事,webpack则是做一堆事,它会使用ts-loader...去转换typescript,使用less-loader去转换less,也会使用balbel去转换es6以上的语法。
最近在重复赵轮子,用rollup搞一个react 组件库,今天就简单整理下用到的插件。...简单来说插件就是能力者,帮助你完成某事,相信大家都用过webpack构建项目,我们会用到各种plugin和loader来帮我们处理js、css、图片、压缩代码等,那么在rollup里想要完成某事,也同样需要对应的...rollup-plugin-babel 一看到babel我们就知道干什么的了,可以让我们提前使用js的新特性,把最新的语法转为es5....然后我们再结合@babel/preset-react插件来识别jsx代码。...(), json(), terser(), dts() ] } ]; 另外还有一些未使用的插件,在造轮子过程中应该还会用到
npm上下载使用的包,使用这个插件可以帮助我们使用) 使用 rollup-plugin-commonjs 来处理导入的commonjs模块的包(rollup默认只支持ES6模块的包) 使用...、react,可以在配置文件中使用 external 字段来告诉rollup不要将这些库打包 export default { // ......rollup.rollup 此函数范湖一个Promise,解析一个bundle对象,此对象带有不同的属性与方法,官网示例: ?...在 build 文件夹下有 index.js 文件和 rollup.config.js 两个文件,很显然,这个 rollup.config.js 文件就是rollup的配置文件。...5.完整参数配置 rollup完整参数可以在官网查询https://rollupjs.org/guide/zh#big-list-of-options
ES6 现在基本上开发中都在使用ES6,浏览器环境支持不好,可以用babel插件来解决。 采用‘二八定律’,主要涉及ES6常用且重要的部分。...问题: ES6模块化如何使用,开发环境如何打包 Class和普通构造函数有何区别 Promise的基本使用和原理 总结一下ES6其他常用功能 ES6模块化如何使用,开发环境如何打包 模块化的基本语法 /...export和export default与exports和module.exports的区别 require: node 和 es6 都支持的引入 export / import : 只有es6 支持的导出引入...} webpack 四大维度解锁webpack3笔记 rollup.js Rollup.js官网 npm init 安装 rollup.js需要的一些插件 npm i rollup rollup-plugin-node-resolve...Promise的时候,一直傻了吧唧的在想resolve()和reject()在什么时候调用。
我的答案是 React. ? React是一个由Facebook创建并开源的 UI 库,它所做的就是“data到HTML”(视图层)的那一步。...最后,React 还有一个各种包和库都非常健壮的庞大生态, 它的流行度意味着您可以在 Stack Overflow 等网站上找到很多帮助。...我之前确实说过使用单页应用去进行静态内容的开发是大材小用,但 React 有个秘密武器: Gatsby,一个能让你“欺骗”并且利用 React 所有好处的静态站点生成器,而且没有任何缺点。 ?...第3周:掌握 ES6 在我探索 React 的路上,我很快就能通过复制粘贴理解到一些要点,但却总有很多我不明白的地方。...跟 React 相比,Vue 有这些亮点: 官方维护的路由和状态管理库 注重性能 使用基于 HTML 的模板,降低学习曲线 较少的模板代码 按照实际情况来说,依靠 React 和 React Native
关于如何使用webpack4.0和rollup,可以参考笔者的以下几篇文章: 前端组件/库打包利器rollup使用与配置实战 基于create-react-app打包编译自己的第三方UI组件库并发布到npm...直接为浏览器使用 支持用 babel 或 rollup 打包 cjs 和 esm 支持多 entry 支持 lerna 支持 css 和 less,支持开启 css modules 支持 test 支持用...,我们只需要掌握babel和rollup的知识,就能用它轻松配置出一个强大的组件库脚手架。...如果对docz不太了解的可以在docz官网学习使用非常简单,只要你对markdown和react熟悉,分分钟入门。...siderbar 当前页面是否显示导航条 我们根据案例可以知道mdx里面可以使用es6的导入方式来引入组件或者变量,其实还有很多配置,这里就不一一举例了,感兴趣的可以到docz官网学习。
领取专属 10元无门槛券
手把手带您无忧上云