taro从0开发一个组件插件包
前言
经常看到taro物料市场 上有很多好用的组件,因此我也想造轮子。
网上有很多现成的方案,可是我觉得不好,他们都是在一个完整的项目中开发依赖的,实际上我们可能不需要这么多无用的依赖和代码。
所以我抽丝剥茧,找到了仅打包需要的环境配置 最纯净版!
我的插件开发方案
创建一个空项目,把你需要打包的taro的源码放在src中。
安装必须的依赖
然后安装一些必须的依赖。
1、rollup // 打包必备
2、@babel/core、@rollup/plugin-babel // 编译代码核心工具babel
3、babel-preset-taro // babel用于转换taro的插件,taro官方提供
4、@babel/plugin-transform-runtime // babel运行时需要的包(这个不是特别明白为何需要)
可选
1、node-sass、postcss、rollup-plugin-postcss // sass解析
增加配置文件
// rollup.config.js
import path from 'path'
import babel from '@rollup/plugin-babel';
import postcss from 'rollup-plugin-postcss'; // 可选:处理sass
const resolveFile = source => path.resolve(__dirname, source)
export default {
input: "src/index.jsx",
output: [
{
file: resolveFile('lib/index.js'),
format: 'es'
}
],
plugins: [
postcss({ // 可选:处理sass
extract: true
}),
babel({
babelHelpers: 'runtime',
"presets": [["taro", {
framework: 'react'
}]],
"plugins": ["@babel/plugin-transform-runtime"]
})]
};
打包
运行打包命令即可
npx rollup --c rollup.config.js
记得将入口文件改为打包后的文件路径
// package.json
{
...,
"main": "lib/index.js",
"files": [
"package.json",
"lib"
],
...
}
例子
总结
为什么要选择rollup打包呢?
因为一般开发插件或者组件库都不会使用webpack,比如我组件里因为了三方库。
webpack在打包我组件库的时候就会将其打进去,这不是必要的,因为使用者默认都会(是一般使用webpack)处理的导入三方包的语句。我在这里提前处理意义不大,而且还徒增我自己插件或者组件库的体积。还让代码变得巨大不利于阅读。
那为什么不用esbuild或者其他打包工具呢?因为插件较少。
taro从0开发一个组件插件包的更多相关文章
- 从0搭建Vue3组件库(四): 如何开发一个组件
本篇文章将介绍如何在组件库中开发一个组件,其中包括 如何本地实时调试组件 如何让组件库支持全局引入 如何在 setup 语法糖下给组件命名 如何开发一个组件 目录结构 在packages目录下新建co ...
- 如何从0开发一个Atom组件
最近用Atom写博客比较多,然后发现一个很严重的问题..没有一个我想要的上传图片的方式,比如某乎上边就可以直接copy/paste文件,然后进行上传.然而在Atom上没有找到类似的插件,最接近的一个, ...
- 开发一个shopify插件
开发一个shopify插件,shopify商城可以安装该插件:当用户在商城下单后,插件把订单数据按照指定格式传给disruptsports服务器: https://help.shopify. ...
- jQuery 开发一个简易插件
jQuery 开发一个简易插件 //主要内容 $.changeCss = function(options){ var defaults = { color:'blue', ele:'text', f ...
- 如何从0开发一个Vue组件库并发布到npm
1.新建文件夹在终端打开执行 npm init -y 生成package.json如下,注意如果要发布到npm,name不能有下划线,大写字母等 { "name": "v ...
- 开发一个jQuery插件——多级联动菜单
引言 开发中,有好多地方用到联动菜单,以前每次遇到联动菜单的时候都去重新写,代码重用率很低,前几天又遇到联动菜单的问题,总结了下,发现可以开发一个联动菜单的功能,以后想用的时候就方便多了.项目中每个页 ...
- 如何开发一个 PyCharm 插件
PyCharm 是很多 Python 开发者优先选择的 IDE,功能强大,跨平台,提供免费社区版,非常良心.如果你想自己给PyCharm添加一些功能怎么办呢?有两个办法: 通过提需求实现,到 JetB ...
- Cloudera5.8.3 HBase1.2.0开发必须的jar包
Cloudera的HBase开发环境下载依赖包特别麻烦,通常是直接在CDH服务器上拷.
- 开发一个chrome插件:将百度搜索热点屏蔽掉!
每次百度搜索,搜索结果的右边总是出现些乱七八糟的搜索热点(推的都是些什么玩意,高校替课和我有毛关系,几个悲伤的热点我用星号顶掉了). 强迫症想把它隐藏掉,我用的是chrome浏览器,受adblock( ...
- 如何开发一个maven插件
maven是当下最流行的项目管理工具,其丰富的插件为我们的工作带来了很大的便利. 但是在一些情况下,开源的插件并不能完全满足我们的需求,我们需要自己创建插件,本文就从0开始带大家一起创建自己的插件. ...
随机推荐
- unity手机花屏
关于Camera组件中Clear Flags的理解 - 知乎 (zhihu.com) https://blog.csdn.net/yanchezuo/article/details/77337755 ...
- Avalonia跨平台实战(二),Avalonia相比WPF的便利合集(一)
本话讲的是Avalonia中相比于WPF更方便的一些特性 布局 布局方面没什么好说的,和WPF没什么区别,Grid,StckPanel...这些,不熟悉的话可以B站上找一下教程 xml树 在WPF中我 ...
- 基于源码分析 HikariCP 常见参数的具体含义
HikariCP 是目前风头最劲的 JDBC 连接池,号称性能最佳,SpringBoot 2.0 也将 HikariCP 作为默认的数据库连接池. 要想用好 HikariCP,理解常见参数的具体含义至 ...
- .net clr 8年才修复的BUG,你让我损失太多了
一.概述 .NET社区修复问题可谓是龟速,一个BUG在.NET 7.0+版本才修复,你让我损失了几万块,我现在还记得客户那种质疑的表情,你了解那种尬尴的气氛吗?你让我一度怀疑dotnetty,我从来不 ...
- PC端网页/web通过自定义协议唤起启动windows桌面应用
PC端网页/web通过自定义协议唤起启动windows桌面应用 步骤: 写注册表 调用 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\ ...
- vue3 基础-全局组件和局部组件
组件和页面的关系可以理解为, 组件是页面的一部分. 形象地理解组件 就和盖房子一样的, 可以将房子粗略拆分3个组件(组成部分) 房顶, 房身, 地基. 同时房顶又可以拆分 ..... 这样在极限的情况 ...
- TypeScript实用技巧大杂烩,助你成为真正的全栈工程师
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- C#之结构
结构是用户定义的数据类型,与类非常相似,它们有数据成员和函数成员,但与类最重要的区别是:类是引用类型,而结构是值类似,结构是隐式密封的,这意味这它们不能被派生,所以结构类型不能为null,两个结构变量 ...
- Nmap 从入门到精通:详细指南
Nmap 从入门到精通:详细指南 1. Nmap 是什么? Nmap(Network Mapper)是一款开源的网络探测和安全审计工具,广泛用于以下场景: 主机发现:识别网络中的活动设备. 端口扫描: ...
- VSCode将本地项目代码上传到gitee中
1.创建远程仓库,这个就是该仓库的地址 2.查看git的版本 git --version 3.使用git init命令初始化git 4.使用git status命令来查看文件是否被修改 : gi ...