Code Monkey home page Code Monkey logo

Comments (2)

evanw avatar evanw commented on June 11, 2024

It seems as though the metafile is output to the the cwd and not the outdir when specified on the CLI.

The metafile is written out to the path you provide. All non-absolute paths provided on the command line are relative to the current working directory, as is typical for CLIs.

So I tried just the esbuild.build command and that did not work either (so I am thinking that there is some kind of configuration issue I have?).

The documentation for metafile is here: https://esbuild.github.io/api/#metafile. Note that only the CLI writes it to a file. The JS API esbuild.build returns it as an in-memory object, as you can see in the code example in the documentation:

import * as esbuild from 'esbuild'
import fs from 'node:fs'

let result = await esbuild.build({
  entryPoints: ['app.js'],
  bundle: true,
  metafile: true,
  outfile: 'out.js',
})

fs.writeFileSync('meta.json', JSON.stringify(result.metafile))

Additionally, when using the cli, metafile expects a file name. However, when you use build/context it is just a boolean flag.
If would be great if there was consistency between the API for metafile.

The CLI doesn't return the metafile as an in-memory object because that doesn't make sense for a CLI. The JS API actually used to work as you suggested (taking a file name instead of a boolean flag, and writing it to a file instead of returning it in memory), but in practice this was really annoying to use because you typically need to inspect the metafile object immediately after doing a build call. So the JS API was changed in version 0.9.0 to return it as an in-memory object instead (see #633). This change was intentional.

from esbuild.

jd-carroll avatar jd-carroll commented on June 11, 2024

Amazing, thank you! That actually makes perfect sense. Only comment would be that that was not immediately clear from the documentation, but a closer inspection of the types would have revealed that.

from esbuild.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.