安装
从 npm 安装 Mutative 或通过 CDN 加载,并了解支持的运行环境。
包管理器
npm install mutativeMutative 没有依赖。仅包含 create 的生产构建经 Brotli 压缩后约为 8.3 kB;包含 create、apply、current 和 original 时约为 8.9 kB。其中已包含补丁、Map、Set 和原生数组方法支持,无需插件。
import { create } from 'mutative';环境要求
- JavaScript:Mutative 需要
Proxy,以及构建产物保留的 ES2018 语法(如对象展开):支持 Node.js 14.0 及以上、现代浏览器和 React Native 0.64 及以上。支持Proxy但不支持 ES2018 语法的引擎,如 Chrome 49–59、Firefox 18–54、Safari 10–11.0 和 Edge 12–18,需要由项目构建工具转译 Mutative。Internet Explorer 没有Proxy,因此不受支持。 - TypeScript:类型声明支持 TypeScript 5.0 及以上,详见 TypeScript。
开发与生产构建
包内提供开发构建和压缩后的生产构建。前者包含完整错误信息、警告和额外检查;后者用数字错误码表示错误。实际使用哪个构建由 process.env.NODE_ENV 决定:
- 打包工具解析 ESM 构建,其中的开发检查比较
process.env.NODE_ENV与'production'。webpack、Vite、Rollup 和 esbuild 的常见生产配置会将它定义为'production',从而移除开发代码。目标为 Node.js 的打包配置会解析 CommonJS 入口;请在该配置中定义process.env.NODE_ENV,或将 Mutative 设为外部依赖。 - Node.js 无论使用
require还是import,都会运行 CommonJS 构建,并在加载 Mutative 时根据NODE_ENV选择开发或生产版本。 - 未使用打包工具的浏览器没有
process,需要使用下方的生产 ESM 文件或 UMD 构建。
CDN
- Unpkg:
<script src="https://unpkg.com/mutative"></script> - JSDelivr:
<script src="https://cdn.jsdelivr.net/npm/mutative"></script> - ES 模块:
import { create } from 'https://unpkg.com/mutative/dist/mutative.esm.production.min.mjs';
<script> 标签加载生产 UMD 构建,提供全局变量 Mutative,例如 Mutative.create(baseState, recipe)。包中的其他 ESM 文件会读取 process.env.NODE_ENV,它由打包工具或 Node.js 提供;无打包工具的浏览器应使用上方的生产文件。
<script type="module">
import { create } from 'https://unpkg.com/mutative/dist/mutative.esm.production.min.mjs';
const state = create({ count: 0 }, (draft) => {
draft.count += 1;
});
console.log(state.count); // 1
</script>在 GitHub 上编辑
最后更新于 作者:unadlib