-
Notifications
You must be signed in to change notification settings - Fork 212
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
ES Modules and "moduleResolution":"NodeNext"
in v9
#1861
Comments
Also -- the fix above should be fully backwards-compatible, so there's no problem with making that change in v9.1 instead of v9.0 if we prefer. |
In loaders.gl we run a script call #/bin/sh
echo '# Adding .js to import statements in dist folders'
find modules/*/dist -name "*.js" -exec sed -i '' "s/from '\.\(.*\)';/from '.\1.js';/" {} \;
find modules/*/dist -name "*.js" -exec sed -i '' "s/from '\.\(.*\)\.js\.js';/from '.\1';/" {} \; |
That looks like a good solution to me, and definitely less churn than changing all source imports. Potentially then, we'd put something like that in each repository? It doesn't seem like that script is running in loaders.gl now, I don't see it called anywhere, and the suffixes are missing from published types – |
It seems this affects https://www.typescriptlang.org/docs/handbook/modules/reference.html#node16-nodenext-1 |
There is a need of adding explicit Does the new ocular setup have a plugin to do this (I was assuming one of the plugins you used in the last PR did this), or do we need to add back post processing scripts? |
@donmccurdy Can this be closed with the latest ocular changes? |
Yes, the change to ocular, post-processing type definitions to include // modules/foo/dist/index.d.ts
export type { Foo } from "./foo.js"; ... does resolve this issue. 👍🏻 |
Context:
In glTF Transform I ran into some conflicts between how TypeScript bundles types, and upcoming changes to Node.js module resolution. I think Luma and Deck will hit the same problems in v9 (tested against the alpha release), for any TS project using a
tsconfig.json
like these:The only fix I'm aware of is to make sure our generated
*.d.ts
files do all file imports with.js
extensions. Perhaps it's possible to configure the build tools to do that, but personally I've found it easier to just add"moduleResolution": "nodenext",
in my own tsconfig.json, which enforces.js
extensions on all imports in source files.The text was updated successfully, but these errors were encountered: