Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot implement import attribute with { type: "external" } #3646

Closed
brillout opened this issue Feb 13, 2024 · 3 comments
Closed

Cannot implement import attribute with { type: "external" } #3646

brillout opened this issue Feb 13, 2024 · 3 comments

Comments

@brillout
Copy link

I'm trying to implement this:

// Not externalized
import { something } from 'some-package'
// Externalized
import { something } from 'some-package' with { type: "external" }

In other words:

build.onResolve({filter: /.*/}, async (args) => {
  if (args.kind !== 'import-statement') return undefined
  if (args.with === 'external') {
    return { external: true, /*...*/ }
  }
  // ...
})

That would work but the issue is that args.with is missing at onResolve(). It seems to be provided only to onLoad().

Is there a way to implement such import attribute?

@evanw
Copy link
Owner

evanw commented Feb 20, 2024

This is not currently supported, but it's something to add to esbuild in the future. I think this issue is related to at least #3384 and #3639.

@sod
Copy link
Contributor

sod commented Feb 21, 2024

Keep in mind that

build.onResolve({filter: /.*/}, async (args) => {

is a pretty punishing operation. What you ask from esbuild here is call a javascript method on every single import statement, which blocks esbuild from grinding through your project as fast as possible, as it can only pick the next file when your resolver answered. Even if this took only a millisecond to answer, on 1000 import statements you added 1 second of overhead.

@magoniac
Copy link

It might turn out to be a really handy option. As for possible performance issues I saw someone had suggested to introduce extra filtering property, smth. like { filter: /.*/, withType: "external" }.

@evanw evanw closed this as completed in 4ad11c3 May 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants