【问题标题】:esbuild not bundling filesesbuild 不捆绑文件
【发布时间】:2020-11-15 02:01:00
【问题描述】:

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

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,它只是将这些文件最小化返回给我。他们基本上有 0 个关于此的文档,并且每篇关于它的在线帖子都只是从 GitHub 复制/粘贴自述文件。我怎样才能把它捆绑起来?

【问题讨论】:

    标签: javascript bundling-and-minification esbuild


    【解决方案1】:

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

    const options = {
      entryPoints: ['index.js'],
      inject: ['file1.js', ..., 'fileN.js'],
      bundle: true,
      minify: true,
      sourcemap: true,
      outdir: path,
    };
    esbuild.buildSync(options);
    

    【讨论】:

      【解决方案2】:

      每个入口点文件都将成为一个单独的包。每个包都包含入口点文件和它导入的所有文件。通过两个入口点将创建两个单独的包。捆绑过程与文件串联不是一回事。

      如果您想要一个包中的所有文件,您可以从一个文件中引用它们并将该文件用作入口点:

      import "./file1.js"
      import "./file2.js"
      

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

      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));
      

      【讨论】:

      • 如何在不创建临时文件的情况下从命令行执行此操作,以便将其提供给 ebuild.exe
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-23
      • 2017-02-27
      • 1970-01-01
      • 2013-01-11
      相关资源
      最近更新 更多