Webpack 不尊重 package.json 中的 'module' 字段

Webpack doesn't respect 'module' field in package.json

我试图在 Webpack 中找出 tree-shaking 并且我注意到 运行 -webpack -optimize-minimize在这个 Example1 上是 11kB,而在 Example2 上是 7kB。

Rambda 在其 package.json 中有一个字段 module。据我所知,Webpack 不尊重它,我需要明确引用 esm 文件位置。

问题是错误还是功能?

示例 1

import {add} from 'rambda'

function fn(x) {
  return add(2)(x)
}
console.log(fn(3))

示例 2

import {add} from 'rambda/dist/rambda.esm.js'

function fn(x) {
  return add(2)(x)
}
console.log(fn(3))

我发现这是一个记录在案的错误 - https://github.com/webpack/webpack/issues/4674

What is the current behavior? When module's package.json contains browser, module & main fields, webpack is bundling browser build by default.

这个 bug 已经 6 个月没有解决,所以解决方案很难看 - 从 package.json 中删除 browser 字段,所以 Webpack 可以使用 模块 字段。