unplugin-purge-polyfills
一个小型插件,用于将包导入替换为更好的原生代码。
这个包是一个 unplugin,支持多种打包工具。
在构建时,它会移除这些包的使用,转而直接使用原生替代品:
- is-number
- is-plain-object
- is-primitve
- is-regexp
- is-travis
- is-npm
- clone-regexp
- split-lines
- is-windows
- is-whitespace
- is-string
- is-odd
- is-even
- object.entries
- date
- array.of
- number.isnan
- array.prototype.findindex
- array.from
- object-is
- array-map
- is-nan
- function-bind
- regexp.prototype.flags
- array.prototype.find
- object-keys
- define-properties
- left-pad
- pad-left
- filter-array
- array-every
- index-of
- last-index-of
- abort-controller
- array-flatten
- array-includes
- has-own
- has-proto
- has-symbols
- object-assign
该项目正在积极开发中。
路线图
- 调研与 https://github.com/SukkaW/nolyfill 或 https://github.com/es-tooling/module-replacements 的更紧密集成
- 实现按需发布基础设施,以将此插件应用于已发布的包
使用方法
安装包:
# npm
npm install unplugin-purge-polyfills
import { purgePolyfills } from 'unplugin-purge-polyfills'
// rollup.config.js
export default {
plugins: [
purgePolyfills.rollup({ /* 选项 */ }),
],
}
配置
默认情况下,这个 unplugin 提供了一系列可以移除的 polyfill,但你可以通过提供 replacements
对象来禁用这些并添加自己的:
// rollup.config.js
export default {
plugins: [
purgePolyfills.rollup({
replacements: {
'is-string': false, /** 不提供这个 polyfill */
/**
* 为你代码库中的这个导入提供自定义 polyfill
* 确保这对每种用法都是正确的
*/
'node.extend': {
default: '(obj1, obj2) => { ...obj2, ...obj1 }'
}
}
}),
],
}
以下 polyfill 不会被清除,所以你可能想添加自己的代码来处理它们:
- node.extend
- extend-shallow
- xtend
- defaults
使用或试验 unplugin-purge-polyfill
的项目
鸣谢
感谢 https://github.com/es-tooling/module-replacements 和 https://github.com/esm-dev/esm.sh 提供的 polyfill 数据。❤️
灵感来自 https://github.com/SukkaW/nolyfill。❤️
💻 开发
- 克隆此仓库
- 使用
corepack enable
启用 Corepack - 使用
pnpm install
安装依赖 - 使用
pnpm dev
运行交互式测试
许可证
用 ❤️ 制作
根据 MIT 许可证 发布。