首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >esbuild不捆绑文件

esbuild不捆绑文件
EN

Stack Overflow用户
提问于 2020-07-25 17:11:33
回答 2查看 2.2K关注 0票数 10

我正在尝试使用esbuild来捆绑和压缩npm项目中的文件。它会最小化我传入的每个文件,但它不是捆绑的。它给我的错误是当有多个文件时,我必须使用'outdir‘。但是,这会返回文件夹中所有这些最小化的文件。这不是我想要的行为,也不是捆绑的。我只想让它把所有这些文件合并成一个文件。

代码语言:javascript
复制
let {build} = require("esbuild");
let files = ["file1.js", "file2.js"];

build({
    entryPoints: files,
    outdir: "./views/dashboardPage/bundle",
    minify: true,
    bundle: true
}).catch(() => process.exit(1));

我将bundle设置为true,但它仍然要求我使用outdir,它只是将这些文件返回给我,最小化。他们基本上没有关于这方面的文档,关于它的每一篇在线帖子都只是从GitHub复制/粘贴自述文件。我怎样才能把它捆绑起来?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-26 06:44:35

每个入口点文件都将成为一个单独的包。每个包都包括入口点文件及其导入的所有文件。传递两个入口点将创建两个单独的包。捆绑过程与文件连接不是一回事。

如果希望将所有文件放在单个包中,则可以从单个文件中引用所有文件,并将该文件用作入口点:

代码语言:javascript
复制
import "./file1.js"
import "./file2.js"

使用esbuild执行此操作可能如下所示:

代码语言:javascript
复制
let {build} = require("esbuild");
let files = ["./file1.js", "./file2.js"];

build({
    stdin: { contents: files.map(f => `import "${f}"`).join('\n') },
    outfile: "./views/dashboardPage/bundle.js",
    minify: true,
    bundle: true
}).catch(() => process.exit(1));
票数 7
EN

Stack Overflow用户

发布于 2021-06-11 09:38:22

您可以使用inject选项(https://esbuild.github.io/api/#inject),例如,

代码语言:javascript
复制
const options = {
  entryPoints: ['index.js'],
  inject: ['file1.js', ..., 'fileN.js'],
  bundle: true,
  minify: true,
  sourcemap: true,
  outdir: path,
};
esbuild.buildSync(options);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63086520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档