【发布时间】:2021-04-02 18:48:03
【问题描述】:
考虑一下这个非常做作的 npm 包:
import clone from "lodash.clonedeep";
import calculate from "./utils/calculate"; // ".ts" omitted
function x(obj:any):number {
return calculate(clone(obj).a, clone(obj).b);
}
export { x }
假设我们想要一个 esm 构建这个。
- 如果我们将
esbuild设置为“捆绑”,外部clone和内部calculate导入都将在生成的文件中结束。 (这很酷,我想要iife构建)。 - 如果我们将
esbuild设置为不“捆绑”,则外部clone和内部calculate都不会出现在生成的文件中。 (这不酷,我还想捆绑calculate)。
在 Rollup 中,这种意义上的“捆绑”仅适用于外部导入;默认情况下,internal-ones 都放在一个文件中。
您知道如何将esbuild 设置为仅包含内部文件导入吗?获取:
import clone from "lodash.clonedeep";
function calculate(a, b) {
return a * b;
}
function x(obj){
return calculate(clone(obj).a, clone(obj).b);
}
export { x }
我只是想制作一些 esm/cjs npm 包构建。
SO 中的其他问题有所不同:this one 将多个文件合并为一个。在这里,我们只是试图复制 Rollup 的行为,包括本地导入但不包括外部导入,就像在普通的 npm 包中一样。谢谢。
【问题讨论】:
标签: javascript esbuild