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开始带大家一起创建自己的插件. ...
随机推荐
- Assets, Resources and AssetBundles(五):AssetBundle usage patterns
这是系列文章中的第五章,内容涉及"Unity5"中的资产.资源和资源管理. 本系列的前一章介绍了AssetBundles的基本原理,其中包括各种加载API的低级行为.本章讨论了在实 ...
- eolink对数据进行四舍五入处理
下图"BalanceAmount"返回值显示小数点2位以后的值,这样就与预计匹配值不等导致脚本错误 对这个值进行四舍五入处理,比如返回值变成整数 var num = eo.env. ...
- Web前端入门第 38 问:CSS flex 弹性盒子与 grid 网格布局区别及应用场景
弹性盒子又称为 Flexbox,然而我更喜欢 flex 的叫法. flex 弹性盒子和 grid 网格布局作为前端开发中两把利器,它们的分界线没那么明显,虽然按照 MDN 的说法 flex 多用于一维 ...
- 2025dsfz集训Day5:最短路与最小生成树
DAY5 I : 最小生成树 \[Designed\ By\ FrankWkd\ -\ Luogu@Lwj54joy,uid=845400 \] 特别感谢 此次课的主讲 - Kwling 生成树及最小 ...
- 搞定 XLSX 预览?别瞎找了,这几个库(尤其最后一个)真香!
- Hey, 我是 沉浸式趣谈 - 本文首发于[沉浸式趣谈],我的个人博客 **https://yaolifeng.com** 也同步更新. - 转载请在文章开头注明出处和版权信息. - ...
- php获取前一天,前一个月,前半年,前一年的时间戳
#获取前一小时strtotime("-1 hour") #获取前一天strtotime("-1 day") #获取前一周strtotime("-1 w ...
- nim 语言实现迭代器
nim语言默认是支持 for x in items 这样的迭代的,而且一个类如果要支持迭代,可以用 yield 关键字,其实在 nim 主页上第二个例子就已经重点介绍了. # Thanks to Ni ...
- CTF实验吧:登陆一下? 不一样的SQL注入
http://ctf5.shiyanbar.com/web/wonderkun/web/index.html 发现 过滤了很多SQL敏感字符,并且 转码绕过也并不行 发现'和=没有进行过滤 考虑万能密 ...
- 等保2.0>Windows下实现MySQL数据库自动备份
说明: MySQL数据库安装目录:C:\Program Files\mysql-5.7.37-winx64\mysql-5.7.37-winx64 MySQL数据库存放目录:C:\Program Fi ...
- Cline技术分析:prompt如何驱动大模型对本地文件实现自主变更
prompt如何驱动大模型对本地文件实现自主变更 在AI技术快速发展的今天,编程方式正在经历一场革命性的变革.从传统的"人写代码"到"AI辅助编程",再到&qu ...