考虑这个非常做作的 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
为“bundle”,外部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中的其他问题是不同的:这个问题是将多个文件连接成一个。在这里,我们只是试图复制 Rollup 的行为,包括本地导入但不包括外部导入,就像在普通的 npm 包中一样。谢谢你。