我正在开发一个javascript库,并在中设置了“browser”、“module”和“main”字段包.json,每个都有不同的入口点。
// package.json
"main": "./dist/umd/index.js",
"browser": "./dist/browser/index.js",
"module": "./dist/esm/index.js",
...
const x = 42;
const msg = match(x)
.caseLessThan(0, "Negative values not allowed")
.default(_ => `${_} items selected`);
alert(msg);
<script src="https://unpkg.com/x-match-expression/dist/browser/index.js"></script>
问题是,当尝试在另一个带有webpack的项目中使用库时,默认情况下它使用“browser”入口点,并且函数没有正确解析,从而在运行时出现未定义错误。
import {match} from "x-match-expression";
const x = 42;
const msg = match(x) // <--- match is undefined at runtime with default webpack settings
.caseLessThan(0, "Negative values not allowed")
.default(_ => `${_} items selected`);
我知道可以通过设置在webpack中设置解析字段resolve.main字段但这对我的库用户来说是违反直觉的,所以我不得不删除包.json但我不知道有没有更好的方法。
我应该在中使用“浏览器”字段吗package.json?或者我应该只提供浏览器包,但不在包.json与脚本标记一起使用?