Comments (3)
Thanks, I can reproduce the issue. Glob-style imports should support import attributes. This problem also affects uses of glob-style imports that don't involve plugins at all.
from esbuild.
How do you reproduce this? Here's what I tried:
require('esbuild').build({
bundle: true,
write: false,
stdin: {
contents: `
import 'foo' with { type: 'foo' }
import('bar', { with: { type: 'bar' } })
`,
},
plugins: [{
name: 'example',
setup(build) {
build.onResolve({ filter: /./ }, args => {
return { path: args.path, namespace: 'temp' }
})
build.onLoad({ filter: /./ }, args => {
console.log({ path: args.path, with: args.with })
return { contents: args.path }
})
},
}],
})
That prints this, which seems to work fine:
{ path: 'bar', with: { type: 'bar' } }
{ path: 'foo', with: { type: 'foo' } }
Marking as unactionable
because the issue reporting instructions weren't followed (no reproduction instructions were provided).
from esbuild.
Hi @evanw,
Yeah, the example to this is a bit more complex than that, but I was able to reproduce this using a example like that.
I've found out that this only happens when the path is dynamic, here is an example:
import { build } from "esbuild";
import path from "path";
import { readFileSync } from "fs";
const { outputFiles } = await build({
entryPoints: ["./code.js"],
bundle: true,
write: false,
format: "esm",
plugins: [
{
name: "demo",
setup: (build) => (
build.onResolve({ filter: /.*/ }, resolve.bind(this)),
build.onLoad({ filter: /.*/ }, load.bind(this))
),
},
],
});
function resolve(args) {
return { path: path.resolve(args.path) }
}
function load(args) {
if (args.with.type === "reader") return { contents: readFileSync(args.path, "utf8") };
return { contents: readFileSync(args.path, "utf8"), loader: "js" };
}
this is the main script, then we have the "code.js":
import "./README.md" with { type: "reader" };
const target = "example";
const test = await import(`./${target}/README.md`, {
with: { type: "reader" },
});
console.log(test);
Then for this to behave unexpectedly, I had multiple folders with a README.md file, and when the esbuild tries to parse them, it does not use the "with reader", uses the default javascript
from esbuild.
Related Issues (20)
- Post install script fails with Expected "0.21.5" but got "0.21.4" HOT 4
- Disable resolving url() in stylesheets? HOT 3
- Request to update Go dependency to fix security vulnerabilities HOT 9
- How to work with core-js ? HOT 5
- Is there a way to preserve string delimiters? HOT 5
- Error: The following dependencies are imported but could not be resolved: main.css HOT 3
- Add `conditions` as a `build.resolve` option
- circular dependency not being detected/reported HOT 3
- esm import cjs package with .node file require return a path string HOT 4
- Minified code performs differently for opening a file browser HOT 1
- esbuild-wasm Unable to set globalName,error: -- window name=__dependency__ HOT 5
- `$configDir` may not be working correctly HOT 2
- npm ci with esbuild on different systems HOT 6
- feature request - annotate function code HOT 2
- Dynamic require of "https" is not supported HOT 2
- v0.21.5 api.Build doesn't write bundle to outfile even though it's specified HOT 3
- esbuild 0.22.0 not bundling node ESM modules correctly HOT 6
- JSX option "preserve" discards whitespace HOT 3
- aws lambda build issue with esbuild v0.22.0 HOT 19
- `node:` prefix stripped unexpected under multiple `--target` options
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from esbuild.